From 245ee562755008c326dc89e01b615877ca7a3d06 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Thu, 13 May 2021 20:58:01 +0200 Subject: [PATCH 01/62] Add dockerlist --- packages/dockerlist-server/package.json | 21 +++ .../src/DockerListAPI.test.ts | 93 +++++++++++++ .../dockerlist-server/src/DockerListAPI.ts | 125 ++++++++++++++++++ 3 files changed, 239 insertions(+) create mode 100644 packages/dockerlist-server/package.json create mode 100644 packages/dockerlist-server/src/DockerListAPI.test.ts create mode 100644 packages/dockerlist-server/src/DockerListAPI.ts diff --git a/packages/dockerlist-server/package.json b/packages/dockerlist-server/package.json new file mode 100644 index 0000000..b80321f --- /dev/null +++ b/packages/dockerlist-server/package.json @@ -0,0 +1,21 @@ +{ + "name": "@mdworld/homeremote-dockerlist-server", + "version": "1.0.0", + "dependencies": { + "express": "^4.17.1", + "got": "^11.8.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/mdvanes/homeremote-plugins.git" + }, + "main": "./lib/DockerListAPI.js", + "types": "./lib/DockerListAPI.d.ts", + "license": "MIT", + "scripts": { + "build": "tsc src/DockerListAPI.ts --outDir lib -d" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/dockerlist-server/src/DockerListAPI.test.ts b/packages/dockerlist-server/src/DockerListAPI.test.ts new file mode 100644 index 0000000..7df9853 --- /dev/null +++ b/packages/dockerlist-server/src/DockerListAPI.test.ts @@ -0,0 +1,93 @@ +import { getDockerList, ChannelName } from "./DockerListAPI"; +import * as GotModule from "got"; +import { CancelableRequest } from "got"; + +// jest.mock("got"); + +// const gotSpy = jest.spyOn(GotModule, "default"); + +// const SomeArtist = "Some Artist"; +// const SomeTitle = "Some Title"; +// const SomeEndDateTime = "Some End Date Time"; +// const SomePresenters = "Some Presenters"; +// const SomeImageUrl = "Some Image Url"; + +// const mockBaseResponse = { +// artist: SomeArtist, +// title: SomeTitle, +// enddatetime: SomeEndDateTime, +// }; + +// const createMockRequest = ( +// additional: Record +// ): CancelableRequest => { +// const jsonResponse = { +// data: [{ ...mockBaseResponse, ...additional }], +// }; +// return { +// json: () => Promise.resolve(jsonResponse), +// } as CancelableRequest; +// }; + +describe("DockerListAPI", () => { + // beforeEach(() => { + // gotSpy.mockReset(); + // gotSpy.mockReturnValue( + // createMockRequest({ + // presenters: SomePresenters, + // image: SomeImageUrl, + // }) + // ); + // }); + + it("??", async () => { + const response = await getDockerList(ChannelName.RADIO2); + console.log(response); + // expect(gotSpy).toHaveBeenCalledWith( + // "https://www.nporadio2.nl/api/tracks" + // ); + // expect(response).toEqual({ + // artist: SomeArtist, + // title: SomeTitle, + // last_updated: SomeEndDateTime, + // songImageUrl: SomeImageUrl, + // name: `${SomeTitle} / ${SomePresenters}`, + // imageUrl: "", + // }); + }); + + // it("can respond when fields are not defined", async () => { + // gotSpy.mockReturnValue(createMockRequest({})); + // const response = await getNowPlaying(ChannelName.RADIO2); + // expect(gotSpy).toHaveBeenCalledWith( + // "https://www.nporadio2.nl/api/tracks" + // ); + // expect(response).toEqual( + // expect.objectContaining({ + // name: SomeTitle, + // imageUrl: "", + // }) + // ); + // }); + + // it("retrieves data from Radio3 endpoint", async () => { + // await getNowPlaying(ChannelName.RADIO3); + // expect(gotSpy).toHaveBeenCalledWith("https://www.npo3fm.nl/api/tracks"); + // }); + + // it("can respond when fields are not defined for Radio 3", async () => { + // gotSpy.mockReturnValue(createMockRequest({})); + // const response = await getNowPlaying(ChannelName.RADIO3); + // expect(response).toEqual( + // expect.objectContaining({ + // name: SomeTitle, + // imageUrl: "", + // }) + // ); + // }); + + // it("ignores invalid channels", async () => { + // const response = await getNowPlaying(("" as unknown) as ChannelName); + // expect(response).toBeUndefined(); + // }); +}); diff --git a/packages/dockerlist-server/src/DockerListAPI.ts b/packages/dockerlist-server/src/DockerListAPI.ts new file mode 100644 index 0000000..523d260 --- /dev/null +++ b/packages/dockerlist-server/src/DockerListAPI.ts @@ -0,0 +1,125 @@ +import got from "got"; + +export interface NowPlayingResponse { + artist: string; + title: string; + last_updated: string; + songImageUrl: string; + name: string; + imageUrl: string; +} + +export enum ChannelName { + RADIO2, + RADIO3, +} + +interface TracksResponse { + data: [ + { artist: string; title: string; image?: string; enddatetime: string } + ]; +} + +interface BroadcastResponse { + data: [{ title: string; presenters?: string; image_url?: string }]; +} + +interface DockerContainerInfo { + Id: string; + Names: string[]; + State: string; + Status: string; +} + +// TODO add health +type DockerListResponse = DockerContainerInfo[]; + +// Export for use by other apps +export const getDockerList = async ( + channelName: ChannelName +): Promise => { + // docker ps -as --format='{{json .}}' (see system guides for more commands) + // Using Docker Engine API: curl --unix-socket /var/run/docker.sock http:/v1.24/containers/json?all=true + + const result = await got("http:/v1.41/containers/json?all=true", { + socketPath: "/var/run/docker.sock", + }).json(); + + // console.log(result); + + console.log( + result.map((x) => { + return `name: ${x.Names.join(" ").padEnd( + 22, + " " + )} | State: ${x.State.padEnd( + 10, + " " + )} | Status: ${x.Status.padEnd(25, " ")} | Id: ${x.Id.padEnd( + 25, + " " + )}`; + }) + ); + + // Start a container: + // https://docs.docker.com/engine/api/sdk/examples/ + // curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/1c6594faf5/start + // TODO this works: + // const result1 = await got( + // "http://localhost/v1.41/containers/42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe/start", + // { + // method: "POST", + // socketPath: "/var/run/docker.sock", + // } + // ).json(); + // console.log(result1); + + // OLD: + // if (channelName === ChannelName.RADIO2) { + // const nowonairResponse = await got( + // "https://www.nporadio2.nl/api/tracks" + // ).json(); + // const { artist, title, image, enddatetime } = nowonairResponse.data[0]; + // const broadcastResponse = await got( + // "https://www.nporadio2.nl/api/broadcasts" + // ).json(); + // const { + // title: name, + // presenters, + // image_url, + // } = broadcastResponse.data[0]; + // const presentersSuffix = presenters ? ` / ${presenters}` : ""; + // return { + // artist, + // title, + // last_updated: enddatetime, + // songImageUrl: image ?? "", + // name: `${name}${presentersSuffix}`, + // imageUrl: image_url ?? "", + // }; + // } + // if (channelName === ChannelName.RADIO3) { + // const nowonairResponse = await got( + // "https://www.npo3fm.nl/api/tracks" + // ).json(); + // const { artist, title, image, enddatetime } = nowonairResponse.data[0]; + // const broadcastResponse = await got( + // "https://www.npo3fm.nl/api/broadcasts" + // ).json(); + // const { + // title: name, + // presenters, + // image_url, + // } = broadcastResponse.data[0]; + // const presentersSuffix = presenters ? ` / ${presenters}` : ""; + // return { + // artist, + // title, + // last_updated: enddatetime, + // songImageUrl: image ?? "", + // name: `${name}${presentersSuffix}`, + // imageUrl: image_url ?? "", + // }; + // } +}; From 065ee1e2349a88f0dc7f58956ffc3a456c6e90b5 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Thu, 13 May 2021 21:11:46 +0200 Subject: [PATCH 02/62] Add startContainer and stopContainer --- .../src/DockerListAPI.test.ts | 54 ++++-- .../dockerlist-server/src/DockerListAPI.ts | 166 ++++++++---------- 2 files changed, 113 insertions(+), 107 deletions(-) diff --git a/packages/dockerlist-server/src/DockerListAPI.test.ts b/packages/dockerlist-server/src/DockerListAPI.test.ts index 7df9853..93dad6f 100644 --- a/packages/dockerlist-server/src/DockerListAPI.test.ts +++ b/packages/dockerlist-server/src/DockerListAPI.test.ts @@ -1,4 +1,4 @@ -import { getDockerList, ChannelName } from "./DockerListAPI"; +import { getDockerList, startContainer, stopContainer } from "./DockerListAPI"; import * as GotModule from "got"; import { CancelableRequest } from "got"; @@ -40,20 +40,50 @@ describe("DockerListAPI", () => { // ); // }); - it("??", async () => { - const response = await getDockerList(ChannelName.RADIO2); - console.log(response); + it("lists all containers", async () => { + const response = await getDockerList(); + // console.log(response); // expect(gotSpy).toHaveBeenCalledWith( // "https://www.nporadio2.nl/api/tracks" // ); - // expect(response).toEqual({ - // artist: SomeArtist, - // title: SomeTitle, - // last_updated: SomeEndDateTime, - // songImageUrl: SomeImageUrl, - // name: `${SomeTitle} / ${SomePresenters}`, - // imageUrl: "", - // }); + console.log( + response.containers.map((x) => { + return `name: ${x.Names.join(" ").padEnd( + 22, + " " + )} | State: ${x.State.padEnd( + 10, + " " + )} | Status: ${x.Status.padEnd(25, " ")} | Id: ${x.Id.padEnd( + 25, + " " + )}`; + }) + ); + + expect(response).toEqual({ + // artist: SomeArtist, + // title: SomeTitle, + // last_updated: SomeEndDateTime, + // songImageUrl: SomeImageUrl, + // name: `${SomeTitle} / ${SomePresenters}`, + // imageUrl: "", + }); + }); + + // TODO this already works, but needs a mock + it("starts a container", async () => { + // 42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe + // const response = await startContainer( + // "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" + // ); + }); + + // TODO this already works, but needs a mock + it("stops a container", async () => { + // const response = await stopContainer( + // "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" + // ); }); // it("can respond when fields are not defined", async () => { diff --git a/packages/dockerlist-server/src/DockerListAPI.ts b/packages/dockerlist-server/src/DockerListAPI.ts index 523d260..ae67e8f 100644 --- a/packages/dockerlist-server/src/DockerListAPI.ts +++ b/packages/dockerlist-server/src/DockerListAPI.ts @@ -1,28 +1,28 @@ import got from "got"; -export interface NowPlayingResponse { - artist: string; - title: string; - last_updated: string; - songImageUrl: string; - name: string; - imageUrl: string; -} +// export interface NowPlayingResponse { +// artist: string; +// title: string; +// last_updated: string; +// songImageUrl: string; +// name: string; +// imageUrl: string; +// } -export enum ChannelName { - RADIO2, - RADIO3, -} +// export enum ChannelName { +// RADIO2, +// RADIO3, +// } -interface TracksResponse { - data: [ - { artist: string; title: string; image?: string; enddatetime: string } - ]; -} +// interface TracksResponse { +// data: [ +// { artist: string; title: string; image?: string; enddatetime: string } +// ]; +// } -interface BroadcastResponse { - data: [{ title: string; presenters?: string; image_url?: string }]; -} +// interface BroadcastResponse { +// data: [{ title: string; presenters?: string; image_url?: string }]; +// } interface DockerContainerInfo { Id: string; @@ -32,94 +32,70 @@ interface DockerContainerInfo { } // TODO add health -type DockerListResponse = DockerContainerInfo[]; +type AllResponse = DockerContainerInfo[]; + +export interface DockerListResponse { + status: "received"; + containers?: DockerContainerInfo[]; +} + +const pickAndMapContainerProps = ({ + Id, + Names, + State, + Status, +}: DockerContainerInfo): DockerContainerInfo => ({ Id, Names, State, Status }); // Export for use by other apps -export const getDockerList = async ( - channelName: ChannelName -): Promise => { +export const getDockerList = async (): Promise => { // docker ps -as --format='{{json .}}' (see system guides for more commands) // Using Docker Engine API: curl --unix-socket /var/run/docker.sock http:/v1.24/containers/json?all=true const result = await got("http:/v1.41/containers/json?all=true", { socketPath: "/var/run/docker.sock", - }).json(); + }).json(); // console.log(result); - console.log( - result.map((x) => { - return `name: ${x.Names.join(" ").padEnd( - 22, - " " - )} | State: ${x.State.padEnd( - 10, - " " - )} | Status: ${x.Status.padEnd(25, " ")} | Id: ${x.Id.padEnd( - 25, - " " - )}`; - }) - ); + return { + status: "received", + containers: result.map(pickAndMapContainerProps), + }; +}; +export const startContainer = async ( + containerId: string +): Promise => { // Start a container: // https://docs.docker.com/engine/api/sdk/examples/ // curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/1c6594faf5/start - // TODO this works: - // const result1 = await got( - // "http://localhost/v1.41/containers/42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe/start", - // { - // method: "POST", - // socketPath: "/var/run/docker.sock", - // } - // ).json(); - // console.log(result1); + // this works: + // 42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe + const result = await got( + `http://localhost/v1.41/containers/${containerId}/start`, + { + method: "POST", + socketPath: "/var/run/docker.sock", + } + ).json(); + console.log(result); + return { + status: "received", + }; +}; - // OLD: - // if (channelName === ChannelName.RADIO2) { - // const nowonairResponse = await got( - // "https://www.nporadio2.nl/api/tracks" - // ).json(); - // const { artist, title, image, enddatetime } = nowonairResponse.data[0]; - // const broadcastResponse = await got( - // "https://www.nporadio2.nl/api/broadcasts" - // ).json(); - // const { - // title: name, - // presenters, - // image_url, - // } = broadcastResponse.data[0]; - // const presentersSuffix = presenters ? ` / ${presenters}` : ""; - // return { - // artist, - // title, - // last_updated: enddatetime, - // songImageUrl: image ?? "", - // name: `${name}${presentersSuffix}`, - // imageUrl: image_url ?? "", - // }; - // } - // if (channelName === ChannelName.RADIO3) { - // const nowonairResponse = await got( - // "https://www.npo3fm.nl/api/tracks" - // ).json(); - // const { artist, title, image, enddatetime } = nowonairResponse.data[0]; - // const broadcastResponse = await got( - // "https://www.npo3fm.nl/api/broadcasts" - // ).json(); - // const { - // title: name, - // presenters, - // image_url, - // } = broadcastResponse.data[0]; - // const presentersSuffix = presenters ? ` / ${presenters}` : ""; - // return { - // artist, - // title, - // last_updated: enddatetime, - // songImageUrl: image ?? "", - // name: `${name}${presentersSuffix}`, - // imageUrl: image_url ?? "", - // }; - // } +export const stopContainer = async ( + containerId: string +): Promise => { + const result = await got( + `http://localhost/v1.41/containers/${containerId}/stop`, + { + method: "POST", + socketPath: "/var/run/docker.sock", + } + ).json(); + console.log(result); + return { + status: "received", + }; }; From 691254151bb0bc267bd02fb4ce45cd402cc44271 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Thu, 13 May 2021 21:22:09 +0200 Subject: [PATCH 03/62] Add Dockerlist intial files --- packages/dockerlist-client/.npmignore | 2 + packages/dockerlist-client/README.md | 18 ++++ packages/dockerlist-client/package.json | 89 +++++++++++++++++++ .../src/DockerList.stories.tsx | 38 ++++++++ packages/dockerlist-client/src/DockerList.tsx | 46 ++++++++++ 5 files changed, 193 insertions(+) create mode 100644 packages/dockerlist-client/.npmignore create mode 100644 packages/dockerlist-client/README.md create mode 100644 packages/dockerlist-client/package.json create mode 100644 packages/dockerlist-client/src/DockerList.stories.tsx create mode 100644 packages/dockerlist-client/src/DockerList.tsx diff --git a/packages/dockerlist-client/.npmignore b/packages/dockerlist-client/.npmignore new file mode 100644 index 0000000..44b7f15 --- /dev/null +++ b/packages/dockerlist-client/.npmignore @@ -0,0 +1,2 @@ +src +stories \ No newline at end of file diff --git a/packages/dockerlist-client/README.md b/packages/dockerlist-client/README.md new file mode 100644 index 0000000..62aecb1 --- /dev/null +++ b/packages/dockerlist-client/README.md @@ -0,0 +1,18 @@ +# homeremote-stream-player + +Show a list of docker containers and start or stop them + +See https://github.com/mdvanes/homeremote/issues/9 + +## How this project was set up + +- nvm use 15 +- copied package.json from other client package in the monorepo + +## Running + +- dev: `yarn storybook` and in second terminal, cwd to packages/server and run `yarn start` + +## TODO + +- Add Reason diff --git a/packages/dockerlist-client/package.json b/packages/dockerlist-client/package.json new file mode 100644 index 0000000..1817943 --- /dev/null +++ b/packages/dockerlist-client/package.json @@ -0,0 +1,89 @@ +{ + "name": "@mdworld/homeremote-dockerlist", + "version": "1.6.3", + "main": "./lib/DockerList.js", + "types": "./lib/DockerList.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/mdvanes/homeremote-plugins.git" + }, + "scripts": { + "build": "webpack-cli --config webpack.config.prod.js" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "jest": { + "roots": [ + "/src" + ], + "collectCoverageFrom": [ + "src/**/*.{js,jsx,ts,tsx}", + "!src/**/*.d.ts" + ], + "setupFiles": [ + "react-app-polyfill/jsdom" + ], + "setupFilesAfterEnv": [ + "/src/setupTests.js" + ], + "testMatch": [ + "/src/**/__tests__/**/*.{js,jsx,ts,tsx}", + "/src/**/*.{spec,test}.{js,jsx,ts,tsx}" + ], + "testEnvironment": "jest-environment-jsdom-fourteen", + "transform": { + "^.+\\.(js|jsx|ts|tsx)$": "/node_modules/babel-jest", + "^.+\\.css$": "/config/jest/cssTransform.js", + "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "/config/jest/fileTransform.js" + }, + "transformIgnorePatterns": [ + "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$", + "^.+\\.module\\.(css|sass|scss)$" + ], + "modulePaths": [ + "/usr/lib/nodejs", + "/usr/lib/node_modules", + "/usr/share/javascript" + ], + "moduleNameMapper": { + "^react-native$": "react-native-web", + "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy" + }, + "moduleFileExtensions": [ + "web.js", + "js", + "web.ts", + "ts", + "web.tsx", + "tsx", + "json", + "web.jsx", + "jsx", + "node" + ], + "watchPlugins": [ + "jest-watch-typeahead/filename", + "jest-watch-typeahead/testname" + ] + }, + "babel": { + "presets": [ + "react-app" + ] + }, + "license": "MIT", + "gitHead": "1c79d816ed2921cfe7c8a6a64fd84a339984f774", + "publishConfig": { + "access": "public" + } +} diff --git a/packages/dockerlist-client/src/DockerList.stories.tsx b/packages/dockerlist-client/src/DockerList.stories.tsx new file mode 100644 index 0000000..d7ca2fb --- /dev/null +++ b/packages/dockerlist-client/src/DockerList.stories.tsx @@ -0,0 +1,38 @@ +import React, { ReactNode } from "react"; +import DockerList from "./DockerList"; +import packageJson from "../package.json"; +import { BreakpointWrapper } from "../../../helpers"; + +export default { + title: `Reason/DockerList v${packageJson.version}`, + component: DockerList, +}; + +const url = + process.env.STORYBOOK_MODE === "PROD" + ? `https://${window.location.host}/${window.top.location.pathname}` + : "http://localhost:3100"; + +export const Default = ({ width }: { width: number }): ReactNode => ( + + + +); + +// // See https://github.com/storybookjs/storybook/blob/next/addons/controls/README.md#knobs-to-manually-configured-args +// Default.args = { width: 600 }; +// Default.argTypes = { +// width: { control: { type: "range", min: 375, max: 775, step: "100" } }, +// }; + +// export const WithSquarePicture = (): ReactNode => ( +// +// +// +// ); + +// export const WithLandscapePicture = (): ReactNode => ( +// +// +// +// ); diff --git a/packages/dockerlist-client/src/DockerList.tsx b/packages/dockerlist-client/src/DockerList.tsx new file mode 100644 index 0000000..5689c4b --- /dev/null +++ b/packages/dockerlist-client/src/DockerList.tsx @@ -0,0 +1,46 @@ +import React, { useRef } from "react"; +// import "./StreamPlayer.css"; +// import Elm from "react-elm-components"; +// import Audio from "./Elm/Audio.elm"; + +// const setupPorts = (containerRef) => (ports) => { +// ports.setPlayPauseStatusPort.subscribe((newStatus) => { +// // NOTE: findDomNode has been deprecated +// const audioElem = containerRef.current.children[0].querySelector( +// "audio" +// ); +// // Wait to let the audio elem be updated with a new cachebusting timestamp in Audio.elm `Cmd.batch [ Task.perform UpdateTimestamp Time.now, Cmd.map MsgControls controlsCmds ]` +// setTimeout(() => { +// if (newStatus === "Play") { +// audioElem.play(); +// } else { +// audioElem.pause(); +// } +// }, 50); +// }); +// }; + +const DockerList = ({ url }) => { + const containerRef = useRef(null); + return ( +
+
+ Docker List +
+ + {/* */} +
+ ); +}; + +export default DockerList; From 8dd48ef398b78c2fb201047765cbc97236a8a282 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 14 May 2021 08:17:15 +0200 Subject: [PATCH 04/62] Add rescript --- .gitignore | 1 + packages/dockerlist-client/.merlin | 12 ++ packages/dockerlist-client/README.md | 20 +- packages/dockerlist-client/bsconfig.json | 19 ++ packages/dockerlist-client/package.json | 178 +++++++++--------- .../src/DockerList.stories.tsx | 10 +- packages/dockerlist-client/src/Test.bs.js | 22 +++ packages/dockerlist-client/src/Test.res | 15 ++ .../dockerlist-client/webpack.config.prod.js | 49 +++++ yarn.lock | 10 + 10 files changed, 247 insertions(+), 89 deletions(-) create mode 100644 packages/dockerlist-client/.merlin create mode 100644 packages/dockerlist-client/bsconfig.json create mode 100644 packages/dockerlist-client/src/Test.bs.js create mode 100644 packages/dockerlist-client/src/Test.res create mode 100644 packages/dockerlist-client/webpack.config.prod.js diff --git a/.gitignore b/.gitignore index 607ea02..09593de 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ lerna-debug.log* # Dependency directories /node_modules/ +/packages/*/node_modules/.bin # dotenv environment variables file .env diff --git a/packages/dockerlist-client/.merlin b/packages/dockerlist-client/.merlin new file mode 100644 index 0000000..e0eed72 --- /dev/null +++ b/packages/dockerlist-client/.merlin @@ -0,0 +1,12 @@ +####{BSB GENERATED: NO EDIT +B lib/bs +FLG -open MdworldHomeremoteDockerlist +FLG -ppx '/home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/rescript/linux/bsc.exe -as-ppx -bs-jsx 3' +S /home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/rescript/lib/ocaml +B /home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/rescript/lib/ocaml +FLG -w +a-4-9-20-40-41-42-50-61-102 +S /home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/@rescript/react/lib/ocaml +B /home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/@rescript/react/lib/ocaml +S src +B lib/bs/src +####BSB GENERATED: NO EDIT} diff --git a/packages/dockerlist-client/README.md b/packages/dockerlist-client/README.md index 62aecb1..ac13c32 100644 --- a/packages/dockerlist-client/README.md +++ b/packages/dockerlist-client/README.md @@ -8,6 +8,20 @@ See https://github.com/mdvanes/homeremote/issues/9 - nvm use 15 - copied package.json from other client package in the monorepo +- `yarn lerna add rescript -D --scope=@mdworld/homeremote-dockerlist` +- add bsconfig.json following https://rescript-lang.org/docs/manual/latest/installation#integrate-into-an-existing-js-project +- add `"re:build": "rescript", "re:start": "rescript build -w"` to package.json/scripts +- create a file /packages/dockerlist-client/src/Test.res with the button example from https://rescript-lang.org/try +- in /packages/dockerlist-client run `yarn re:build` +- now get an error that is probably caused because rescript-react is not yet installed, see https://rescript-lang.org/docs/react/latest/introduction +- compilation indeed does work, when Test.res only contains `Js.log("Hello, World!")` +- Add rescript-react: `yarn lerna add @rescript/react --scope=@mdworld/homeremote-dockerlist` +- Add { + "reason": { "react-jsx": 3 }, + "bs-dependencies": ["@rescript/react"] +} in bsconfig.json +- in /packages/dockerlist-client run `yarn re:build` + ## Running @@ -15,4 +29,8 @@ See https://github.com/mdvanes/homeremote/issues/9 ## TODO -- Add Reason +- Add Reason/Rescript +- Clean up old Elm deps from package.json +- Builders (like webpack) are discouraged: https://rescript-lang.org/docs/manual/latest/interop-with-js-build-systems +- Snowpack build to `dist` dir like in https://github.com/jihchi/rescript-react-realworld-example-app/blob/main/package.json https://www.snowpack.dev/ +- Storybook like in https://raw.githubusercontent.com/elfsternberg/doc-rescript-with-storybook/main/src/stories/02_Noncard.stories.mdx \ No newline at end of file diff --git a/packages/dockerlist-client/bsconfig.json b/packages/dockerlist-client/bsconfig.json new file mode 100644 index 0000000..20f2575 --- /dev/null +++ b/packages/dockerlist-client/bsconfig.json @@ -0,0 +1,19 @@ +{ + "name": "@mdworld/homeremote-dockerlist", + "sources": [ + { + "dir": "src", + "subdirs": true + } + ], + "package-specs": [ + { + "module": "es6", + "in-source": true + } + ], + "suffix": ".bs.js", + "reason": { "react-jsx": 3 }, + "bs-dependencies": ["@rescript/react"], + "namespace": true +} diff --git a/packages/dockerlist-client/package.json b/packages/dockerlist-client/package.json index 1817943..7e6e8be 100644 --- a/packages/dockerlist-client/package.json +++ b/packages/dockerlist-client/package.json @@ -1,89 +1,97 @@ { - "name": "@mdworld/homeremote-dockerlist", - "version": "1.6.3", - "main": "./lib/DockerList.js", - "types": "./lib/DockerList.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/mdvanes/homeremote-plugins.git" - }, - "scripts": { - "build": "webpack-cli --config webpack.config.prod.js" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "jest": { - "roots": [ - "/src" - ], - "collectCoverageFrom": [ - "src/**/*.{js,jsx,ts,tsx}", - "!src/**/*.d.ts" - ], - "setupFiles": [ - "react-app-polyfill/jsdom" - ], - "setupFilesAfterEnv": [ - "/src/setupTests.js" - ], - "testMatch": [ - "/src/**/__tests__/**/*.{js,jsx,ts,tsx}", - "/src/**/*.{spec,test}.{js,jsx,ts,tsx}" - ], - "testEnvironment": "jest-environment-jsdom-fourteen", - "transform": { - "^.+\\.(js|jsx|ts|tsx)$": "/node_modules/babel-jest", - "^.+\\.css$": "/config/jest/cssTransform.js", - "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "/config/jest/fileTransform.js" + "name": "@mdworld/homeremote-dockerlist", + "version": "1.6.3", + "main": "./lib/DockerList.js", + "types": "./lib/DockerList.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/mdvanes/homeremote-plugins.git" }, - "transformIgnorePatterns": [ - "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$", - "^.+\\.module\\.(css|sass|scss)$" - ], - "modulePaths": [ - "/usr/lib/nodejs", - "/usr/lib/node_modules", - "/usr/share/javascript" - ], - "moduleNameMapper": { - "^react-native$": "react-native-web", - "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy" + "scripts": { + "build": "webpack-cli --config webpack.config.prod.js", + "re:build": "rescript", + "re:start": "rescript build -w" }, - "moduleFileExtensions": [ - "web.js", - "js", - "web.ts", - "ts", - "web.tsx", - "tsx", - "json", - "web.jsx", - "jsx", - "node" - ], - "watchPlugins": [ - "jest-watch-typeahead/filename", - "jest-watch-typeahead/testname" - ] - }, - "babel": { - "presets": [ - "react-app" - ] - }, - "license": "MIT", - "gitHead": "1c79d816ed2921cfe7c8a6a64fd84a339984f774", - "publishConfig": { - "access": "public" - } + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "jest": { + "roots": [ + "/src" + ], + "collectCoverageFrom": [ + "src/**/*.{js,jsx,ts,tsx}", + "!src/**/*.d.ts" + ], + "setupFiles": [ + "react-app-polyfill/jsdom" + ], + "setupFilesAfterEnv": [ + "/src/setupTests.js" + ], + "testMatch": [ + "/src/**/__tests__/**/*.{js,jsx,ts,tsx}", + "/src/**/*.{spec,test}.{js,jsx,ts,tsx}" + ], + "testEnvironment": "jest-environment-jsdom-fourteen", + "transform": { + "^.+\\.(js|jsx|ts|tsx)$": "/node_modules/babel-jest", + "^.+\\.css$": "/config/jest/cssTransform.js", + "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "/config/jest/fileTransform.js" + }, + "transformIgnorePatterns": [ + "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$", + "^.+\\.module\\.(css|sass|scss)$" + ], + "modulePaths": [ + "/usr/lib/nodejs", + "/usr/lib/node_modules", + "/usr/share/javascript" + ], + "moduleNameMapper": { + "^react-native$": "react-native-web", + "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy" + }, + "moduleFileExtensions": [ + "web.js", + "js", + "web.ts", + "ts", + "web.tsx", + "tsx", + "json", + "web.jsx", + "jsx", + "node" + ], + "watchPlugins": [ + "jest-watch-typeahead/filename", + "jest-watch-typeahead/testname" + ] + }, + "babel": { + "presets": [ + "react-app" + ] + }, + "license": "MIT", + "gitHead": "1c79d816ed2921cfe7c8a6a64fd84a339984f774", + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "rescript": "^9.1.2" + }, + "dependencies": { + "@rescript/react": "^0.10.3" + } } diff --git a/packages/dockerlist-client/src/DockerList.stories.tsx b/packages/dockerlist-client/src/DockerList.stories.tsx index d7ca2fb..6b10ea8 100644 --- a/packages/dockerlist-client/src/DockerList.stories.tsx +++ b/packages/dockerlist-client/src/DockerList.stories.tsx @@ -1,10 +1,13 @@ import React, { ReactNode } from "react"; -import DockerList from "./DockerList"; +// import DockerList from "./DockerList"; +import { DockerListMod } from "./Test.bs"; import packageJson from "../package.json"; import { BreakpointWrapper } from "../../../helpers"; +const DockerList = DockerListMod.make; + export default { - title: `Reason/DockerList v${packageJson.version}`, + title: `ReScript/DockerList v${packageJson.version}`, component: DockerList, }; @@ -15,7 +18,8 @@ const url = export const Default = ({ width }: { width: number }): ReactNode => ( - + {/* */} + ); diff --git a/packages/dockerlist-client/src/Test.bs.js b/packages/dockerlist-client/src/Test.bs.js new file mode 100644 index 0000000..2dbefdc --- /dev/null +++ b/packages/dockerlist-client/src/Test.bs.js @@ -0,0 +1,22 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + +import * as React from "react"; + +function Test$DockerListMod(Props) { + var count = Props.count; + var times = count !== 1 ? ( + count !== 2 ? String(count) + " times" : "twice" + ) : "once"; + var msg = "Click me " + times; + return React.createElement("button", undefined, msg); +} + +var DockerListMod = { + make: Test$DockerListMod +}; + +export { + DockerListMod , + +} +/* react Not a pure module */ diff --git a/packages/dockerlist-client/src/Test.res b/packages/dockerlist-client/src/Test.res new file mode 100644 index 0000000..dd604b1 --- /dev/null +++ b/packages/dockerlist-client/src/Test.res @@ -0,0 +1,15 @@ +module DockerListMod = { + @react.component + let make = (~count: int) => { + let times = switch count { + | 1 => "once" + | 2 => "twice" + | n => Belt.Int.toString(n) ++ " times" + } + let msg = "Click me " ++ times + + + } +} + +// Js.log("Hello, World!") \ No newline at end of file diff --git a/packages/dockerlist-client/webpack.config.prod.js b/packages/dockerlist-client/webpack.config.prod.js new file mode 100644 index 0000000..69804e6 --- /dev/null +++ b/packages/dockerlist-client/webpack.config.prod.js @@ -0,0 +1,49 @@ +const path = require("path"); +// const elmloader = require("../../webpack.elmloader.js"); +const TerserPlugin = require("terser-webpack-plugin"); + +process.env.BABEL_ENV = "production"; +process.env.NODE_ENV = "production"; + +module.exports = { + mode: "production", + entry: "./src/DockerList.tsx", + output: { + path: path.resolve(__dirname, "lib"), + filename: "DockerList.js", + libraryTarget: "commonjs2", + }, + module: { + rules: [ + { + test: /\.(ts|tsx)$/, + include: path.resolve(__dirname, "src"), + exclude: /(node_modules|bower_components|build)/, + use: { + loader: "babel-loader", + options: { + presets: ["@babel/preset-env", "@babel/preset-react"], + }, + }, + }, + { test: /\.css$/, loader: "style-loader!css-loader" }, + { test: /\.svg$/, loader: "url-loader" }, + // loader for elm files + // elmloader, + ], + }, + externals: { + react: "commonjs react", + }, + optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + terserOptions: { + // Default is to write cache dirs in /packages/*/node_modules/.cache + nameCache: {}, + }, + }), + ], + }, +}; diff --git a/yarn.lock b/yarn.lock index 2f8f99e..47a25d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3133,6 +3133,11 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" +"@rescript/react@^0.10.3": + version "0.10.3" + resolved "https://registry.yarnpkg.com/@rescript/react/-/react-0.10.3.tgz#a2a8bed6b017940ec26c2154764b350f50348889" + integrity sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw== + "@sindresorhus/is@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" @@ -16727,6 +16732,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +rescript@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/rescript/-/rescript-9.1.2.tgz#a81f8a735f1a7006233bfc72eb081ca7182a0d79" + integrity sha512-4wHvTDv3nyYnAPJHcg1RGG8z7u3HDiBf6RN3P/dITDv859Qo35aKOzJWQtfBzbAs0EKNafLqei3TnUqiAv6BwQ== + resolve-alpn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" From b3efdb4b58f831a50e6961d66de39c66cdf55cf4 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 14 May 2021 08:22:59 +0200 Subject: [PATCH 05/62] Add css --- packages/dockerlist-client/README.md | 2 +- packages/dockerlist-client/src/DockerList.module.css | 3 +++ packages/dockerlist-client/src/DockerList.stories.tsx | 2 +- packages/dockerlist-client/src/Test.bs.js | 10 ++++++++-- packages/dockerlist-client/src/Test.res | 6 +++++- 5 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 packages/dockerlist-client/src/DockerList.module.css diff --git a/packages/dockerlist-client/README.md b/packages/dockerlist-client/README.md index ac13c32..35559f4 100644 --- a/packages/dockerlist-client/README.md +++ b/packages/dockerlist-client/README.md @@ -21,7 +21,7 @@ See https://github.com/mdvanes/homeremote/issues/9 "bs-dependencies": ["@rescript/react"] } in bsconfig.json - in /packages/dockerlist-client run `yarn re:build` - +- TODO For now workflow is: start storybook and in other terminal in /packages/dockerlist-client run `yarn re:start` ## Running diff --git a/packages/dockerlist-client/src/DockerList.module.css b/packages/dockerlist-client/src/DockerList.module.css new file mode 100644 index 0000000..3d473d9 --- /dev/null +++ b/packages/dockerlist-client/src/DockerList.module.css @@ -0,0 +1,3 @@ +.root { + color: red; +} diff --git a/packages/dockerlist-client/src/DockerList.stories.tsx b/packages/dockerlist-client/src/DockerList.stories.tsx index 6b10ea8..d7cf00b 100644 --- a/packages/dockerlist-client/src/DockerList.stories.tsx +++ b/packages/dockerlist-client/src/DockerList.stories.tsx @@ -19,7 +19,7 @@ const url = export const Default = ({ width }: { width: number }): ReactNode => ( {/* */} - + ); diff --git a/packages/dockerlist-client/src/Test.bs.js b/packages/dockerlist-client/src/Test.bs.js index 2dbefdc..6b667f8 100644 --- a/packages/dockerlist-client/src/Test.bs.js +++ b/packages/dockerlist-client/src/Test.bs.js @@ -1,6 +1,9 @@ // Generated by ReScript, PLEASE EDIT WITH CARE import * as React from "react"; +import * as DockerListModuleCss from "./DockerList.module.css"; + +var styles = DockerListModuleCss; function Test$DockerListMod(Props) { var count = Props.count; @@ -8,7 +11,9 @@ function Test$DockerListMod(Props) { count !== 2 ? String(count) + " times" : "twice" ) : "once"; var msg = "Click me " + times; - return React.createElement("button", undefined, msg); + return React.createElement("button", { + className: styles.root + }, msg); } var DockerListMod = { @@ -16,7 +21,8 @@ var DockerListMod = { }; export { + styles , DockerListMod , } -/* react Not a pure module */ +/* styles Not a pure module */ diff --git a/packages/dockerlist-client/src/Test.res b/packages/dockerlist-client/src/Test.res index dd604b1..6d905ee 100644 --- a/packages/dockerlist-client/src/Test.res +++ b/packages/dockerlist-client/src/Test.res @@ -1,3 +1,7 @@ +// {..} means we are handling a JS object with an unknown +// set of attributes +@module external styles: {..} = "./DockerList.module.css" + module DockerListMod = { @react.component let make = (~count: int) => { @@ -8,7 +12,7 @@ module DockerListMod = { } let msg = "Click me " ++ times - + } } From 2159d03b83c57189fb0cc047897b4a03b7dbc47f Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 14 May 2021 08:28:10 +0200 Subject: [PATCH 06/62] Rename root file --- packages/dockerlist-client/.bsb.lock | 1 + .../src/{Test.bs.js => DockerList.bs.js} | 15 ++++-- .../src/{Test.res => DockerList.res} | 12 ++++- .../src/DockerList.stories.tsx | 12 ++--- packages/dockerlist-client/src/DockerList.tsx | 46 ------------------- 5 files changed, 26 insertions(+), 60 deletions(-) create mode 100644 packages/dockerlist-client/.bsb.lock rename packages/dockerlist-client/src/{Test.bs.js => DockerList.bs.js} (55%) rename packages/dockerlist-client/src/{Test.res => DockerList.res} (55%) delete mode 100644 packages/dockerlist-client/src/DockerList.tsx diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock new file mode 100644 index 0000000..4bde911 --- /dev/null +++ b/packages/dockerlist-client/.bsb.lock @@ -0,0 +1 @@ +91097 \ No newline at end of file diff --git a/packages/dockerlist-client/src/Test.bs.js b/packages/dockerlist-client/src/DockerList.bs.js similarity index 55% rename from packages/dockerlist-client/src/Test.bs.js rename to packages/dockerlist-client/src/DockerList.bs.js index 6b667f8..2b205ac 100644 --- a/packages/dockerlist-client/src/Test.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -5,19 +5,24 @@ import * as DockerListModuleCss from "./DockerList.module.css"; var styles = DockerListModuleCss; -function Test$DockerListMod(Props) { +function DockerList$DockerListMod(Props) { var count = Props.count; var times = count !== 1 ? ( count !== 2 ? String(count) + " times" : "twice" ) : "once"; var msg = "Click me " + times; - return React.createElement("button", { - className: styles.root - }, msg); + return React.createElement("div", { + style: { + padding: "2px", + borderRadius: "2px" + } + }, "Docker List", React.createElement("button", { + className: styles.root + }, msg)); } var DockerListMod = { - make: Test$DockerListMod + make: DockerList$DockerListMod }; export { diff --git a/packages/dockerlist-client/src/Test.res b/packages/dockerlist-client/src/DockerList.res similarity index 55% rename from packages/dockerlist-client/src/Test.res rename to packages/dockerlist-client/src/DockerList.res index 6d905ee..e469282 100644 --- a/packages/dockerlist-client/src/Test.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -12,8 +12,16 @@ module DockerListMod = { } let msg = "Click me " ++ times - +
+ {React.string("Docker List")} +
} } -// Js.log("Hello, World!") \ No newline at end of file +// Js.log("Hello, World!") diff --git a/packages/dockerlist-client/src/DockerList.stories.tsx b/packages/dockerlist-client/src/DockerList.stories.tsx index d7cf00b..ea6d027 100644 --- a/packages/dockerlist-client/src/DockerList.stories.tsx +++ b/packages/dockerlist-client/src/DockerList.stories.tsx @@ -1,6 +1,5 @@ import React, { ReactNode } from "react"; -// import DockerList from "./DockerList"; -import { DockerListMod } from "./Test.bs"; +import { DockerListMod } from "./DockerList.bs"; import packageJson from "../package.json"; import { BreakpointWrapper } from "../../../helpers"; @@ -11,14 +10,13 @@ export default { component: DockerList, }; -const url = - process.env.STORYBOOK_MODE === "PROD" - ? `https://${window.location.host}/${window.top.location.pathname}` - : "http://localhost:3100"; +// const url = +// process.env.STORYBOOK_MODE === "PROD" +// ? `https://${window.location.host}/${window.top.location.pathname}` +// : "http://localhost:3100"; export const Default = ({ width }: { width: number }): ReactNode => ( - {/* */} ); diff --git a/packages/dockerlist-client/src/DockerList.tsx b/packages/dockerlist-client/src/DockerList.tsx deleted file mode 100644 index 5689c4b..0000000 --- a/packages/dockerlist-client/src/DockerList.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React, { useRef } from "react"; -// import "./StreamPlayer.css"; -// import Elm from "react-elm-components"; -// import Audio from "./Elm/Audio.elm"; - -// const setupPorts = (containerRef) => (ports) => { -// ports.setPlayPauseStatusPort.subscribe((newStatus) => { -// // NOTE: findDomNode has been deprecated -// const audioElem = containerRef.current.children[0].querySelector( -// "audio" -// ); -// // Wait to let the audio elem be updated with a new cachebusting timestamp in Audio.elm `Cmd.batch [ Task.perform UpdateTimestamp Time.now, Cmd.map MsgControls controlsCmds ]` -// setTimeout(() => { -// if (newStatus === "Play") { -// audioElem.play(); -// } else { -// audioElem.pause(); -// } -// }, 50); -// }); -// }; - -const DockerList = ({ url }) => { - const containerRef = useRef(null); - return ( -
-
- Docker List -
- - {/* */} -
- ); -}; - -export default DockerList; From 36992ac743324e959fea85a0ed2997052266e2a6 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 14 May 2021 08:57:21 +0200 Subject: [PATCH 07/62] Add xhr --- packages/dockerlist-client/src/DockerList.res | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index e469282..a61257a 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -2,7 +2,40 @@ // set of attributes @module external styles: {..} = "./DockerList.module.css" +type request +type response + +@new external makeXMLHttpRequest: unit => request = "XMLHttpRequest" +@send +external addEventListener: (request, string, unit => unit) => unit = "addEventListener" +@get external response: request => response = "response" +@send external open_: (request, string, string) => unit = "open" +@send external send: request => unit = "send" +@send external abort: request => unit = "abort" + +@get external status: request => int = "status" + module DockerListMod = { + type t = { + address: string, + total_balance: float, + } + + @scope("JSON") @val + external parseResponse: response => t = "parse" + + let query = (~address, ~onDone, ~onError, ()) => { + let request = makeXMLHttpRequest() + + request->addEventListener("load", () => onDone(request->response->parseResponse)) + request->addEventListener("error", () => onError(request->status)) + + request->open_("GET", "https://dog.ceo/api/breeds/image/random/" ++ address) + request->send + + () => request->abort + } + @react.component let make = (~count: int) => { let times = switch count { @@ -12,6 +45,23 @@ module DockerListMod = { } let msg = "Click me " ++ times + // Runs only once right after mounting the component + React.useEffect0(() => { + // Run effects + query( + "3", + () => { + let response = request->response->parseResponse + Js.log(response["message"]) + }, + () => { + let response = request->status + Js.log("Error logging here" ++ response) + }, + ) + None // or Some(() => {}) + }) +
- {React.string("Docker List")} + {React.string("Docker List")} +
} } From c0e43e107ec42c2d772bea44e0bfc371fc75b8a1 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 14 May 2021 09:07:18 +0200 Subject: [PATCH 08/62] Fix xhr request --- packages/dockerlist-client/src/DockerList.res | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index a61257a..277f537 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -22,18 +22,27 @@ module DockerListMod = { } @scope("JSON") @val - external parseResponse: response => t = "parse" + external // external parseResponse: response => t = "parse" + parseResponse: response => {"message": array} = "parse" - let query = (~address, ~onDone, ~onError, ()) => { + // let query = (~address, ~onDone, ~onError, ()) => { + let query = (~address) => { let request = makeXMLHttpRequest() - request->addEventListener("load", () => onDone(request->response->parseResponse)) - request->addEventListener("error", () => onError(request->status)) + // request->addEventListener("load", () => onDone(request->response->parseResponse)) + // request->addEventListener("error", () => onError(request->status)) + request->addEventListener("load", () => { + let response = request->response->parseResponse + Js.log(response["message"]) + }) + request->addEventListener("error", () => { + Js.log("Error logging here") + }) request->open_("GET", "https://dog.ceo/api/breeds/image/random/" ++ address) request->send - () => request->abort + // () => request->abort } @react.component @@ -48,17 +57,7 @@ module DockerListMod = { // Runs only once right after mounting the component React.useEffect0(() => { // Run effects - query( - "3", - () => { - let response = request->response->parseResponse - Js.log(response["message"]) - }, - () => { - let response = request->status - Js.log("Error logging here" ++ response) - }, - ) + query(~address="3") None // or Some(() => {}) }) From 57a4c4d8e90979fd231b8359514002033413a22d Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 14 May 2021 09:20:28 +0200 Subject: [PATCH 09/62] Fix some params --- packages/dockerlist-client/src/DockerList.res | 75 +++++++++++++++---- 1 file changed, 62 insertions(+), 13 deletions(-) diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 277f537..ab7253b 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -25,19 +25,19 @@ module DockerListMod = { external // external parseResponse: response => t = "parse" parseResponse: response => {"message": array} = "parse" - // let query = (~address, ~onDone, ~onError, ()) => { - let query = (~address) => { + let query = (~address, ~onDone, ~onError /* , () */) => { + // let query = (~address) => { let request = makeXMLHttpRequest() - // request->addEventListener("load", () => onDone(request->response->parseResponse)) - // request->addEventListener("error", () => onError(request->status)) - request->addEventListener("load", () => { - let response = request->response->parseResponse - Js.log(response["message"]) - }) - request->addEventListener("error", () => { - Js.log("Error logging here") - }) + request->addEventListener("load", () => onDone(request->response->parseResponse)) + request->addEventListener("error", () => onError(request->status)) + // request->addEventListener("load", () => { + // let response = request->response->parseResponse + // Js.log(response["message"]) + // }) + // request->addEventListener("error", () => { + // Js.log("Error logging here") + // }) request->open_("GET", "https://dog.ceo/api/breeds/image/random/" ++ address) request->send @@ -45,6 +45,19 @@ module DockerListMod = { // () => request->abort } + let myQuery = () => + query( + ~address="3", + ~onDone=response => { + // let response = request->response->parseResponse + Js.log(response["message"]) + }, + ~onError=x => { + // let response = request->response->parseResponse + Js.log("Error logging: " ++ Belt.Int.toString(x)) + }, + ) + @react.component let make = (~count: int) => { let times = switch count { @@ -57,10 +70,46 @@ module DockerListMod = { // Runs only once right after mounting the component React.useEffect0(() => { // Run effects - query(~address="3") + query( + ~address="3", + ~onDone=response => { + // let response = request->response->parseResponse + Js.log(response["message"]) + }, + ~onError=x => { + // let response = request->response->parseResponse + Js.log("Error logging: " ++ Belt.Int.toString(x)) + }, + ) None // or Some(() => {}) }) + let handleClick = event => { + // TODO fix assign? Needs the fourth () arg?: myQuery() + // TODO this is ignored? + query( + ~address="3", + ~onDone=response => { + // let response = request->response->parseResponse + Js.log(response["message"]) + }, + ~onError=x => { + // let response = request->response->parseResponse + Js.log("Error logging: " ++ Belt.Int.toString(x)) + }, + ) + Js.log("Click!") + // switch onClick { + // | Location(location) => + // if Utils.isMouseRightClick(event) { + // event |> ReactEvent.Mouse.preventDefault + // location |> toString |> RescriptReactRouter.push + // } + // | CustomFn(fn) => fn() + // } + // ignore() + } +
{React.string("Docker List")} - +
} } From 0b872c5b8b6a46a7ea7e041ea0aa087f6067c05f Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 14 May 2021 15:22:25 +0200 Subject: [PATCH 10/62] Extract query to dockerApi --- packages/dockerlist-client/src/DockerApi.res | 569 ++++++++++++++++++ packages/dockerlist-client/src/DockerList.res | 58 +- 2 files changed, 588 insertions(+), 39 deletions(-) create mode 100644 packages/dockerlist-client/src/DockerApi.res diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res new file mode 100644 index 0000000..49f0760 --- /dev/null +++ b/packages/dockerlist-client/src/DockerApi.res @@ -0,0 +1,569 @@ +type request +type response + +@new external makeXMLHttpRequest: unit => request = "XMLHttpRequest" +@send +external addEventListener: (request, string, unit => unit) => unit = "addEventListener" +@get external response: request => response = "response" +@send external open_: (request, string, string) => unit = "open" +@send external send: request => unit = "send" +@send external abort: request => unit = "abort" + +@get external status: request => int = "status" + +module Api = { + // let addJwtToken: unit => array<(string, string)> = () => + // Utils.getCookie("jwtToken") + // ->Belt.Option.flatMap(snd) + // ->Belt.Option.map(token => [("Authorization", Printf.sprintf("Token %s", token))]) + // ->Belt.Option.getWithDefault([]) + + // let getDogs: unit => array<(string, string)> = () => [ + // ("Content-Type", "application/json; charset=UTF-8"), + // ] + + @scope("JSON") @val + external parseResponse: response => {"message": array} = "parse" + + let getDogs = (~address, ~onDone, ~onError /* , () */) => { + // let query = (~address) => { + let request = makeXMLHttpRequest() + + request->addEventListener("load", () => onDone(request->response->parseResponse)) + request->addEventListener("error", () => onError(request->status)) + // request->addEventListener("load", () => { + // let response = request->response->parseResponse + // Js.log(response["message"]) + // }) + // request->addEventListener("error", () => { + // Js.log("Error logging here") + // }) + + request->open_("GET", "https://dog.ceo/api/breeds/image/random/" ++ address) + request->send + + // () => request->abort + } + + let getDogsAndPrint = () => + getDogs( + ~address="3", + ~onDone=response => { + // let response = request->response->parseResponse + Js.log2("weird", response["message"]) + }, + ~onError=x => { + // let response = request->response->parseResponse + Js.log("Error logging: " ++ Belt.Int.toString(x)) + }, + ) +} + +// TODO use Fetch +// +// open Js.Promise +// open Fetch +// +// module Action = { +// type article = +// | Create(Shape.Article.t) +// | Read(string) +// | Update(string, Shape.Article.t) +// | Delete(string) + +// type follow = +// | Follow(string) +// | Unfollow(string) + +// type favorite = +// | Favorite(string) +// | Unfavorite(string) +// } + +// module Headers = { +// let addJwtToken: unit => array<(string, string)> = () => +// Utils.getCookie("jwtToken") +// ->Belt.Option.flatMap(snd) +// ->Belt.Option.map(token => [("Authorization", Printf.sprintf("Token %s", token))]) +// ->Belt.Option.getWithDefault([]) + +// let addContentTypeAsJson: unit => array<(string, string)> = () => [ +// ("Content-Type", "application/json; charset=UTF-8"), +// ] +// } + +// let getErrorBodyJson: result => Js.Promise.t< +// result, +// > = x => +// switch x { +// | Ok(_json) as ok => ok |> resolve +// | Error(resp) => +// resp +// |> Response.json +// |> then_(json => { +// let status = Response.status(resp) +// let statusText = Response.statusText(resp) +// let bodyJson = #json(json) + +// AppError.fetch((status, statusText, bodyJson))->Belt.Result.Error->resolve +// }) +// } + +// let getErrorBodyText: result => Js.Promise.t< +// result, +// > = x => +// switch x { +// | Ok(_json) as ok => ok |> resolve +// | Error(resp) => +// let status = Response.status(resp) +// let statusText = Response.statusText(resp) +// let bodyText = #text("FIXME: show body text instead") + +// AppError.fetch((status, statusText, bodyText))->Belt.Result.Error->resolve +// } + +// let parseJsonIfOk: Response.t => Js.Promise.t> = resp => +// if Response.ok(resp) { +// resp +// |> Response.json +// |> then_(json => json->Ok->resolve) +// |> catch(_error => resp->Belt.Result.Error->resolve) +// } else { +// resp->Belt.Result.Error->resolve +// } + +// let article: ( +// ~action: Action.article, +// unit, +// ) => Js.Promise.t> = (~action, ()) => { +// let body = switch action { +// | Create(article) | Update(_, article) => +// let article = +// list{ +// ("title", Js.Json.string(article.title)), +// ("description", Js.Json.string(article.description)), +// ("body", Js.Json.string(article.body)), +// ("tagList", Js.Json.stringArray(article.tagList)), +// } +// |> Js.Dict.fromList +// |> Js.Json.object_ + +// list{("article", article)} +// ->Js.Dict.fromList +// ->Js.Json.object_ +// ->Js.Json.stringify +// ->BodyInit.make +// ->Some +// | Read(_) | Delete(_) => None +// } + +// let method__ = switch action { +// | Create(_) => Post +// | Read(_) => Get +// | Update(_) => Put +// | Delete(_) => Delete +// } + +// let headers = +// switch action { +// | Create(_) | Update(_) => Headers.addContentTypeAsJson() +// | Read(_) | Delete(_) => [] +// } +// ->Belt.Array.concat(Headers.addJwtToken()) +// ->HeadersInit.makeWithArray + +// let slug = switch action { +// | Create(_) => "" +// | Read(slug) | Update(slug, _) | Delete(slug) => slug +// } + +// fetchWithInit( +// Endpoints.Articles.article(~slug, ()), +// RequestInit.make(~method_=method__, ~headers, ~body?, ()), +// ) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyJson) +// |> then_(result => { +// result +// ->Belt.Result.flatMap(json => { +// try { +// json +// ->Js.Json.decodeObject +// ->Belt.Option.getExn +// ->Js.Dict.get("article") +// ->Belt.Option.getExn +// ->Shape.Article.decode +// ->AppError.decode +// } catch { +// | _ => AppError.decode(Error("API.article: failed to decode json")) +// } +// }) +// ->resolve +// }) +// } + +// let favoriteArticle: ( +// ~action: Action.favorite, +// unit, +// ) => Js.Promise.t> = (~action, ()) => { +// let requestInit = RequestInit.make( +// ~method_=switch action { +// | Favorite(_slug) => Post +// | Unfavorite(_slug) => Delete +// }, +// ~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, +// (), +// ) + +// Endpoints.Articles.favorite( +// ~slug=switch action { +// | Favorite(slug) => slug +// | Unfavorite(slug) => slug +// }, +// (), +// ) +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => +// result +// ->Belt.Result.flatMap(json => +// try { +// json +// ->Js.Json.decodeObject +// ->Belt.Option.getExn +// ->Js.Dict.get("article") +// ->Belt.Option.getExn +// ->Shape.Article.decode +// ->AppError.decode +// } catch { +// | _ => AppError.decode(Error("API.favoriteArticle: failed to decode json")) +// } +// ) +// ->resolve +// ) +// } + +// let listArticles: ( +// ~limit: int=?, +// ~offset: int=?, +// ~tag: string=?, +// ~author: string=?, +// ~favorited: string=?, +// unit, +// ) => Js.Promise.t> = ( +// ~limit=10, +// ~offset=0, +// ~tag=?, +// ~author=?, +// ~favorited=?, +// (), +// ) => { +// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) + +// Endpoints.Articles.root(~limit, ~offset, ~tag?, ~author?, ~favorited?, ()) +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => +// result->Belt.Result.flatMap(json => json->Shape.Articles.decode->AppError.decode)->resolve +// ) +// } + +// let feedArticles: ( +// ~limit: int=?, +// ~offset: int=?, +// unit, +// ) => Js.Promise.t> = (~limit=10, ~offset=0, ()) => { +// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) + +// Endpoints.Articles.feed(~limit, ~offset, ()) +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => +// result->Belt.Result.flatMap(json => json->Shape.Articles.decode->AppError.decode)->resolve +// ) +// } + +// let tags: unit => Js.Promise.t> = () => +// Endpoints.tags +// |> fetch +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => +// result->Belt.Result.flatMap(json => json->Shape.Tags.decode->AppError.decode)->resolve +// ) + +// let currentUser: unit => Js.Promise.t> = () => { +// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) + +// Endpoints.user +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => +// result->Belt.Result.flatMap(json => json->Shape.User.decode->AppError.decode)->resolve +// ) +// } + +// let updateUser: ( +// ~user: Shape.User.t, +// ~password: string, +// unit, +// ) => Js.Promise.t> = (~user, ~password, ()) => { +// let user = +// list{ +// list{("email", Js.Json.string(user.email))}, +// list{("bio", Js.Json.string(user.bio->Belt.Option.getWithDefault("")))}, +// list{("image", Js.Json.string(user.image->Belt.Option.getWithDefault("")))}, +// list{("username", Js.Json.string(user.username))}, +// if password == "" { +// list{} +// } else { +// list{("password", Js.Json.string(password))} +// }, +// } +// |> List.flatten +// |> Js.Dict.fromList +// |> Js.Json.object_ +// let body = +// list{("user", user)} +// |> Js.Dict.fromList +// |> Js.Json.object_ +// |> Js.Json.stringify +// |> BodyInit.make + +// let requestInit = RequestInit.make( +// ~method_=Put, +// ~headers=Headers.addJwtToken() +// ->Belt.Array.concat(Headers.addContentTypeAsJson()) +// ->HeadersInit.makeWithArray, +// ~body, +// (), +// ) + +// Endpoints.user +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyJson) +// |> then_(result => +// result->Belt.Result.flatMap(json => json->Shape.User.decode->AppError.decode)->resolve +// ) +// } + +// let followUser: ( +// ~action: Action.follow, +// unit, +// ) => Js.Promise.t> = (~action, ()) => { +// let requestInit = RequestInit.make( +// ~method_=switch action { +// | Follow(_username) => Post +// | Unfollow(_username) => Delete +// }, +// ~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, +// (), +// ) + +// Endpoints.Profiles.follow( +// ~username=switch action { +// | Follow(username) | Unfollow(username) => username +// }, +// (), +// ) +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => +// result->Belt.Result.flatMap(json => { +// try { +// json +// ->Js.Json.decodeObject +// ->Belt.Option.getExn +// ->Js.Dict.get("profile") +// ->Belt.Option.getExn +// ->Shape.Author.decode +// ->AppError.decode +// } catch { +// | _ => AppError.decode(Belt.Result.Error("API.followUser: failed to decode json")) +// } +// }) |> resolve +// ) +// } + +// let getComments: ( +// ~slug: string, +// unit, +// ) => Js.Promise.t, AppError.t>> = (~slug, ()) => { +// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) + +// Endpoints.Articles.comments(~slug, ()) +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => +// result->Belt.Result.flatMap(json => json->Shape.Comment.decode->AppError.decode)->resolve +// ) +// } + +// let deleteComment: ( +// ~slug: string, +// ~id: int, +// unit, +// ) => Js.Promise.t> = (~slug, ~id, ()) => { +// let requestInit = RequestInit.make( +// ~method_=Delete, +// ~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, +// (), +// ) + +// Endpoints.Articles.comment(~slug, ~id, ()) +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => result->Belt.Result.flatMap(_json => Belt.Result.Ok((slug, id)))->resolve) +// } + +// let addComment: ( +// ~slug: string, +// ~body: string, +// unit, +// ) => Js.Promise.t> = (~slug, ~body, ()) => { +// let comment = list{("body", Js.Json.string(body))} |> Js.Dict.fromList |> Js.Json.object_ + +// let body = +// list{("comment", comment)} +// |> Js.Dict.fromList +// |> Js.Json.object_ +// |> Js.Json.stringify +// |> BodyInit.make + +// let requestInit = RequestInit.make( +// ~method_=Post, +// ~headers=Headers.addJwtToken() +// ->Belt.Array.concat(Headers.addContentTypeAsJson()) +// ->HeadersInit.makeWithArray, +// ~body, +// (), +// ) + +// Endpoints.Articles.comments(~slug, ()) +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => +// result +// ->Belt.Result.flatMap(json => { +// try { +// json +// ->Js.Json.decodeObject +// ->Belt.Option.getExn +// ->Js.Dict.get("comment") +// ->Belt.Option.getExn +// ->Shape.Comment.decodeComment +// ->AppError.decode +// } catch { +// | _ => AppError.decode(Belt.Result.Error("API.addComment: failed to decode json")) +// } +// }) +// ->resolve +// ) +// } + +// let getProfile: (~username: string, unit) => Js.Promise.t> = ( +// ~username, +// (), +// ) => { +// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) + +// Endpoints.Profiles.profile(~username, ()) +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyText) +// |> then_(result => +// result +// ->Belt.Result.flatMap(json => { +// try { +// json +// ->Js.Json.decodeObject +// ->Belt.Option.getExn +// ->Js.Dict.get("profile") +// ->Belt.Option.getExn +// ->Shape.Author.decode +// ->AppError.decode +// } catch { +// | _ => AppError.decode(Belt.Result.Error("API.getProfile: failed to decode json")) +// } +// }) +// ->resolve +// ) +// } + +// let login = (~email: string, ~password: string, ()): Js.Promise.t< +// result, +// > => { +// let user = +// list{("email", Js.Json.string(email)), ("password", Js.Json.string(password))} +// |> Js.Dict.fromList +// |> Js.Json.object_ + +// let body = +// list{("user", user)} +// |> Js.Dict.fromList +// |> Js.Json.object_ +// |> Js.Json.stringify +// |> BodyInit.make + +// let requestInit = RequestInit.make( +// ~method_=Post, +// ~headers=Headers.addContentTypeAsJson()->HeadersInit.makeWithArray, +// ~body, +// (), +// ) + +// Endpoints.Users.login +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyJson) +// |> then_(result => +// result->Belt.Result.flatMap(json => json->Shape.User.decode->AppError.decode)->resolve +// ) +// } + +// let register: ( +// ~username: string, +// ~email: string, +// ~password: string, +// unit, +// ) => Js.Promise.t> = (~username, ~email, ~password, ()) => { +// let user = +// list{ +// ("email", Js.Json.string(email)), +// ("password", Js.Json.string(password)), +// ("username", Js.Json.string(username)), +// } +// |> Js.Dict.fromList +// |> Js.Json.object_ + +// let body = +// list{("user", user)} +// |> Js.Dict.fromList +// |> Js.Json.object_ +// |> Js.Json.stringify +// |> BodyInit.make + +// let requestInit = RequestInit.make( +// ~method_=Post, +// ~headers=Headers.addContentTypeAsJson()->HeadersInit.makeWithArray, +// ~body, +// (), +// ) + +// Endpoints.Users.root +// |> fetchWithInit(_, requestInit) +// |> then_(parseJsonIfOk) +// |> then_(getErrorBodyJson) +// |> then_(result => +// result->Belt.Result.flatMap(json => json->Shape.User.decode->AppError.decode)->resolve +// ) +// } \ No newline at end of file diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index ab7253b..e8da1d1 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -16,10 +16,10 @@ external addEventListener: (request, string, unit => unit) => unit = "addEventLi @get external status: request => int = "status" module DockerListMod = { - type t = { - address: string, - total_balance: float, - } + // type t = { + // address: string, + // total_balance: float, + // } @scope("JSON") @val external // external parseResponse: response => t = "parse" @@ -50,7 +50,7 @@ module DockerListMod = { ~address="3", ~onDone=response => { // let response = request->response->parseResponse - Js.log(response["message"]) + Js.log2("weird", response["message"]) }, ~onError=x => { // let response = request->response->parseResponse @@ -70,44 +70,24 @@ module DockerListMod = { // Runs only once right after mounting the component React.useEffect0(() => { // Run effects - query( - ~address="3", - ~onDone=response => { - // let response = request->response->parseResponse - Js.log(response["message"]) - }, - ~onError=x => { - // let response = request->response->parseResponse - Js.log("Error logging: " ++ Belt.Int.toString(x)) - }, - ) + myQuery() + + // query( + // ~address="3", + // ~onDone=response => { + // // let response = request->response->parseResponse + // Js.log(response["message"]) + // }, + // ~onError=x => { + // // let response = request->response->parseResponse + // Js.log("Error logging: " ++ Belt.Int.toString(x)) + // }, + // ) None // or Some(() => {}) }) let handleClick = event => { - // TODO fix assign? Needs the fourth () arg?: myQuery() - // TODO this is ignored? - query( - ~address="3", - ~onDone=response => { - // let response = request->response->parseResponse - Js.log(response["message"]) - }, - ~onError=x => { - // let response = request->response->parseResponse - Js.log("Error logging: " ++ Belt.Int.toString(x)) - }, - ) - Js.log("Click!") - // switch onClick { - // | Location(location) => - // if Utils.isMouseRightClick(event) { - // event |> ReactEvent.Mouse.preventDefault - // location |> toString |> RescriptReactRouter.push - // } - // | CustomFn(fn) => fn() - // } - // ignore() + DockerApi.Api.getDogsAndPrint(); }
Date: Fri, 14 May 2021 15:34:48 +0200 Subject: [PATCH 11/62] Show result of api call --- packages/dockerlist-client/README.md | 4 +- .../dockerlist-client/src/DockerApi.bs.js | 49 +++++++++++ packages/dockerlist-client/src/DockerApi.res | 16 +++- .../dockerlist-client/src/DockerList.bs.js | 25 +++++- .../src/DockerList.module.css | 4 + packages/dockerlist-client/src/DockerList.res | 84 ++++--------------- 6 files changed, 108 insertions(+), 74 deletions(-) create mode 100644 packages/dockerlist-client/src/DockerApi.bs.js diff --git a/packages/dockerlist-client/README.md b/packages/dockerlist-client/README.md index 35559f4..5f1df6e 100644 --- a/packages/dockerlist-client/README.md +++ b/packages/dockerlist-client/README.md @@ -21,7 +21,9 @@ See https://github.com/mdvanes/homeremote/issues/9 "bs-dependencies": ["@rescript/react"] } in bsconfig.json - in /packages/dockerlist-client run `yarn re:build` -- TODO For now workflow is: start storybook and in other terminal in /packages/dockerlist-client run `yarn re:start` +- Add fetch to endpoint: `yarn lerna add bs-fetch --scope=@mdworld/homeremote-dockerlist` and add to bsconfig.json: "bs-dependencies": ["bs-fetch"] + +TODO For now workflow is: start storybook and in other terminal in /packages/dockerlist-client run `yarn re:start` ## Running diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js new file mode 100644 index 0000000..b4849af --- /dev/null +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -0,0 +1,49 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + +import * as Curry from "rescript/lib/es6/curry.js"; +import * as Caml_array from "rescript/lib/es6/caml_array.js"; + +function getDogs(address, onDone, onError) { + var request = new XMLHttpRequest(); + request.addEventListener("load", (function (param) { + return Curry._1(onDone, JSON.parse(request.response)); + })); + request.addEventListener("error", (function (param) { + return Curry._1(onError, request.status); + })); + request.open("GET", "https://dog.ceo/api/breeds/image/random/" + address); + request.send(); + +} + +function getDogsAndPrint(param) { + return getDogs("3", (function (response) { + console.log("weird", response.message); + + }), (function (x) { + console.log("Error logging: " + String(x)); + + })); +} + +function getDogsAndShow(show) { + return getDogs("1", (function (response) { + console.log("weird", response.message); + return Curry._1(show, Caml_array.get(response.message, 0)); + }), (function (x) { + console.log("Error logging: " + String(x)); + + })); +} + +var Api = { + getDogs: getDogs, + getDogsAndPrint: getDogsAndPrint, + getDogsAndShow: getDogsAndShow +}; + +export { + Api , + +} +/* No side effect */ diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res index 49f0760..fc891fc 100644 --- a/packages/dockerlist-client/src/DockerApi.res +++ b/packages/dockerlist-client/src/DockerApi.res @@ -57,6 +57,20 @@ module Api = { Js.log("Error logging: " ++ Belt.Int.toString(x)) }, ) + + let getDogsAndShow = (~show) => + getDogs( + ~address="1", + ~onDone=response => { + // let response = request->response->parseResponse + Js.log2("weird", response["message"]) + show(response["message"][0]) + }, + ~onError=x => { + // let response = request->response->parseResponse + Js.log("Error logging: " ++ Belt.Int.toString(x)) + }, + ) } // TODO use Fetch @@ -566,4 +580,4 @@ module Api = { // |> then_(result => // result->Belt.Result.flatMap(json => json->Shape.User.decode->AppError.decode)->resolve // ) -// } \ No newline at end of file +// } diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 2b205ac..41e76dc 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -1,7 +1,9 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +import * as Curry from "rescript/lib/es6/curry.js"; import * as React from "react"; import * as DockerListModuleCss from "./DockerList.module.css"; +import * as DockerApi$MdworldHomeremoteDockerlist from "./DockerApi.bs.js"; var styles = DockerListModuleCss; @@ -11,14 +13,33 @@ function DockerList$DockerListMod(Props) { count !== 2 ? String(count) + " times" : "twice" ) : "once"; var msg = "Click me " + times; + var match = React.useState(function () { + return "https://images.dog.ceo/breeds/waterdog-spanish/20180714_201544.jpg"; + }); + var setImgs = match[1]; + React.useEffect((function () { + DockerApi$MdworldHomeremoteDockerlist.Api.getDogsAndPrint(undefined); + + }), []); + var handleClick = function (_event) { + return DockerApi$MdworldHomeremoteDockerlist.Api.getDogsAndShow(function (_param) { + return Curry._1(setImgs, (function (_prev) { + return _param; + })); + }); + }; return React.createElement("div", { style: { padding: "2px", borderRadius: "2px" } }, "Docker List", React.createElement("button", { - className: styles.root - }, msg)); + className: styles.root, + onClick: handleClick + }, msg), React.createElement("img", { + className: styles.image, + src: match[0] + })); } var DockerListMod = { diff --git a/packages/dockerlist-client/src/DockerList.module.css b/packages/dockerlist-client/src/DockerList.module.css index 3d473d9..5ff0781 100644 --- a/packages/dockerlist-client/src/DockerList.module.css +++ b/packages/dockerlist-client/src/DockerList.module.css @@ -1,3 +1,7 @@ .root { color: red; } + +.image { + height: 200px; +} \ No newline at end of file diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index e8da1d1..ff8a38c 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -2,62 +2,7 @@ // set of attributes @module external styles: {..} = "./DockerList.module.css" -type request -type response - -@new external makeXMLHttpRequest: unit => request = "XMLHttpRequest" -@send -external addEventListener: (request, string, unit => unit) => unit = "addEventListener" -@get external response: request => response = "response" -@send external open_: (request, string, string) => unit = "open" -@send external send: request => unit = "send" -@send external abort: request => unit = "abort" - -@get external status: request => int = "status" - module DockerListMod = { - // type t = { - // address: string, - // total_balance: float, - // } - - @scope("JSON") @val - external // external parseResponse: response => t = "parse" - parseResponse: response => {"message": array} = "parse" - - let query = (~address, ~onDone, ~onError /* , () */) => { - // let query = (~address) => { - let request = makeXMLHttpRequest() - - request->addEventListener("load", () => onDone(request->response->parseResponse)) - request->addEventListener("error", () => onError(request->status)) - // request->addEventListener("load", () => { - // let response = request->response->parseResponse - // Js.log(response["message"]) - // }) - // request->addEventListener("error", () => { - // Js.log("Error logging here") - // }) - - request->open_("GET", "https://dog.ceo/api/breeds/image/random/" ++ address) - request->send - - // () => request->abort - } - - let myQuery = () => - query( - ~address="3", - ~onDone=response => { - // let response = request->response->parseResponse - Js.log2("weird", response["message"]) - }, - ~onError=x => { - // let response = request->response->parseResponse - Js.log("Error logging: " ++ Belt.Int.toString(x)) - }, - ) - @react.component let make = (~count: int) => { let times = switch count { @@ -67,27 +12,20 @@ module DockerListMod = { } let msg = "Click me " ++ times + let (imgs, setImgs) = React.useState(_ => + "https://images.dog.ceo/breeds/waterdog-spanish/20180714_201544.jpg" + ) + // Runs only once right after mounting the component React.useEffect0(() => { // Run effects - myQuery() - - // query( - // ~address="3", - // ~onDone=response => { - // // let response = request->response->parseResponse - // Js.log(response["message"]) - // }, - // ~onError=x => { - // // let response = request->response->parseResponse - // Js.log("Error logging: " ++ Belt.Int.toString(x)) - // }, - // ) + DockerApi.Api.getDogsAndPrint() None // or Some(() => {}) }) - let handleClick = event => { - DockerApi.Api.getDogsAndPrint(); + let handleClick = _event => { + // DockerApi.Api.getDogsAndPrint() + DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) }
{React.string("Docker List")} +
} } From 7370f4cf8427596f4d377decd34db3002b733e5c Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 14 May 2021 16:15:47 +0200 Subject: [PATCH 12/62] Try fetch api --- packages/dockerlist-client/.merlin | 2 + packages/dockerlist-client/bsconfig.json | 2 +- packages/dockerlist-client/package.json | 3 +- .../dockerlist-client/src/DockerApi.bs.js | 15 +++++-- packages/dockerlist-client/src/DockerApi.res | 42 +++++++++++++++++-- .../dockerlist-client/src/DockerList.bs.js | 12 +++++- .../src/DockerList.module.css | 7 +++- packages/dockerlist-client/src/DockerList.res | 11 ++++- yarn.lock | 5 +++ 9 files changed, 86 insertions(+), 13 deletions(-) diff --git a/packages/dockerlist-client/.merlin b/packages/dockerlist-client/.merlin index e0eed72..ed84fe2 100644 --- a/packages/dockerlist-client/.merlin +++ b/packages/dockerlist-client/.merlin @@ -7,6 +7,8 @@ B /home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/rescript/lib/ocam FLG -w +a-4-9-20-40-41-42-50-61-102 S /home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/@rescript/react/lib/ocaml B /home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/@rescript/react/lib/ocaml +S /home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/bs-fetch/lib/ocaml +B /home/martin/ZNoBackup/repos/homeremote-plugins/node_modules/bs-fetch/lib/ocaml S src B lib/bs/src ####BSB GENERATED: NO EDIT} diff --git a/packages/dockerlist-client/bsconfig.json b/packages/dockerlist-client/bsconfig.json index 20f2575..361599e 100644 --- a/packages/dockerlist-client/bsconfig.json +++ b/packages/dockerlist-client/bsconfig.json @@ -14,6 +14,6 @@ ], "suffix": ".bs.js", "reason": { "react-jsx": 3 }, - "bs-dependencies": ["@rescript/react"], + "bs-dependencies": ["@rescript/react", "bs-fetch"], "namespace": true } diff --git a/packages/dockerlist-client/package.json b/packages/dockerlist-client/package.json index 7e6e8be..9a3f315 100644 --- a/packages/dockerlist-client/package.json +++ b/packages/dockerlist-client/package.json @@ -92,6 +92,7 @@ "rescript": "^9.1.2" }, "dependencies": { - "@rescript/react": "^0.10.3" + "@rescript/react": "^0.10.3", + "bs-fetch": "^0.6.2" } } diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js index b4849af..0c26dc8 100644 --- a/packages/dockerlist-client/src/DockerApi.bs.js +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -18,7 +18,7 @@ function getDogs(address, onDone, onError) { function getDogsAndPrint(param) { return getDogs("3", (function (response) { - console.log("weird", response.message); + console.log("GetDogsAndPrint Done", response.message); }), (function (x) { console.log("Error logging: " + String(x)); @@ -28,7 +28,7 @@ function getDogsAndPrint(param) { function getDogsAndShow(show) { return getDogs("1", (function (response) { - console.log("weird", response.message); + console.log("GetDogsAndShow Done", response.message); return Curry._1(show, Caml_array.get(response.message, 0)); }), (function (x) { console.log("Error logging: " + String(x)); @@ -36,10 +36,19 @@ function getDogsAndShow(show) { })); } +function getDogsFetch(param) { + return fetch("https://dog.ceo/api/breeds/image/random/1").then(function (prim) { + return prim.text(); + }).then(function (text) { + return Promise.resolve((console.log(text), undefined)); + }); +} + var Api = { getDogs: getDogs, getDogsAndPrint: getDogsAndPrint, - getDogsAndShow: getDogsAndShow + getDogsAndShow: getDogsAndShow, + getDogsFetch: getDogsFetch }; export { diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res index fc891fc..1eecbf7 100644 --- a/packages/dockerlist-client/src/DockerApi.res +++ b/packages/dockerlist-client/src/DockerApi.res @@ -1,6 +1,9 @@ type request type response +// open Js.Promise +// open Fetch + @new external makeXMLHttpRequest: unit => request = "XMLHttpRequest" @send external addEventListener: (request, string, unit => unit) => unit = "addEventListener" @@ -25,6 +28,7 @@ module Api = { @scope("JSON") @val external parseResponse: response => {"message": array} = "parse" + // XHR example (no dependencies) let getDogs = (~address, ~onDone, ~onError /* , () */) => { // let query = (~address) => { let request = makeXMLHttpRequest() @@ -50,7 +54,7 @@ module Api = { ~address="3", ~onDone=response => { // let response = request->response->parseResponse - Js.log2("weird", response["message"]) + Js.log2("GetDogsAndPrint Done", response["message"]) }, ~onError=x => { // let response = request->response->parseResponse @@ -63,7 +67,7 @@ module Api = { ~address="1", ~onDone=response => { // let response = request->response->parseResponse - Js.log2("weird", response["message"]) + Js.log2("GetDogsAndShow Done", response["message"]) show(response["message"][0]) }, ~onError=x => { @@ -71,12 +75,42 @@ module Api = { Js.log("Error logging: " ++ Belt.Int.toString(x)) }, ) + + // Using Fetch API with bs-fetch bindings + // let getDogsFetch = () => Js.Promise.( + // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") + // |> then_(Fetch.Response.text) + // |> then_(text => print_endline(text) |> resolve), + // ) + // let getDogsFetch = () => "https://dog.ceo/api/breeds/image/random/1" + // |> Fetch.fetch + // |> then_(Fetch.Response.text) + + // let getDogsFetch = () => Js.Promise.( + // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") + // |> then_(Fetch.Response.text) + // |> then_(text => print_endline(text) |> resolve), + // ) + + let getDogsFetch = () => + Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") + |> Js.Promise.then_(Fetch.Response.text) + |> Js.Promise.then_(text => print_endline(text) |> Js.Promise.resolve) + + + + // let tags: unit => Js.Promise.t> = () => + // Endpoints.tags + // |> fetch + // |> then_(parseJsonIfOk) + // |> then_(getErrorBodyText) + // |> then_(result => + // result->Belt.Result.flatMap(json => json->Shape.Tags.decode->AppError.decode)->resolve + // ) } // TODO use Fetch // -// open Js.Promise -// open Fetch // // module Action = { // type article = diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 41e76dc..333f586 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -28,15 +28,23 @@ function DockerList$DockerListMod(Props) { })); }); }; + var handleClickFetch = function (_event) { + console.log("handleClickFetch"); + + }; return React.createElement("div", { + className: styles.root, style: { padding: "2px", borderRadius: "2px" } }, "Docker List", React.createElement("button", { - className: styles.root, + className: styles.button, onClick: handleClick - }, msg), React.createElement("img", { + }, msg), React.createElement("button", { + className: styles.button, + onClick: handleClickFetch + }, "with Fetch Api"), React.createElement("img", { className: styles.image, src: match[0] })); diff --git a/packages/dockerlist-client/src/DockerList.module.css b/packages/dockerlist-client/src/DockerList.module.css index 5ff0781..d4adaad 100644 --- a/packages/dockerlist-client/src/DockerList.module.css +++ b/packages/dockerlist-client/src/DockerList.module.css @@ -1,7 +1,12 @@ .root { + background-color: white; +} + +.button { color: red; + display: block; } .image { height: 200px; -} \ No newline at end of file +} diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index ff8a38c..9b625d2 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -28,7 +28,13 @@ module DockerListMod = { DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) } + let handleClickFetch = _event => { + Js.log("handleClickFetch") + // TODO DockerApi.Api.getDogsFetch() + } +
{React.string("Docker List")} - + + Date: Fri, 14 May 2021 21:54:04 +0200 Subject: [PATCH 13/62] Add button styles --- packages/dockerlist-client/README.md | 1 + .../src/DockerList.module.css | 53 +++++++++++++- packages/dockerlist-client/src/DockerList.res | 70 +++++++++++++++---- 3 files changed, 109 insertions(+), 15 deletions(-) diff --git a/packages/dockerlist-client/README.md b/packages/dockerlist-client/README.md index 5f1df6e..1d6bfa6 100644 --- a/packages/dockerlist-client/README.md +++ b/packages/dockerlist-client/README.md @@ -31,6 +31,7 @@ TODO For now workflow is: start storybook and in other terminal in /packages/doc ## TODO +- Material UI bindings seem very unstable: https://jsiebern.github.io/bs-material-ui Adding it breaks the build sometimes - Add Reason/Rescript - Clean up old Elm deps from package.json - Builders (like webpack) are discouraged: https://rescript-lang.org/docs/manual/latest/interop-with-js-build-systems diff --git a/packages/dockerlist-client/src/DockerList.module.css b/packages/dockerlist-client/src/DockerList.module.css index d4adaad..ffd6307 100644 --- a/packages/dockerlist-client/src/DockerList.module.css +++ b/packages/dockerlist-client/src/DockerList.module.css @@ -1,12 +1,61 @@ .root { background-color: white; + border-radius: 4px; + padding: 1rem; +} + +h1 { + font-family: sans-serif; +} + +.button-container { + display: flex; + gap: 0.5rem; + flex-wrap: wrap; } .button { - color: red; - display: block; + border: none; + border-radius: 4px; + background-color: #4caf50; /* #1976d2; */ + cursor: pointer; + color: #fff; + box-shadow: 0px 3px 1px -2px rgb(0 0 0 / 20%), + 0px 2px 2px 0px rgb(0 0 0 / 14%), 0px 1px 5px 0px rgb(0 0 0 / 12%); + font-size: 0.93rem; + padding: 8px 22px; + transition: background-color 200ms; + text-transform: uppercase; +} + +.button:hover { + background-color: #357a38; + /* rgb(17, 82, 147); */ + transition: background-color 500ms; +} + +.button > h1 { + font-size: 1.5rem; +} + +.off { + color: rgba(0, 0, 0, 0.87); + background-color: #e0e0e0; +} + +.error { + /* color: rgba(0, 0, 0, 0.87); */ + background-color: #f44336; /* #aa2e25 */ } .image { height: 200px; } + +dialog { + border: none; +} + +dialog::backdrop { + background: rgba(0, 0, 0, 0.87); +} diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 9b625d2..3d69acf 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -1,6 +1,12 @@ // {..} means we are handling a JS object with an unknown // set of attributes @module external styles: {..} = "./DockerList.module.css" +// @module +// external styles: {"root": string, "button": string, "button-container": string, "off": string, "error": string, "image": string} = +// "./DockerList.module.css" + +@send external showModal: Dom.element => unit = "showModal" +@send external close: Dom.element => unit = "close" module DockerListMod = { @react.component @@ -16,6 +22,10 @@ module DockerListMod = { "https://images.dog.ceo/breeds/waterdog-spanish/20180714_201544.jpg" ) + // TODO extract modal + // let (showModal, setShowModal) = React.useState(_ => false) + let dialogEl = React.useRef(Js.Nullable.null) + // Runs only once right after mounting the component React.useEffect0(() => { // Run effects @@ -30,28 +40,62 @@ module DockerListMod = { let handleClickFetch = _event => { Js.log("handleClickFetch") + // TODO full screen modal to confirm the action when starting/stopping container + dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) + // .showModal(); // TODO DockerApi.Api.getDogsFetch() } -
- {React.string("Docker List")} - - + let closeDialog = _event => { + dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->close) + } + + // open MaterialUi +
+

+ { + // {"Headline"->React.string} + // {"Some example text"->React.string} + React.string("Docker List") + } +

+

{"Docker List"->React.string}

+
+ + + + + +
+ + { + // style={ReactDOM.Style.make(~height="100px")}> + "are you sure you want to start container SOMEConTAINEr"->React.string + } + +
} } From 81b65bc43d502006fc6553a58935c74c524e9792 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sun, 16 May 2021 08:29:54 +0200 Subject: [PATCH 14/62] Use React array, map and pipe --- .../dockerlist-client/src/DockerApi.bs.js | 27 ++++---- packages/dockerlist-client/src/DockerApi.res | 19 +++--- .../dockerlist-client/src/DockerList.bs.js | 66 ++++++++++++++----- packages/dockerlist-client/src/DockerList.res | 45 +++++++++---- .../src/DockerList.stories.tsx | 10 +-- 5 files changed, 112 insertions(+), 55 deletions(-) diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js index 0c26dc8..37a0a39 100644 --- a/packages/dockerlist-client/src/DockerApi.bs.js +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE import * as Curry from "rescript/lib/es6/curry.js"; -import * as Caml_array from "rescript/lib/es6/caml_array.js"; function getDogs(address, onDone, onError) { var request = new XMLHttpRequest(); @@ -27,32 +26,36 @@ function getDogsAndPrint(param) { } function getDogsAndShow(show) { - return getDogs("1", (function (response) { + return getDogs("3", (function (response) { console.log("GetDogsAndShow Done", response.message); - return Curry._1(show, Caml_array.get(response.message, 0)); + return Curry._1(show, response.message); }), (function (x) { console.log("Error logging: " + String(x)); })); } -function getDogsFetch(param) { - return fetch("https://dog.ceo/api/breeds/image/random/1").then(function (prim) { - return prim.text(); - }).then(function (text) { - return Promise.resolve((console.log(text), undefined)); - }); -} +var result = [ + 1, + 2, + 3 + ].map(function (a) { + return a + 1 | 0; + }).filter(function (a) { + return a % 2 === 0; + }); + +console.log(result); var Api = { getDogs: getDogs, getDogsAndPrint: getDogsAndPrint, getDogsAndShow: getDogsAndShow, - getDogsFetch: getDogsFetch + result: result }; export { Api , } -/* No side effect */ +/* result Not a pure module */ diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res index 1eecbf7..0432fa2 100644 --- a/packages/dockerlist-client/src/DockerApi.res +++ b/packages/dockerlist-client/src/DockerApi.res @@ -64,11 +64,11 @@ module Api = { let getDogsAndShow = (~show) => getDogs( - ~address="1", + ~address="3", ~onDone=response => { // let response = request->response->parseResponse Js.log2("GetDogsAndShow Done", response["message"]) - show(response["message"][0]) + show(response["message"]) }, ~onError=x => { // let response = request->response->parseResponse @@ -76,13 +76,16 @@ module Api = { }, ) + let result = [1, 2, 3]->Js.Array2.map(a => a + 1)->Js.Array2.filter(a => mod(a, 2) == 0) + Js.log(result) + // Using Fetch API with bs-fetch bindings // let getDogsFetch = () => Js.Promise.( // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") // |> then_(Fetch.Response.text) // |> then_(text => print_endline(text) |> resolve), // ) - // let getDogsFetch = () => "https://dog.ceo/api/breeds/image/random/1" + // let getDogsFetch = () => "https://dog.ceo/api/breeds/image/random/1" // |> Fetch.fetch // |> then_(Fetch.Response.text) @@ -92,12 +95,10 @@ module Api = { // |> then_(text => print_endline(text) |> resolve), // ) - let getDogsFetch = () => - Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") - |> Js.Promise.then_(Fetch.Response.text) - |> Js.Promise.then_(text => print_endline(text) |> Js.Promise.resolve) - - + // let getDogsFetch = () => + // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") + // |> Js.Promise.then_(Fetch.Response.text) + // |> Js.Promise.then_(text => print_endline(text) |> Js.Promise.resolve) // let tags: unit => Js.Promise.t> = () => // Endpoints.tags diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 333f586..e0bc5b4 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -2,6 +2,8 @@ import * as Curry from "rescript/lib/es6/curry.js"; import * as React from "react"; +import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; +import * as Caml_option from "rescript/lib/es6/caml_option.js"; import * as DockerListModuleCss from "./DockerList.module.css"; import * as DockerApi$MdworldHomeremoteDockerlist from "./DockerApi.bs.js"; @@ -14,11 +16,16 @@ function DockerList$DockerListMod(Props) { ) : "once"; var msg = "Click me " + times; var match = React.useState(function () { - return "https://images.dog.ceo/breeds/waterdog-spanish/20180714_201544.jpg"; + return []; }); var setImgs = match[1]; + var dialogEl = React.useRef(null); React.useEffect((function () { - DockerApi$MdworldHomeremoteDockerlist.Api.getDogsAndPrint(undefined); + DockerApi$MdworldHomeremoteDockerlist.Api.getDogsAndShow(function (_param) { + return Curry._1(setImgs, (function (_prev) { + return _param; + })); + }); }), []); var handleClick = function (_event) { @@ -30,24 +37,47 @@ function DockerList$DockerListMod(Props) { }; var handleClickFetch = function (_event) { console.log("handleClickFetch"); - + return Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { + input.showModal(); + + })); }; - return React.createElement("div", { - className: styles.root, - style: { - padding: "2px", - borderRadius: "2px" - } - }, "Docker List", React.createElement("button", { - className: styles.button, - onClick: handleClick - }, msg), React.createElement("button", { - className: styles.button, - onClick: handleClickFetch - }, "with Fetch Api"), React.createElement("img", { - className: styles.image, - src: match[0] + var closeDialog = function (_event) { + return Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { + input.close(); + })); + }; + var imgElems = match[0].map(function (url) { + return React.createElement("img", { + className: styles.image, + src: url + }); + }); + return React.createElement("div", { + className: styles.root + }, React.createElement("h1", undefined, "Docker List"), React.createElement("h1", undefined, "Docker List"), React.createElement("div", { + className: styles["button-container"] + }, React.createElement("button", { + className: styles.button + " " + styles.off, + onClick: handleClick + }, msg), React.createElement("button", { + className: styles.button + " " + styles.off, + onClick: handleClickFetch + }, "with Fetch Api"), React.createElement("button", { + className: styles.button + " " + styles.off, + onClick: handleClickFetch + }, React.createElement("h1", undefined, "Name"), React.createElement("p", undefined, "Off")), React.createElement("button", { + className: styles.button, + onClick: handleClickFetch + }, React.createElement("h1", undefined, "Bladiebla"), React.createElement("p", undefined, "Up 2 days")), React.createElement("button", { + className: styles.button + " " + styles.error, + onClick: handleClickFetch + }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked"))), imgElems, React.createElement("dialog", { + ref: dialogEl + }, "are you sure you want to start container SOMEConTAINEr", React.createElement("button", { + onClick: closeDialog + }, "close"))); } var DockerListMod = { diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 3d69acf..7158067 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -18,9 +18,11 @@ module DockerListMod = { } let msg = "Click me " ++ times - let (imgs, setImgs) = React.useState(_ => - "https://images.dog.ceo/breeds/waterdog-spanish/20180714_201544.jpg" - ) + let ( + imgs, + setImgs, + ) = React.useState(_ => // "https://images.dog.ceo/breeds/waterdog-spanish/20180714_201544.jpg" + []) // TODO extract modal // let (showModal, setShowModal) = React.useState(_ => false) @@ -29,7 +31,8 @@ module DockerListMod = { // Runs only once right after mounting the component React.useEffect0(() => { // Run effects - DockerApi.Api.getDogsAndPrint() + // DockerApi.Api.getDogsAndPrint() + DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) None // or Some(() => {}) }) @@ -50,6 +53,25 @@ module DockerListMod = { dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->close) } + // let imgElems = React.array([React.string("elem 1")]->Js.Array2.map(a =>

a

)) + // let imgElems = + // [React.string("elem 1"), React.string("elem 2")] + // ->Js.Array2.map(a =>

a

) + // ->React.array + //Js.log(result) + // let fooElems = React.array([React.string("foo")]); + let imgElems = + imgs + ->Js.Array2.map(url => + + ) + ->React.array + // open MaterialUi

@@ -83,18 +105,19 @@ module DockerListMod = {

{React.string("Borked")}

- + imgElems + // { // style={ReactDOM.Style.make(~height="100px")}> "are you sure you want to start container SOMEConTAINEr"->React.string } - +
} diff --git a/packages/dockerlist-client/src/DockerList.stories.tsx b/packages/dockerlist-client/src/DockerList.stories.tsx index ea6d027..0552428 100644 --- a/packages/dockerlist-client/src/DockerList.stories.tsx +++ b/packages/dockerlist-client/src/DockerList.stories.tsx @@ -21,11 +21,11 @@ export const Default = ({ width }: { width: number }): ReactNode => ( ); -// // See https://github.com/storybookjs/storybook/blob/next/addons/controls/README.md#knobs-to-manually-configured-args -// Default.args = { width: 600 }; -// Default.argTypes = { -// width: { control: { type: "range", min: 375, max: 775, step: "100" } }, -// }; +// See https://github.com/storybookjs/storybook/blob/next/addons/controls/README.md#knobs-to-manually-configured-args +Default.args = { width: 600 }; +Default.argTypes = { + width: { control: { type: "range", min: 375, max: 775, step: "100" } }, +}; // export const WithSquarePicture = (): ReactNode => ( // From 9ecb873e9c0cfa26cc764223dd0aba5b9069fc84 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sun, 16 May 2021 10:58:20 +0200 Subject: [PATCH 15/62] Fetch via SpecialApi --- packages/dockerlist-client/src/DockerApi.res | 64 ++++++++++++++++++- packages/dockerlist-client/src/DockerList.res | 26 +++++++- packages/dockerlist-client/src/SpecialApi.re | 38 +++++++++++ 3 files changed, 123 insertions(+), 5 deletions(-) create mode 100644 packages/dockerlist-client/src/SpecialApi.re diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res index 0432fa2..3315476 100644 --- a/packages/dockerlist-client/src/DockerApi.res +++ b/packages/dockerlist-client/src/DockerApi.res @@ -79,15 +79,73 @@ module Api = { let result = [1, 2, 3]->Js.Array2.map(a => a + 1)->Js.Array2.filter(a => mod(a, 2) == 0) Js.log(result) + // Working example of promise (with wildcards) + let myPromise = Js.Promise.make((~resolve, ~reject as _) => resolve(. 2)) + let _ = myPromise->Js.Promise.then_(value => { + Js.log2("prom1: ", value) + Js.Promise.resolve(value + 2) + }, _)->Js.Promise.then_(value => { + Js.log2("prom2: ", value) + Js.Promise.resolve(value + 3) + }, _)->Js.Promise.catch(err => { + Js.log2("Failure!!", err) + Js.Promise.resolve(-2) + }, _) + // Using Fetch API with bs-fetch bindings // let getDogsFetch = () => Js.Promise.( // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") // |> then_(Fetch.Response.text) // |> then_(text => print_endline(text) |> resolve), // ) - // let getDogsFetch = () => "https://dog.ceo/api/breeds/image/random/1" - // |> Fetch.fetch - // |> then_(Fetch.Response.text) + // Works: + // let getDogsFetch = () => + // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1")->Js.Promise.then_(value => { + // Js.log2("getDogsFetch: ", value) + // Js.Promise.resolve(value) + // }, _) + + // Note: https://kevanstannard.github.io/rescript-blog/fetch-json.html + // module Decode = { + // // open Json.Decode + // let catData = (data: Js.Json.t) => { + // file: Json.Decode.field("file", string, data), + // } + // } + + // Note: https://medium.com/@kevanstannard/how-to-fetch-json-data-with-reasonml-a4507ec945ad + let getDogsFetch = () => + "https://dog.ceo/api/breeds/image/random/1" + ->Fetch.fetch + // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") + // ->Js.Promise.then_(Fetch.Response.text) + ->Js.Promise.then_(value => { + Js.log2("getDogsFetch: ", value) + Js.Promise.resolve(value) + }, _) + + // type data = {message: array} + + // @scope("JSON") @val + // external parseDogResponse: string => data = "parse" + + // let result = parseDogResponse(`{"message": ["Luke", "Christine"]}`) + // let name1 = result.message[0] + + // let _ = + // getDogsFetch() + // |> Js.Promise.then_(Fetch.Response.json) + // |> Js.Promise.then_(x => Js.Promise.resolve(parseDogResponse)) + // // |> Js.Promise.then_(response => { + // // switch Js.Json.decodeObject(response) { + // // | Some(decodedRes) => Js.Promise.resolve(decodedRes) + // // | None => Js.Promise.resolve(Js.Dict.empty()) + // // } + // // }) + // |> Js.Promise.then_(response => { + // Js.log2("getDogsFetch2: ", response.message[0]) + // Js.Promise.resolve(response.message[0]) + // }) // let getDogsFetch = () => Js.Promise.( // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 7158067..467d304 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -44,9 +44,31 @@ module DockerListMod = { let handleClickFetch = _event => { Js.log("handleClickFetch") // TODO full screen modal to confirm the action when starting/stopping container - dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) + // dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) // .showModal(); - // TODO DockerApi.Api.getDogsFetch() + // Works: + let _ = DockerApi.Api.getDogsFetch() + + // Works: + // let _ = + // DockerApi.Api.getDogsFetch() + // |> Js.Promise.then_(Fetch.Response.text) + // |> Js.Promise.then_(text => print_endline("endline: " ++ text) |> Js.Promise.resolve) + // |> Js.Promise.then_( + // value => { + // Js.log2("handleClickFetch: ", value) + // Js.Promise.resolve(value) + // }, + // // value + // _, + // ) + + let _ = SpecialApi.testFunc() + |> Js.Promise.then_(imgList => { + setImgs(_prev => imgList) + Js.log2("SpecialApiTestFunc: ", imgList) + Js.Promise.resolve(imgList) + }) } let closeDialog = _event => { diff --git a/packages/dockerlist-client/src/SpecialApi.re b/packages/dockerlist-client/src/SpecialApi.re new file mode 100644 index 0000000..110760b --- /dev/null +++ b/packages/dockerlist-client/src/SpecialApi.re @@ -0,0 +1,38 @@ +[@bs.val] external fetch: string => Js.Promise.t('a) = "fetch"; + +// type state = +// | LoadingDogs +// | ErrorFetchingDogs +// | LoadedDogs(array(string)); + +let testFunc = () => Js.Promise.( + fetch("https://dog.ceo/api/breeds/image/random/3") + |> then_(response => response##json()) + |> then_(jsonResponse => { + // setState(_previousState => LoadedDogs(jsonResponse##message)); + // Js.log2("testFunc Done", jsonResponse##message) + // Js.Promise.resolve(Belt.List.toArray(jsonResponse##message)); + Js.Promise.resolve(jsonResponse##message); + }) + // TODO this catch may not resolve to (), it must resolve to an array. Not resolve([]), because that makes it a "list" + // |> catch(_err => { + // // setState(_previousState => ErrorFetchingDogs); + // Js.Promise.resolve(Js.Array.from([])); + // }) + // |> ignore + ); + +// let testFunc = () => +// fetch("https://dog.ceo/api/breeds/image/random/3") +// |> Js.Promise.then_(response => response##json()) +// |> Js.Promise.then_(jsonResponse => { +// // setState(_previousState => LoadedDogs(jsonResponse##message)); +// Js.log2("testFunc Done", jsonResponse##message) +// Js.Promise.resolve(jsonResponse##message); +// }) +// |> Js.Promise.catch(_err => { +// // setState(_previousState => ErrorFetchingDogs); +// Js.Promise.resolve([]); +// }) +// |> ignore + \ No newline at end of file From 8f8ee7e6773efc346b8b9c899a7b63aa6b1600f9 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sun, 16 May 2021 12:26:02 +0200 Subject: [PATCH 16/62] Fix Fetch call --- packages/dockerlist-client/src/DockerList.res | 2 +- .../src/{SpecialApi.re => ReasonApi.re} | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) rename packages/dockerlist-client/src/{SpecialApi.re => ReasonApi.re} (73%) diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 467d304..859a809 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -63,7 +63,7 @@ module DockerListMod = { // _, // ) - let _ = SpecialApi.testFunc() + let _ = ReasonApi.fetchDogs() |> Js.Promise.then_(imgList => { setImgs(_prev => imgList) Js.log2("SpecialApiTestFunc: ", imgList) diff --git a/packages/dockerlist-client/src/SpecialApi.re b/packages/dockerlist-client/src/ReasonApi.re similarity index 73% rename from packages/dockerlist-client/src/SpecialApi.re rename to packages/dockerlist-client/src/ReasonApi.re index 110760b..2a77d67 100644 --- a/packages/dockerlist-client/src/SpecialApi.re +++ b/packages/dockerlist-client/src/ReasonApi.re @@ -5,7 +5,12 @@ // | ErrorFetchingDogs // | LoadedDogs(array(string)); -let testFunc = () => Js.Promise.( +let myFunc = (): Js.Promise.t('array) => Js.Promise.resolve(["a"]) + +let fetchDogs = () => Js.Promise.( + // "https://dog.ceo/api/breeds/image/random/3" + // -> + // fetch fetch("https://dog.ceo/api/breeds/image/random/3") |> then_(response => response##json()) |> then_(jsonResponse => { @@ -14,11 +19,11 @@ let testFunc = () => Js.Promise.( // Js.Promise.resolve(Belt.List.toArray(jsonResponse##message)); Js.Promise.resolve(jsonResponse##message); }) - // TODO this catch may not resolve to (), it must resolve to an array. Not resolve([]), because that makes it a "list" - // |> catch(_err => { - // // setState(_previousState => ErrorFetchingDogs); - // Js.Promise.resolve(Js.Array.from([])); - // }) + |> catch(_err => { + // setState(_previousState => ErrorFetchingDogs); + // TODO In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array + Js.Promise.resolve([||]); + }) // |> ignore ); From 48ec68e15299a545ba4e2c7e801d7427ecd23aa4 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sun, 16 May 2021 12:28:53 +0200 Subject: [PATCH 17/62] Clean up --- packages/dockerlist-client/.bsb.lock | 2 +- packages/dockerlist-client/README.md | 1 + .../dockerlist-client/src/DockerApi.bs.js | 31 ++++++++++++++++++- .../dockerlist-client/src/DockerList.bs.js | 12 +++++-- .../dockerlist-client/src/ReasonApi.bs.js | 26 ++++++++++++++++ 5 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 packages/dockerlist-client/src/ReasonApi.bs.js diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock index 4bde911..a19ff3d 100644 --- a/packages/dockerlist-client/.bsb.lock +++ b/packages/dockerlist-client/.bsb.lock @@ -1 +1 @@ -91097 \ No newline at end of file +147857 \ No newline at end of file diff --git a/packages/dockerlist-client/README.md b/packages/dockerlist-client/README.md index 1d6bfa6..528e0b4 100644 --- a/packages/dockerlist-client/README.md +++ b/packages/dockerlist-client/README.md @@ -31,6 +31,7 @@ TODO For now workflow is: start storybook and in other terminal in /packages/doc ## TODO +- For now XHR works in Rescript, but Fetch only works in Reason files. Mainly decoding the JSON fails, even with "@glennsl/bs-json" - Material UI bindings seem very unstable: https://jsiebern.github.io/bs-material-ui Adding it breaks the build sometimes - Add Reason/Rescript - Clean up old Elm deps from package.json diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js index 37a0a39..5baadb4 100644 --- a/packages/dockerlist-client/src/DockerApi.bs.js +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -47,11 +47,40 @@ var result = [ console.log(result); +var myPromise = new Promise((function (resolve, param) { + return resolve(2); + })); + +var __x = myPromise.then(function (value) { + console.log("prom1: ", value); + return Promise.resolve(value + 2 | 0); + }); + +var __x$1 = __x.then(function (value) { + console.log("prom2: ", value); + return Promise.resolve(value + 3 | 0); + }); + +__x$1.catch(function (err) { + console.log("Failure!!", err); + return Promise.resolve(-2); + }); + +function getDogsFetch(param) { + var __x = fetch("https://dog.ceo/api/breeds/image/random/1"); + return __x.then(function (value) { + console.log("getDogsFetch: ", value); + return Promise.resolve(value); + }); +} + var Api = { getDogs: getDogs, getDogsAndPrint: getDogsAndPrint, getDogsAndShow: getDogsAndShow, - result: result + result: result, + myPromise: myPromise, + getDogsFetch: getDogsFetch }; export { diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index e0bc5b4..6bed376 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -6,6 +6,7 @@ import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; import * as Caml_option from "rescript/lib/es6/caml_option.js"; import * as DockerListModuleCss from "./DockerList.module.css"; import * as DockerApi$MdworldHomeremoteDockerlist from "./DockerApi.bs.js"; +import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; var styles = DockerListModuleCss; @@ -37,10 +38,15 @@ function DockerList$DockerListMod(Props) { }; var handleClickFetch = function (_event) { console.log("handleClickFetch"); - return Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { - input.showModal(); - + DockerApi$MdworldHomeremoteDockerlist.Api.getDogsFetch(undefined); + ReasonApi$MdworldHomeremoteDockerlist.fetchDogs(undefined).then(function (imgList) { + Curry._1(setImgs, (function (_prev) { + return imgList; })); + console.log("SpecialApiTestFunc: ", imgList); + return Promise.resolve(imgList); + }); + }; var closeDialog = function (_event) { return Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { diff --git a/packages/dockerlist-client/src/ReasonApi.bs.js b/packages/dockerlist-client/src/ReasonApi.bs.js new file mode 100644 index 0000000..88b1d91 --- /dev/null +++ b/packages/dockerlist-client/src/ReasonApi.bs.js @@ -0,0 +1,26 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + + +function myFunc(param) { + return Promise.resolve({ + hd: "a", + tl: /* [] */0 + }); +} + +function fetchDogs(param) { + return fetch("https://dog.ceo/api/breeds/image/random/3").then(function (response) { + return response.json(); + }).then(function (jsonResponse) { + return Promise.resolve(jsonResponse.message); + }).catch(function (_err) { + return Promise.resolve([]); + }); +} + +export { + myFunc , + fetchDogs , + +} +/* No side effect */ From 71d3efdeab90ce511a6bc522efb8451fbec4105a Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sun, 16 May 2021 12:49:30 +0200 Subject: [PATCH 18/62] Show all docker containers as buttons --- .../dockerlist-client/src/DockerList.bs.js | 28 +++++- packages/dockerlist-client/src/DockerList.res | 53 +++++++--- .../dockerlist-client/src/ReasonApi.bs.js | 11 +++ packages/dockerlist-client/src/ReasonApi.re | 17 ++++ .../dockerlist-server/lib/DockerListAPI.d.ts | 14 +++ .../dockerlist-server/lib/DockerListAPI.js | 96 +++++++++++++++++++ storybookMockServer.ts | 13 +++ 7 files changed, 219 insertions(+), 13 deletions(-) create mode 100644 packages/dockerlist-server/lib/DockerListAPI.d.ts create mode 100644 packages/dockerlist-server/lib/DockerListAPI.js diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 6bed376..d0f0923 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -20,6 +20,10 @@ function DockerList$DockerListMod(Props) { return []; }); var setImgs = match[1]; + var match$1 = React.useState(function () { + return []; + }); + var setContainers = match$1[1]; var dialogEl = React.useRef(null); React.useEffect((function () { DockerApi$MdworldHomeremoteDockerlist.Api.getDogsAndShow(function (_param) { @@ -27,6 +31,13 @@ function DockerList$DockerListMod(Props) { return _param; })); }); + ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { + Curry._1(setContainers, (function (_prev) { + return containerList; + })); + console.log("SpecialApiTestFunc: ", containerList); + return Promise.resolve(containerList); + }); }), []); var handleClick = function (_event) { @@ -46,6 +57,13 @@ function DockerList$DockerListMod(Props) { console.log("SpecialApiTestFunc: ", imgList); return Promise.resolve(imgList); }); + ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { + Curry._1(setContainers, (function (_prev) { + return containerList; + })); + console.log("SpecialApiTestFunc: ", containerList); + return Promise.resolve(containerList); + }); }; var closeDialog = function (_event) { @@ -60,6 +78,14 @@ function DockerList$DockerListMod(Props) { src: url }); }); + var dockerContainersElems = match$1[0].map(function (dockerContainer) { + var className = styles.button + " " + ( + dockerContainer.State !== "running" ? styles.off : "" + ); + return React.createElement("button", { + className: className + }, React.createElement("p", undefined, dockerContainer.Names), React.createElement("p", undefined, dockerContainer.Status)); + }); return React.createElement("div", { className: styles.root }, React.createElement("h1", undefined, "Docker List"), React.createElement("h1", undefined, "Docker List"), React.createElement("div", { @@ -79,7 +105,7 @@ function DockerList$DockerListMod(Props) { }, React.createElement("h1", undefined, "Bladiebla"), React.createElement("p", undefined, "Up 2 days")), React.createElement("button", { className: styles.button + " " + styles.error, onClick: handleClickFetch - }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked"))), imgElems, React.createElement("dialog", { + }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked"))), dockerContainersElems, React.createElement("div", undefined, imgElems), React.createElement("dialog", { ref: dialogEl }, "are you sure you want to start container SOMEConTAINEr", React.createElement("button", { onClick: closeDialog diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 859a809..bfd08b9 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -18,11 +18,9 @@ module DockerListMod = { } let msg = "Click me " ++ times - let ( - imgs, - setImgs, - ) = React.useState(_ => // "https://images.dog.ceo/breeds/waterdog-spanish/20180714_201544.jpg" - []) + let (imgs, setImgs) = React.useState(_ => []) + + let (containers, setContainers) = React.useState(_ => []) // TODO extract modal // let (showModal, setShowModal) = React.useState(_ => false) @@ -33,6 +31,12 @@ module DockerListMod = { // Run effects // DockerApi.Api.getDogsAndPrint() DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) + let _ = ReasonApi.getDockerList() |> Js.Promise.then_(containerList => { + setContainers(_prev => containerList) + Js.log2("SpecialApiTestFunc: ", containerList) + Js.Promise.resolve(containerList) + }) + None // or Some(() => {}) }) @@ -63,12 +67,17 @@ module DockerListMod = { // _, // ) - let _ = ReasonApi.fetchDogs() - |> Js.Promise.then_(imgList => { - setImgs(_prev => imgList) - Js.log2("SpecialApiTestFunc: ", imgList) - Js.Promise.resolve(imgList) - }) + let _ = ReasonApi.fetchDogs() |> Js.Promise.then_(imgList => { + setImgs(_prev => imgList) + Js.log2("SpecialApiTestFunc: ", imgList) + Js.Promise.resolve(imgList) + }) + + let _ = ReasonApi.getDockerList() |> Js.Promise.then_(containerList => { + setContainers(_prev => containerList) + Js.log2("SpecialApiTestFunc: ", containerList) + Js.Promise.resolve(containerList) + }) } let closeDialog = _event => { @@ -94,6 +103,25 @@ module DockerListMod = { ) ->React.array + let dockerContainersElems = + containers + ->Js.Array2.map(dockerContainer => { + let className = + styles["button"] ++ + " " ++ if dockerContainer["State"] != "running" { + styles["off"] + } else { + "" + } + + + }) + ->React.array + // open MaterialUi

@@ -127,7 +155,8 @@ module DockerListMod = {

{React.string("Borked")}

- imgElems + dockerContainersElems +
imgElems
// Js.Promise.( // |> ignore ); +let getDockerList = () => Js.Promise.( + "http://localhost:3100/api/dockerlist" + -> + fetch + // fetch("http://localhost:3100/api/dockerlist") + |> then_(response => response##json()) + |> then_(jsonResponse => { + Js.Promise.resolve(jsonResponse##containers); + }) + |> catch(_err => { + // Note: In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array + Js.Promise.resolve([||]); + }) + // |> ignore +); + + // let testFunc = () => // fetch("https://dog.ceo/api/breeds/image/random/3") // |> Js.Promise.then_(response => response##json()) diff --git a/packages/dockerlist-server/lib/DockerListAPI.d.ts b/packages/dockerlist-server/lib/DockerListAPI.d.ts new file mode 100644 index 0000000..98a3d74 --- /dev/null +++ b/packages/dockerlist-server/lib/DockerListAPI.d.ts @@ -0,0 +1,14 @@ +interface DockerContainerInfo { + Id: string; + Names: string[]; + State: string; + Status: string; +} +export interface DockerListResponse { + status: "received"; + containers?: DockerContainerInfo[]; +} +export declare const getDockerList: () => Promise; +export declare const startContainer: (containerId: string) => Promise; +export declare const stopContainer: (containerId: string) => Promise; +export {}; diff --git a/packages/dockerlist-server/lib/DockerListAPI.js b/packages/dockerlist-server/lib/DockerListAPI.js new file mode 100644 index 0000000..cd27c39 --- /dev/null +++ b/packages/dockerlist-server/lib/DockerListAPI.js @@ -0,0 +1,96 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +exports.stopContainer = exports.startContainer = exports.getDockerList = void 0; +var got_1 = require("got"); +var pickAndMapContainerProps = function (_a) { + var Id = _a.Id, Names = _a.Names, State = _a.State, Status = _a.Status; + return ({ Id: Id, Names: Names, State: State, Status: Status }); +}; +// Export for use by other apps +exports.getDockerList = function () { return __awaiter(void 0, void 0, void 0, function () { + var result; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, got_1["default"]("http:/v1.41/containers/json?all=true", { + socketPath: "/var/run/docker.sock" + }).json()]; + case 1: + result = _a.sent(); + // console.log(result); + return [2 /*return*/, { + status: "received", + containers: result.map(pickAndMapContainerProps) + }]; + } + }); +}); }; +exports.startContainer = function (containerId) { return __awaiter(void 0, void 0, void 0, function () { + var result; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, got_1["default"]("http://localhost/v1.41/containers/" + containerId + "/start", { + method: "POST", + socketPath: "/var/run/docker.sock" + }).json()]; + case 1: + result = _a.sent(); + console.log(result); + return [2 /*return*/, { + status: "received" + }]; + } + }); +}); }; +exports.stopContainer = function (containerId) { return __awaiter(void 0, void 0, void 0, function () { + var result; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, got_1["default"]("http://localhost/v1.41/containers/" + containerId + "/stop", { + method: "POST", + socketPath: "/var/run/docker.sock" + }).json()]; + case 1: + result = _a.sent(); + console.log(result); + return [2 /*return*/, { + status: "received" + }]; + } + }); +}); }; diff --git a/storybookMockServer.ts b/storybookMockServer.ts index fdda5e8..5033474 100644 --- a/storybookMockServer.ts +++ b/storybookMockServer.ts @@ -3,6 +3,7 @@ import { ChannelName, NowPlayingResponse, } from "./packages/streamplayer-server/lib/StreamPlayerAPI"; +import { getDockerList } from "./packages/dockerlist-server/lib/DockerListAPI"; import express, { Request, Response } from "express"; const app = express(); @@ -90,6 +91,18 @@ const startServer = (corsMode: CORS_MODE): void => { } }); + app.get("/api/dockerlist", async (req, res) => { + logRequest(req); + setCorsHeaders(corsMode, res); + try { + const response = await getDockerList(); + res.send(response); + } catch (error) { + console.log(error); + res.sendStatus(500); + } + }); + app.use(express.static("mocks/public")); app.listen(port, () => From 03cc32e303b9113f068915c80fc4d59434c83fda Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sun, 16 May 2021 13:00:47 +0200 Subject: [PATCH 19/62] Restyle --- .../dockerlist-client/src/DockerList.bs.js | 23 +++++------ .../src/DockerList.module.css | 6 ++- packages/dockerlist-client/src/DockerList.res | 41 +++++++++---------- 3 files changed, 34 insertions(+), 36 deletions(-) diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index d0f0923..b78d601 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -35,7 +35,6 @@ function DockerList$DockerListMod(Props) { Curry._1(setContainers, (function (_prev) { return containerList; })); - console.log("SpecialApiTestFunc: ", containerList); return Promise.resolve(containerList); }); @@ -50,18 +49,10 @@ function DockerList$DockerListMod(Props) { var handleClickFetch = function (_event) { console.log("handleClickFetch"); DockerApi$MdworldHomeremoteDockerlist.Api.getDogsFetch(undefined); - ReasonApi$MdworldHomeremoteDockerlist.fetchDogs(undefined).then(function (imgList) { - Curry._1(setImgs, (function (_prev) { - return imgList; - })); - console.log("SpecialApiTestFunc: ", imgList); - return Promise.resolve(imgList); - }); ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; })); - console.log("SpecialApiTestFunc: ", containerList); return Promise.resolve(containerList); }); @@ -79,17 +70,23 @@ function DockerList$DockerListMod(Props) { }); }); var dockerContainersElems = match$1[0].map(function (dockerContainer) { + var state = dockerContainer.State; var className = styles.button + " " + ( - dockerContainer.State !== "running" ? styles.off : "" + state !== "running" ? styles.off : "" ); return React.createElement("button", { className: className - }, React.createElement("p", undefined, dockerContainer.Names), React.createElement("p", undefined, dockerContainer.Status)); + }, React.createElement("h1", undefined, dockerContainer.Names), React.createElement("p", undefined, dockerContainer.Status)); }); return React.createElement("div", { className: styles.root - }, React.createElement("h1", undefined, "Docker List"), React.createElement("h1", undefined, "Docker List"), React.createElement("div", { + }, React.createElement("div", { className: styles["button-container"] + }, dockerContainersElems), React.createElement("div", { + className: styles["button-container"], + style: { + marginTop: "2rem" + } }, React.createElement("button", { className: styles.button + " " + styles.off, onClick: handleClick @@ -105,7 +102,7 @@ function DockerList$DockerListMod(Props) { }, React.createElement("h1", undefined, "Bladiebla"), React.createElement("p", undefined, "Up 2 days")), React.createElement("button", { className: styles.button + " " + styles.error, onClick: handleClickFetch - }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked"))), dockerContainersElems, React.createElement("div", undefined, imgElems), React.createElement("dialog", { + }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked"))), React.createElement("div", undefined, imgElems), React.createElement("dialog", { ref: dialogEl }, "are you sure you want to start container SOMEConTAINEr", React.createElement("button", { onClick: closeDialog diff --git a/packages/dockerlist-client/src/DockerList.module.css b/packages/dockerlist-client/src/DockerList.module.css index ffd6307..e260cea 100644 --- a/packages/dockerlist-client/src/DockerList.module.css +++ b/packages/dockerlist-client/src/DockerList.module.css @@ -15,6 +15,7 @@ h1 { } .button { + flex-grow: 1; border: none; border-radius: 4px; background-color: #4caf50; /* #1976d2; */ @@ -22,7 +23,8 @@ h1 { color: #fff; box-shadow: 0px 3px 1px -2px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%), 0px 1px 5px 0px rgb(0 0 0 / 12%); - font-size: 0.93rem; + /* font-size: 0.93rem; */ + font-size: 0.7rem; padding: 8px 22px; transition: background-color 200ms; text-transform: uppercase; @@ -35,7 +37,7 @@ h1 { } .button > h1 { - font-size: 1.5rem; + font-size: 0.8rem; } .off { diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index bfd08b9..a6107f4 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -33,7 +33,7 @@ module DockerListMod = { DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) let _ = ReasonApi.getDockerList() |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) - Js.log2("SpecialApiTestFunc: ", containerList) + // Js.log2("SpecialApiTestFunc: ", containerList) Js.Promise.resolve(containerList) }) @@ -67,15 +67,15 @@ module DockerListMod = { // _, // ) - let _ = ReasonApi.fetchDogs() |> Js.Promise.then_(imgList => { - setImgs(_prev => imgList) - Js.log2("SpecialApiTestFunc: ", imgList) - Js.Promise.resolve(imgList) - }) + // let _ = ReasonApi.fetchDogs() |> Js.Promise.then_(imgList => { + // setImgs(_prev => imgList) + // Js.log2("SpecialApiTestFunc: ", imgList) + // Js.Promise.resolve(imgList) + // }) let _ = ReasonApi.getDockerList() |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) - Js.log2("SpecialApiTestFunc: ", containerList) + // Js.log2("SpecialApiTestFunc: ", containerList) Js.Promise.resolve(containerList) }) } @@ -106,33 +106,33 @@ module DockerListMod = { let dockerContainersElems = containers ->Js.Array2.map(dockerContainer => { + let state = dockerContainer["State"] let className = styles["button"] ++ - " " ++ if dockerContainer["State"] != "running" { + " " ++ if state != "running" { styles["off"] } else { "" } }) ->React.array // open MaterialUi
-

- { - // {"Headline"->React.string} - // {"Some example text"->React.string} - React.string("Docker List") - } -

-

{"Docker List"->React.string}

-
+ //

+ // { + // // {"Headline"->React.string} + // // {"Some example text"->React.string} + // React.string("Docker List") + // } + //

+ //

{"Docker List"->React.string}

+
dockerContainersElems
+
@@ -155,7 +155,6 @@ module DockerListMod = {

{React.string("Borked")}

- dockerContainersElems
imgElems
// Date: Sun, 16 May 2021 13:08:52 +0200 Subject: [PATCH 20/62] Disable unused code --- .../dockerlist-client/src/DockerList.bs.js | 50 ++--------- packages/dockerlist-client/src/DockerList.res | 85 ++++++++++--------- .../src/DockerList.stories.tsx | 2 +- 3 files changed, 52 insertions(+), 85 deletions(-) diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index b78d601..4d2f159 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -5,32 +5,17 @@ import * as React from "react"; import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; import * as Caml_option from "rescript/lib/es6/caml_option.js"; import * as DockerListModuleCss from "./DockerList.module.css"; -import * as DockerApi$MdworldHomeremoteDockerlist from "./DockerApi.bs.js"; import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; var styles = DockerListModuleCss; function DockerList$DockerListMod(Props) { - var count = Props.count; - var times = count !== 1 ? ( - count !== 2 ? String(count) + " times" : "twice" - ) : "once"; - var msg = "Click me " + times; var match = React.useState(function () { return []; }); - var setImgs = match[1]; - var match$1 = React.useState(function () { - return []; - }); - var setContainers = match$1[1]; + var setContainers = match[1]; var dialogEl = React.useRef(null); React.useEffect((function () { - DockerApi$MdworldHomeremoteDockerlist.Api.getDogsAndShow(function (_param) { - return Curry._1(setImgs, (function (_prev) { - return _param; - })); - }); ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; @@ -39,16 +24,12 @@ function DockerList$DockerListMod(Props) { }); }), []); - var handleClick = function (_event) { - return DockerApi$MdworldHomeremoteDockerlist.Api.getDogsAndShow(function (_param) { - return Curry._1(setImgs, (function (_prev) { - return _param; - })); - }); - }; var handleClickFetch = function (_event) { console.log("handleClickFetch"); - DockerApi$MdworldHomeremoteDockerlist.Api.getDogsFetch(undefined); + Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { + input.showModal(); + + })); ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; @@ -63,13 +44,7 @@ function DockerList$DockerListMod(Props) { })); }; - var imgElems = match[0].map(function (url) { - return React.createElement("img", { - className: styles.image, - src: url - }); - }); - var dockerContainersElems = match$1[0].map(function (dockerContainer) { + var dockerContainersElems = match[0].map(function (dockerContainer) { var state = dockerContainer.State; var className = styles.button + " " + ( state !== "running" ? styles.off : "" @@ -89,20 +64,11 @@ function DockerList$DockerListMod(Props) { } }, React.createElement("button", { className: styles.button + " " + styles.off, - onClick: handleClick - }, msg), React.createElement("button", { - className: styles.button + " " + styles.off, - onClick: handleClickFetch - }, "with Fetch Api"), React.createElement("button", { - className: styles.button + " " + styles.off, - onClick: handleClickFetch - }, React.createElement("h1", undefined, "Name"), React.createElement("p", undefined, "Off")), React.createElement("button", { - className: styles.button, onClick: handleClickFetch - }, React.createElement("h1", undefined, "Bladiebla"), React.createElement("p", undefined, "Up 2 days")), React.createElement("button", { + }, "modal"), React.createElement("button", { className: styles.button + " " + styles.error, onClick: handleClickFetch - }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked"))), React.createElement("div", undefined, imgElems), React.createElement("dialog", { + }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked"))), React.createElement("dialog", { ref: dialogEl }, "are you sure you want to start container SOMEConTAINEr", React.createElement("button", { onClick: closeDialog diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index a6107f4..4437c44 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -10,15 +10,16 @@ module DockerListMod = { @react.component - let make = (~count: int) => { - let times = switch count { - | 1 => "once" - | 2 => "twice" - | n => Belt.Int.toString(n) ++ " times" - } - let msg = "Click me " ++ times + // Pass props like: let make = (~count: int) => { + let make = () => { + // let times = switch count { + // | 1 => "once" + // | 2 => "twice" + // | n => Belt.Int.toString(n) ++ " times" + // } + // let msg = "Click me " ++ times - let (imgs, setImgs) = React.useState(_ => []) + // let (imgs, setImgs) = React.useState(_ => []) let (containers, setContainers) = React.useState(_ => []) @@ -30,7 +31,7 @@ module DockerListMod = { React.useEffect0(() => { // Run effects // DockerApi.Api.getDogsAndPrint() - DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) + // DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) let _ = ReasonApi.getDockerList() |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) // Js.log2("SpecialApiTestFunc: ", containerList) @@ -40,18 +41,18 @@ module DockerListMod = { None // or Some(() => {}) }) - let handleClick = _event => { - // DockerApi.Api.getDogsAndPrint() - DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) - } + // let handleClick = _event => { + // // DockerApi.Api.getDogsAndPrint() + // DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) + // } let handleClickFetch = _event => { Js.log("handleClickFetch") // TODO full screen modal to confirm the action when starting/stopping container - // dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) - // .showModal(); + dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) + // Works: - let _ = DockerApi.Api.getDogsFetch() + // let _ = DockerApi.Api.getDogsFetch() // Works: // let _ = @@ -91,17 +92,17 @@ module DockerListMod = { // ->React.array //Js.log(result) // let fooElems = React.array([React.string("foo")]); - let imgElems = - imgs - ->Js.Array2.map(url => - - ) - ->React.array + // let imgElems = + // imgs + // ->Js.Array2.map(url => + // + // ) + // ->React.array let dockerContainersElems = containers @@ -133,29 +134,29 @@ module DockerListMod = { //

{"Docker List"->React.string}

dockerContainersElems
- - + // - + // + //
-
imgElems
+ //
imgElems
// ( - + ); From 3af53c94a8675f99e40c704ca73dc3b0fc3b3daa Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sun, 16 May 2021 16:01:22 +0200 Subject: [PATCH 21/62] Add ConfirmAction --- .../dockerlist-client/src/ConfirmAction.bs.js | 54 +++++++++++++++++++ .../dockerlist-client/src/ConfirmAction.res | 42 +++++++++++++++ .../dockerlist-client/src/DockerList.bs.js | 12 +++-- packages/dockerlist-client/src/DockerList.res | 12 +++-- 4 files changed, 111 insertions(+), 9 deletions(-) create mode 100644 packages/dockerlist-client/src/ConfirmAction.bs.js create mode 100644 packages/dockerlist-client/src/ConfirmAction.res diff --git a/packages/dockerlist-client/src/ConfirmAction.bs.js b/packages/dockerlist-client/src/ConfirmAction.bs.js new file mode 100644 index 0000000..0e48798 --- /dev/null +++ b/packages/dockerlist-client/src/ConfirmAction.bs.js @@ -0,0 +1,54 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + +import * as React from "react"; +import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; +import * as Caml_option from "rescript/lib/es6/caml_option.js"; +import * as DockerListModuleCss from "./DockerList.module.css"; + +var styles = DockerListModuleCss; + +function ConfirmAction(Props) { + var onClick = Props.onClick; + var question = Props.question; + var classNameOpt = Props.className; + var confirmButtonColorOpt = Props.confirmButtonColor; + var className = classNameOpt !== undefined ? classNameOpt : ""; + var confirmButtonColor = confirmButtonColorOpt !== undefined ? confirmButtonColorOpt : ""; + var dialogEl = React.useRef(null); + var openDialog = function (_event) { + return Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { + input.showModal(); + + })); + }; + var closeDialog = function (_event) { + return Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { + input.close(); + + })); + }; + return React.createElement(React.Fragment, undefined, React.createElement("button", { + className: className, + onClick: openDialog + }, "modal"), React.createElement("dialog", { + ref: dialogEl + }, question, React.createElement("button", { + className: styles.button + " " + styles.off, + onClick: closeDialog + }, "cancel"), React.createElement("button", { + className: styles.button, + style: { + backgroundColor: confirmButtonColor + }, + onClick: onClick + }, "OK"))); +} + +var make = ConfirmAction; + +export { + styles , + make , + +} +/* styles Not a pure module */ diff --git a/packages/dockerlist-client/src/ConfirmAction.res b/packages/dockerlist-client/src/ConfirmAction.res new file mode 100644 index 0000000..e242ef8 --- /dev/null +++ b/packages/dockerlist-client/src/ConfirmAction.res @@ -0,0 +1,42 @@ +// {..} means we are handling a JS object with an unknown +// set of attributes +@module external styles: {..} = "./DockerList.module.css" + +@send external showModal: Dom.element => unit = "showModal" +@send external close: Dom.element => unit = "close" + +// TODO rename to ButtonWithConfirm / ConfirmingButton + +// Pass props like: let make = (~count: int) => { +@react.component +let make = ( + ~onClick: ReactEvent.Mouse.t => unit, + ~question: string, + ~className: string="", + ~confirmButtonColor: string="", +) => { + let dialogEl = React.useRef(Js.Nullable.null) + let openDialog = _event => { + // Js.log("handleClickFetch") + // TODO full screen modal to confirm the action when starting/stopping container + dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) + } + + let closeDialog = _event => { + dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->close) + } + + <> + + + {question->React.string} + + + + +} diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 4d2f159..71e23a9 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -6,6 +6,7 @@ import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; import * as Caml_option from "rescript/lib/es6/caml_option.js"; import * as DockerListModuleCss from "./DockerList.module.css"; import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; +import * as ConfirmAction$MdworldHomeremoteDockerlist from "./ConfirmAction.bs.js"; var styles = DockerListModuleCss; @@ -26,10 +27,6 @@ function DockerList$DockerListMod(Props) { }), []); var handleClickFetch = function (_event) { console.log("handleClickFetch"); - Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { - input.showModal(); - - })); ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; @@ -57,7 +54,12 @@ function DockerList$DockerListMod(Props) { className: styles.root }, React.createElement("div", { className: styles["button-container"] - }, dockerContainersElems), React.createElement("div", { + }, React.createElement(ConfirmAction$MdworldHomeremoteDockerlist.make, { + onClick: handleClickFetch, + question: "turn on ??", + className: styles.button, + confirmButtonColor: "blue" + }), dockerContainersElems), React.createElement("div", { className: styles["button-container"], style: { marginTop: "2rem" diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 4437c44..a549dde 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -9,8 +9,8 @@ @send external close: Dom.element => unit = "close" module DockerListMod = { - @react.component // Pass props like: let make = (~count: int) => { + @react.component let make = () => { // let times = switch count { // | 1 => "once" @@ -49,7 +49,7 @@ module DockerListMod = { let handleClickFetch = _event => { Js.log("handleClickFetch") // TODO full screen modal to confirm the action when starting/stopping container - dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) + // dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) // Works: // let _ = DockerApi.Api.getDogsFetch() @@ -132,8 +132,12 @@ module DockerListMod = { // } // //

{"Docker List"->React.string}

-
dockerContainersElems
-
+
+ + dockerContainersElems +
+
// From 6094fbd1b0f78bcf280080833546b4eb0d2d0c54 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sun, 16 May 2021 19:25:59 +0200 Subject: [PATCH 22/62] Style modal --- .../dockerlist-client/src/ConfirmAction.bs.js | 27 ++++---- .../dockerlist-client/src/ConfirmAction.res | 26 +++++--- .../dockerlist-client/src/DockerList.bs.js | 21 ++++--- .../src/DockerList.module.css | 61 ++++++++++++------- packages/dockerlist-client/src/DockerList.res | 27 +++++--- 5 files changed, 101 insertions(+), 61 deletions(-) diff --git a/packages/dockerlist-client/src/ConfirmAction.bs.js b/packages/dockerlist-client/src/ConfirmAction.bs.js index 0e48798..cb56099 100644 --- a/packages/dockerlist-client/src/ConfirmAction.bs.js +++ b/packages/dockerlist-client/src/ConfirmAction.bs.js @@ -1,5 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +import * as Curry from "rescript/lib/es6/curry.js"; import * as React from "react"; import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; import * as Caml_option from "rescript/lib/es6/caml_option.js"; @@ -11,9 +12,8 @@ function ConfirmAction(Props) { var onClick = Props.onClick; var question = Props.question; var classNameOpt = Props.className; - var confirmButtonColorOpt = Props.confirmButtonColor; + var confirmButtonStyle = Props.confirmButtonStyle; var className = classNameOpt !== undefined ? classNameOpt : ""; - var confirmButtonColor = confirmButtonColorOpt !== undefined ? confirmButtonColorOpt : ""; var dialogEl = React.useRef(null); var openDialog = function (_event) { return Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { @@ -32,16 +32,19 @@ function ConfirmAction(Props) { onClick: openDialog }, "modal"), React.createElement("dialog", { ref: dialogEl - }, question, React.createElement("button", { - className: styles.button + " " + styles.off, - onClick: closeDialog - }, "cancel"), React.createElement("button", { - className: styles.button, - style: { - backgroundColor: confirmButtonColor - }, - onClick: onClick - }, "OK"))); + }, React.createElement("p", undefined, question), React.createElement("div", { + className: styles["dialog-actions"] + }, React.createElement("button", { + className: styles["mui-button"], + onClick: closeDialog + }, "cancel"), React.createElement("button", { + className: styles["mui-button"], + style: confirmButtonStyle, + onClick: (function ($$event) { + Curry._1(onClick, $$event); + return closeDialog(undefined); + }) + }, "OK")))); } var make = ConfirmAction; diff --git a/packages/dockerlist-client/src/ConfirmAction.res b/packages/dockerlist-client/src/ConfirmAction.res index e242ef8..4ebaeb1 100644 --- a/packages/dockerlist-client/src/ConfirmAction.res +++ b/packages/dockerlist-client/src/ConfirmAction.res @@ -13,7 +13,7 @@ let make = ( ~onClick: ReactEvent.Mouse.t => unit, ~question: string, ~className: string="", - ~confirmButtonColor: string="", + ~confirmButtonStyle: ReactDOM.Style.t, ) => { let dialogEl = React.useRef(Js.Nullable.null) let openDialog = _event => { @@ -29,14 +29,22 @@ let make = ( <> - {question->React.string} - - +

{question->React.string}

+
+ + +
} diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 71e23a9..8455e94 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -43,8 +43,8 @@ function DockerList$DockerListMod(Props) { }; var dockerContainersElems = match[0].map(function (dockerContainer) { var state = dockerContainer.State; - var className = styles.button + " " + ( - state !== "running" ? styles.off : "" + var className = styles["button-list-item"] + " " + styles["mui-button"] + " " + ( + state === "running" ? styles["button-success"] : "" ); return React.createElement("button", { className: className @@ -53,22 +53,25 @@ function DockerList$DockerListMod(Props) { return React.createElement("div", { className: styles.root }, React.createElement("div", { - className: styles["button-container"] + className: styles["button-list"] }, React.createElement(ConfirmAction$MdworldHomeremoteDockerlist.make, { onClick: handleClickFetch, - question: "turn on ??", - className: styles.button, - confirmButtonColor: "blue" + question: "turn on ?? such a long text oh wow so long wow wow wow wow wow", + className: styles["button-list-item"] + " " + styles["mui-button"], + confirmButtonStyle: { + backgroundColor: "darkblue", + color: "white" + } }), dockerContainersElems), React.createElement("div", { - className: styles["button-container"], + className: styles["button-list"], style: { marginTop: "2rem" } }, React.createElement("button", { - className: styles.button + " " + styles.off, + className: styles["mui-button"], onClick: handleClickFetch }, "modal"), React.createElement("button", { - className: styles.button + " " + styles.error, + className: styles["mui-button"] + " " + styles["button-error"], onClick: handleClickFetch }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked"))), React.createElement("dialog", { ref: dialogEl diff --git a/packages/dockerlist-client/src/DockerList.module.css b/packages/dockerlist-client/src/DockerList.module.css index e260cea..6e188b7 100644 --- a/packages/dockerlist-client/src/DockerList.module.css +++ b/packages/dockerlist-client/src/DockerList.module.css @@ -8,48 +8,55 @@ h1 { font-family: sans-serif; } -.button-container { - display: flex; - gap: 0.5rem; - flex-wrap: wrap; -} - -.button { - flex-grow: 1; +.mui-button { border: none; border-radius: 4px; - background-color: #4caf50; /* #1976d2; */ cursor: pointer; - color: #fff; box-shadow: 0px 3px 1px -2px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%), 0px 1px 5px 0px rgb(0 0 0 / 12%); - /* font-size: 0.93rem; */ - font-size: 0.7rem; + font-size: 0.93rem; padding: 8px 22px; transition: background-color 200ms; text-transform: uppercase; + color: rgba(0, 0, 0, 0.87); + background-color: #e0e0e0; +} + +.button-success { + color: #fff; + background-color: #4caf50; /* #1976d2; */ } -.button:hover { +.button-success:hover { background-color: #357a38; - /* rgb(17, 82, 147); */ transition: background-color 500ms; } -.button > h1 { - font-size: 0.8rem; +.button-error { + /* color: rgba(0, 0, 0, 0.87); */ + background-color: #f44336; /* #aa2e25 */ } -.off { - color: rgba(0, 0, 0, 0.87); - background-color: #e0e0e0; +.button-list { + display: flex; + gap: 0.5rem; + flex-wrap: wrap; } -.error { - /* color: rgba(0, 0, 0, 0.87); */ - background-color: #f44336; /* #aa2e25 */ +.button-list-item { + flex-grow: 1; + font-size: 0.7rem; +} + +.button-list-item > h1 { + font-size: 0.8rem; } +/* .off { + color: rgba(0, 0, 0, 0.87); + background-color: #e0e0e0; +} */ + .image { height: 200px; } @@ -61,3 +68,13 @@ dialog { dialog::backdrop { background: rgba(0, 0, 0, 0.87); } + +dialog p { + font-family: sans-serif; +} + +dialog .dialog-actions { + display: flex; + justify-content: flex-end; + gap: 0.5rem; +} diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index a549dde..fc30e23 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -109,9 +109,12 @@ module DockerListMod = { ->Js.Array2.map(dockerContainer => { let state = dockerContainer["State"] let className = - styles["button"] ++ - " " ++ if state != "running" { - styles["off"] + // TODO convenience method for multiple classNames? + styles["button-list-item"] ++ + " " ++ + styles["mui-button"] ++ + " " ++ if state == "running" { + styles["button-success"] } else { "" } @@ -132,16 +135,20 @@ module DockerListMod = { // } // //

{"Docker List"->React.string}

-
- +
+ dockerContainersElems
-
+
// - // - +

{question->React.string}

diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 8455e94..4fa007a 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -2,8 +2,6 @@ import * as Curry from "rescript/lib/es6/curry.js"; import * as React from "react"; -import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; -import * as Caml_option from "rescript/lib/es6/caml_option.js"; import * as DockerListModuleCss from "./DockerList.module.css"; import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; import * as ConfirmAction$MdworldHomeremoteDockerlist from "./ConfirmAction.bs.js"; @@ -15,7 +13,6 @@ function DockerList$DockerListMod(Props) { return []; }); var setContainers = match[1]; - var dialogEl = React.useRef(null); React.useEffect((function () { ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { Curry._1(setContainers, (function (_prev) { @@ -25,7 +22,7 @@ function DockerList$DockerListMod(Props) { }); }), []); - var handleClickFetch = function (_event) { + var handleClickFetch = function (id, _event) { console.log("handleClickFetch"); ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { Curry._1(setContainers, (function (_prev) { @@ -33,35 +30,51 @@ function DockerList$DockerListMod(Props) { })); return Promise.resolve(containerList); }); - - }; - var closeDialog = function (_event) { - return Belt_Option.forEach(Caml_option.nullable_to_opt(dialogEl.current), (function (input) { - input.close(); - + ReasonApi$MdworldHomeremoteDockerlist.startContainer(id).then(function (containerList) { + Curry._1(setContainers, (function (_prev) { + return containerList; })); + return Promise.resolve(containerList); + }); + }; var dockerContainersElems = match[0].map(function (dockerContainer) { var state = dockerContainer.State; var className = styles["button-list-item"] + " " + styles["mui-button"] + " " + ( state === "running" ? styles["button-success"] : "" ); - return React.createElement("button", { - className: className - }, React.createElement("h1", undefined, dockerContainer.Names), React.createElement("p", undefined, dockerContainer.Status)); + var name = dockerContainer.Names.map(function (name) { + return name.slice(1); + }).join(" "); + var partial_arg = dockerContainer.Id; + return React.createElement(ConfirmAction$MdworldHomeremoteDockerlist.make, { + onClick: (function (param) { + return handleClickFetch(partial_arg, param); + }), + question: "Do you want to **turn on** " + name + "?", + className: className, + confirmButtonStyle: { + backgroundColor: "darkblue", + color: "white" + }, + children: null + }, React.createElement("h1", undefined, name), React.createElement("p", undefined, dockerContainer.Status)); }); return React.createElement("div", { className: styles.root }, React.createElement("div", { className: styles["button-list"] }, React.createElement(ConfirmAction$MdworldHomeremoteDockerlist.make, { - onClick: handleClickFetch, + onClick: (function (param) { + return handleClickFetch("some-id", param); + }), question: "turn on ?? such a long text oh wow so long wow wow wow wow wow", className: styles["button-list-item"] + " " + styles["mui-button"], confirmButtonStyle: { backgroundColor: "darkblue", color: "white" - } + }, + children: "modal" }), dockerContainersElems), React.createElement("div", { className: styles["button-list"], style: { @@ -69,15 +82,15 @@ function DockerList$DockerListMod(Props) { } }, React.createElement("button", { className: styles["mui-button"], - onClick: handleClickFetch + onClick: (function (param) { + return handleClickFetch("some-id", param); + }) }, "modal"), React.createElement("button", { className: styles["mui-button"] + " " + styles["button-error"], - onClick: handleClickFetch - }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked"))), React.createElement("dialog", { - ref: dialogEl - }, "are you sure you want to start container SOMEConTAINEr", React.createElement("button", { - onClick: closeDialog - }, "close"))); + onClick: (function (param) { + return handleClickFetch("some-id", param); + }) + }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked")))); } var DockerListMod = { diff --git a/packages/dockerlist-client/src/DockerList.module.css b/packages/dockerlist-client/src/DockerList.module.css index 6e188b7..56c09ae 100644 --- a/packages/dockerlist-client/src/DockerList.module.css +++ b/packages/dockerlist-client/src/DockerList.module.css @@ -22,6 +22,11 @@ h1 { background-color: #e0e0e0; } +.mui-button:hover { + background-color: #777; + transition: background-color 500ms; +} + .button-success { color: #fff; background-color: #4caf50; /* #1976d2; */ @@ -29,7 +34,6 @@ h1 { .button-success:hover { background-color: #357a38; - transition: background-color 500ms; } .button-error { diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index fc30e23..f7301cc 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -25,7 +25,7 @@ module DockerListMod = { // TODO extract modal // let (showModal, setShowModal) = React.useState(_ => false) - let dialogEl = React.useRef(Js.Nullable.null) + // let dialogEl = React.useRef(Js.Nullable.null) // Runs only once right after mounting the component React.useEffect0(() => { @@ -46,7 +46,7 @@ module DockerListMod = { // DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) // } - let handleClickFetch = _event => { + let handleClickFetch = (id: string, _event) => { Js.log("handleClickFetch") // TODO full screen modal to confirm the action when starting/stopping container // dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) @@ -79,12 +79,18 @@ module DockerListMod = { // Js.log2("SpecialApiTestFunc: ", containerList) Js.Promise.resolve(containerList) }) - } - let closeDialog = _event => { - dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->close) + let _ = ReasonApi.startContainer(id) |> Js.Promise.then_(containerList => { + setContainers(_prev => containerList) + // Js.log2("SpecialApiTestFunc: ", containerList) + Js.Promise.resolve(containerList) + }) } + // let closeDialog = _event => { + // dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->close) + // } + // let imgElems = React.array([React.string("elem 1")]->Js.Array2.map(a =>

a

)) // let imgElems = // [React.string("elem 1"), React.string("elem 2")] @@ -110,18 +116,24 @@ module DockerListMod = { let state = dockerContainer["State"] let className = // TODO convenience method for multiple classNames? - styles["button-list-item"] ++ - " " ++ - styles["mui-button"] ++ - " " ++ if state == "running" { + `${styles["button-list-item"]} ${styles["mui-button"]} ` ++ if state == "running" { styles["button-success"] } else { "" } - + let name = + dockerContainer["Names"] + ->Js.Array2.map(name => Js.String2.sliceToEnd(name, ~from=1)) + ->Js.Array2.joinWith(" ") + + +

{name->React.string}

{dockerContainer["Status"]}

+
}) ->React.array @@ -137,18 +149,19 @@ module DockerListMod = { //

{"Docker List"->React.string}

+ confirmButtonStyle={ReactDOM.Style.make(~backgroundColor="darkblue", ~color="white", ())}> + {"modal"->React.string} + dockerContainersElems
// - // -
+ // + // { + // // style={ReactDOM.Style.make(~height="100px")}> + // "are you sure you want to start container SOMEConTAINEr"->React.string + // } + // + //
} } diff --git a/packages/dockerlist-client/src/ReasonApi.bs.js b/packages/dockerlist-client/src/ReasonApi.bs.js index 6af5ddd..99cd48e 100644 --- a/packages/dockerlist-client/src/ReasonApi.bs.js +++ b/packages/dockerlist-client/src/ReasonApi.bs.js @@ -28,10 +28,21 @@ function getDockerList(param) { }); } +function startContainer(id) { + return fetch("http://localhost:3100/api/dockerlist/start/" + id).then(function (response) { + return response.json(); + }).then(function (jsonResponse) { + return Promise.resolve(jsonResponse.containers); + }).catch(function (_err) { + return Promise.resolve([]); + }); +} + export { myFunc , fetchDogs , getDockerList , + startContainer , } /* No side effect */ diff --git a/packages/dockerlist-client/src/ReasonApi.re b/packages/dockerlist-client/src/ReasonApi.re index d852ac4..50fdf71 100644 --- a/packages/dockerlist-client/src/ReasonApi.re +++ b/packages/dockerlist-client/src/ReasonApi.re @@ -43,6 +43,21 @@ let getDockerList = () => Js.Promise.( // |> ignore ); +let startContainer = (id: string) => Js.Promise.( + ("http://localhost:3100/api/dockerlist/start/" ++ id) + -> + fetch + // fetch("http://localhost:3100/api/dockerlist") + |> then_(response => response##json()) + |> then_(jsonResponse => { + Js.Promise.resolve(jsonResponse##containers); + }) + |> catch(_err => { + // Note: In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array + Js.Promise.resolve([||]); + }) + // |> ignore +); // let testFunc = () => // fetch("https://dog.ceo/api/breeds/image/random/3") diff --git a/storybookMockServer.ts b/storybookMockServer.ts index 5033474..2804840 100644 --- a/storybookMockServer.ts +++ b/storybookMockServer.ts @@ -3,7 +3,10 @@ import { ChannelName, NowPlayingResponse, } from "./packages/streamplayer-server/lib/StreamPlayerAPI"; -import { getDockerList } from "./packages/dockerlist-server/lib/DockerListAPI"; +import { + getDockerList, + startContainer, +} from "./packages/dockerlist-server/lib/DockerListAPI"; import express, { Request, Response } from "express"; const app = express(); @@ -103,6 +106,18 @@ const startServer = (corsMode: CORS_MODE): void => { } }); + app.get("/api/dockerlist/start/:id", async (req, res) => { + logRequest(req); + setCorsHeaders(corsMode, res); + try { + const response = await startContainer(req.params.id); + res.send(response); + } catch (error) { + console.log(error); + res.sendStatus(500); + } + }); + app.use(express.static("mocks/public")); app.listen(port, () => From e7175639cff015e18a05d984f9de6f44a385d879 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Mon, 17 May 2021 19:56:56 +0200 Subject: [PATCH 24/62] Add stopContainer --- packages/dockerlist-client/src/DockerList.res | 44 +++++++++++++++++-- packages/dockerlist-client/src/ReasonApi.re | 14 ++++++ storybookMockServer.ts | 13 ++++++ 3 files changed, 67 insertions(+), 4 deletions(-) diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index f7301cc..79eeb7b 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -87,6 +87,32 @@ module DockerListMod = { }) } + let startContainerAndUpdate = (id: string, _event) => { + // TODO |> vs -> + // TODO handle error? + let _ = + ReasonApi.startContainer(id) + |> Js.Promise.then_(_response => { + ReasonApi.getDockerList() + }) + |> Js.Promise.then_(containerList => { + setContainers(_prev => containerList) + Js.Promise.resolve(containerList) + }) + } + + let stopContainerAndUpdate = (id: string, _event) => { + let _ = + ReasonApi.stopContainer(id) + |> Js.Promise.then_(_response => { + ReasonApi.getDockerList() + }) + |> Js.Promise.then_(containerList => { + setContainers(_prev => containerList) + Js.Promise.resolve(containerList) + }) + } + // let closeDialog = _event => { // dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->close) // } @@ -113,10 +139,11 @@ module DockerListMod = { let dockerContainersElems = containers ->Js.Array2.map(dockerContainer => { - let state = dockerContainer["State"] + let id = dockerContainer["Id"]; + let isRunning = dockerContainer["State"] == "running" let className = // TODO convenience method for multiple classNames? - `${styles["button-list-item"]} ${styles["mui-button"]} ` ++ if state == "running" { + `${styles["button-list-item"]} ${styles["mui-button"]} ` ++ if isRunning { styles["button-success"] } else { "" @@ -128,9 +155,18 @@ module DockerListMod = { ->Js.Array2.joinWith(" ")

{name->React.string}

{dockerContainer["Status"]}

diff --git a/packages/dockerlist-client/src/ReasonApi.re b/packages/dockerlist-client/src/ReasonApi.re index 50fdf71..c786f0c 100644 --- a/packages/dockerlist-client/src/ReasonApi.re +++ b/packages/dockerlist-client/src/ReasonApi.re @@ -59,6 +59,20 @@ let startContainer = (id: string) => Js.Promise.( // |> ignore ); +let stopContainer = (id: string) => Js.Promise.( + ("http://localhost:3100/api/dockerlist/stop/" ++ id) + -> + fetch + |> then_(response => response##json()) + |> then_(jsonResponse => { + Js.Promise.resolve(jsonResponse##containers); + }) + |> catch(_err => { + // Note: In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array + Js.Promise.resolve([||]); + }) +); + // let testFunc = () => // fetch("https://dog.ceo/api/breeds/image/random/3") // |> Js.Promise.then_(response => response##json()) diff --git a/storybookMockServer.ts b/storybookMockServer.ts index 2804840..78dd906 100644 --- a/storybookMockServer.ts +++ b/storybookMockServer.ts @@ -6,6 +6,7 @@ import { import { getDockerList, startContainer, + stopContainer, } from "./packages/dockerlist-server/lib/DockerListAPI"; import express, { Request, Response } from "express"; const app = express(); @@ -118,6 +119,18 @@ const startServer = (corsMode: CORS_MODE): void => { } }); + app.get("/api/dockerlist/stop/:id", async (req, res) => { + logRequest(req); + setCorsHeaders(corsMode, res); + try { + const response = await stopContainer(req.params.id); + res.send(response); + } catch (error) { + console.log(error); + res.sendStatus(500); + } + }); + app.use(express.static("mocks/public")); app.listen(port, () => From 1a1e1e99257669e40205e764a862d87d68b18b8a Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Mon, 17 May 2021 20:27:26 +0200 Subject: [PATCH 25/62] Add long polling --- packages/dockerlist-client/src/DockerList.res | 93 +++---------------- 1 file changed, 14 insertions(+), 79 deletions(-) diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 79eeb7b..24df133 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -12,45 +12,30 @@ module DockerListMod = { // Pass props like: let make = (~count: int) => { @react.component let make = () => { - // let times = switch count { - // | 1 => "once" - // | 2 => "twice" - // | n => Belt.Int.toString(n) ++ " times" - // } - // let msg = "Click me " ++ times - - // let (imgs, setImgs) = React.useState(_ => []) + let update_interval_ms = 60000 let (containers, setContainers) = React.useState(_ => []) - // TODO extract modal - // let (showModal, setShowModal) = React.useState(_ => false) - // let dialogEl = React.useRef(Js.Nullable.null) - // Runs only once right after mounting the component React.useEffect0(() => { - // Run effects - // DockerApi.Api.getDogsAndPrint() - // DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) - let _ = ReasonApi.getDockerList() |> Js.Promise.then_(containerList => { - setContainers(_prev => containerList) - // Js.log2("SpecialApiTestFunc: ", containerList) - Js.Promise.resolve(containerList) - }) + let update = () => { + ReasonApi.getDockerList() + |> Js.Promise.then_(containerList => { + setContainers(_prev => containerList) + Js.Promise.resolve(containerList) + }) + |> ignore + } + + update() + + let _ = Js.Global.setInterval(update, update_interval_ms) None // or Some(() => {}) }) - // let handleClick = _event => { - // // DockerApi.Api.getDogsAndPrint() - // DockerApi.Api.getDogsAndShow(~show=_param => setImgs(_prev => _param)) - // } - let handleClickFetch = (id: string, _event) => { Js.log("handleClickFetch") - // TODO full screen modal to confirm the action when starting/stopping container - // dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) - // Works: // let _ = DockerApi.Api.getDogsFetch() @@ -113,33 +98,10 @@ module DockerListMod = { }) } - // let closeDialog = _event => { - // dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->close) - // } - - // let imgElems = React.array([React.string("elem 1")]->Js.Array2.map(a =>

a

)) - // let imgElems = - // [React.string("elem 1"), React.string("elem 2")] - // ->Js.Array2.map(a =>

a

) - // ->React.array - //Js.log(result) - // let fooElems = React.array([React.string("foo")]); - // let imgElems = - // imgs - // ->Js.Array2.map(url => - // - // ) - // ->React.array - let dockerContainersElems = containers ->Js.Array2.map(dockerContainer => { - let id = dockerContainer["Id"]; + let id = dockerContainer["Id"] let isRunning = dockerContainer["State"] == "running" let className = // TODO convenience method for multiple classNames? @@ -200,40 +162,13 @@ module DockerListMod = { - // - //
- //
imgElems
- // - // - // { - // // style={ReactDOM.Style.make(~height="100px")}> - // "are you sure you want to start container SOMEConTAINEr"->React.string - // } - // - //
} } - -// Js.log("Hello, World!") From 13485bd313793e4a21cf0ca3c3da73c3d562bdac Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Tue, 18 May 2021 08:52:14 +0200 Subject: [PATCH 26/62] Add style util --- packages/dockerlist-client/src/DockerList.res | 34 ++++++++--- packages/dockerlist-client/src/StyleUtil.res | 61 +++++++++++++++++++ 2 files changed, 88 insertions(+), 7 deletions(-) create mode 100644 packages/dockerlist-client/src/StyleUtil.res diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 24df133..f6970a0 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -8,6 +8,10 @@ @send external showModal: Dom.element => unit = "showModal" @send external close: Dom.element => unit = "close" +StyleUtil.test1() +StyleUtil.test2() +StyleUtil.test3() + module DockerListMod = { // Pass props like: let make = (~count: int) => { @react.component @@ -29,9 +33,14 @@ module DockerListMod = { update() - let _ = Js.Global.setInterval(update, update_interval_ms) + let interval = Js.Global.setInterval(update, update_interval_ms) - None // or Some(() => {}) + // None or Some for a callback + Some( + () => { + Js.Global.clearInterval(interval) + }, + ) }) let handleClickFetch = (id: string, _event) => { @@ -102,13 +111,23 @@ module DockerListMod = { containers ->Js.Array2.map(dockerContainer => { let id = dockerContainer["Id"] - let isRunning = dockerContainer["State"] == "running" + // https://stackoverflow.com/a/32428199: created, restarting, running, paused, exited, dead + let state = dockerContainer["State"] + let isRunning = state == "running" + let isExited = state == "exited" + let isUnexpected = !isRunning && !isExited let className = // TODO convenience method for multiple classNames? - `${styles["button-list-item"]} ${styles["mui-button"]} ` ++ if isRunning { + `${styles["button-list-item"]} ${styles["mui-button"]} ` ++ + if isRunning { styles["button-success"] } else { "" + } ++ + " " ++ if isUnexpected { + styles["button-error"] + } else { + "" } let name = @@ -130,7 +149,9 @@ module DockerListMod = { `Do you want to start ${name}?` }} confirmButtonStyle={ReactDOM.Style.make(~backgroundColor="darkblue", ~color="white", ())}> -

{name->React.string}

{dockerContainer["Status"]}

+

{name->React.string}

+

{dockerContainer["Status"]}

+

{styles["button-list-item"]}

}) ->React.array @@ -165,8 +186,7 @@ module DockerListMod = {
diff --git a/packages/dockerlist-client/src/StyleUtil.res b/packages/dockerlist-client/src/StyleUtil.res new file mode 100644 index 0000000..a2ee213 --- /dev/null +++ b/packages/dockerlist-client/src/StyleUtil.res @@ -0,0 +1,61 @@ +// Examples + +// Generic array + +let toClassName = (input: array<(string, bool)>): string => + input + ->Js.Array2.filter(((_name, isActive)) => isActive) + ->Js.Array2.map(((name, _isActive)) => name) + ->Js.Array2.joinWith("_") + +let testResult = toClassName([("class1", true), ("class2", false), ("class3", true)]) + +let test1 = () => Js.log2("1. With Generic array", testResult) + +// Custom variant StringAndBool and destructuring of Variant in map + +type foo = StringAndBool(string, bool) + +let toClassName1 = (input: array): string => + input + // ->Js.Array2.filter(((_name, isActive)) => isActive) + ->Js.Array2.map((StringAndBool(name, _isActive)) => name) + ->Js.Array2.joinWith("_") + +let testResult1 = toClassName1([ + StringAndBool("class1", true), + StringAndBool("class2", false), + StringAndBool("class3", true), +]) + +let test2 = () => Js.log2("2. With custom variant", testResult1) + +// Pattern matching in filter + +type classNameItem = String(string) | StringAndBool(string, bool) + +let toClassName2 = (input: array): string => + input + ->Js.Array2.filter(item => { + switch item { + | StringAndBool(_name, isActive) => isActive + | String(_name) => true + } + }) + ->Js.Array2.map(item => { + switch item { + | StringAndBool(name, _isActive) => name + | String(name) => name + } + }) + ->Js.Array2.joinWith(" ") + +let testResult2 = toClassName2([ + StringAndBool("class1", true), + String("class2"), + StringAndBool("class3", false), + StringAndBool("class4", true), + String("class5"), +]) + +let test3 = () => Js.log2("3. With pattern matching", testResult2) \ No newline at end of file From 8eaa9ff3abc58fb4f3de4bd3322678806425b238 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Tue, 18 May 2021 09:58:37 +0200 Subject: [PATCH 27/62] Use StyleUtil --- packages/dockerlist-client/src/DockerList.res | 23 +++------- packages/dockerlist-client/src/StyleUtil.res | 42 ++++++++++--------- 2 files changed, 28 insertions(+), 37 deletions(-) diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index f6970a0..9fbd6b4 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -8,10 +8,6 @@ @send external showModal: Dom.element => unit = "showModal" @send external close: Dom.element => unit = "close" -StyleUtil.test1() -StyleUtil.test2() -StyleUtil.test3() - module DockerListMod = { // Pass props like: let make = (~count: int) => { @react.component @@ -116,19 +112,12 @@ module DockerListMod = { let isRunning = state == "running" let isExited = state == "exited" let isUnexpected = !isRunning && !isExited - let className = - // TODO convenience method for multiple classNames? - `${styles["button-list-item"]} ${styles["mui-button"]} ` ++ - if isRunning { - styles["button-success"] - } else { - "" - } ++ - " " ++ if isUnexpected { - styles["button-error"] - } else { - "" - } + let className = StyleUtil.toClassName([ + Name(styles["button-list-item"]), + Name(styles["mui-button"]), + NameOn(styles["button-success"], isRunning), + NameOn(styles["button-error"], isUnexpected), + ]) let name = dockerContainer["Names"] diff --git a/packages/dockerlist-client/src/StyleUtil.res b/packages/dockerlist-client/src/StyleUtil.res index a2ee213..7c6ed05 100644 --- a/packages/dockerlist-client/src/StyleUtil.res +++ b/packages/dockerlist-client/src/StyleUtil.res @@ -2,15 +2,15 @@ // Generic array -let toClassName = (input: array<(string, bool)>): string => +let toClassName0 = (input: array<(string, bool)>): string => input ->Js.Array2.filter(((_name, isActive)) => isActive) ->Js.Array2.map(((name, _isActive)) => name) ->Js.Array2.joinWith("_") -let testResult = toClassName([("class1", true), ("class2", false), ("class3", true)]) +let testResult0 = toClassName0([("class1", true), ("class2", false), ("class3", true)]) -let test1 = () => Js.log2("1. With Generic array", testResult) +let test0 = () => Js.log2("1. With Generic array", testResult0) // Custom variant StringAndBool and destructuring of Variant in map @@ -28,34 +28,36 @@ let testResult1 = toClassName1([ StringAndBool("class3", true), ]) -let test2 = () => Js.log2("2. With custom variant", testResult1) +let test1 = () => Js.log2("2. With custom variant", testResult1) -// Pattern matching in filter +// Variant classNameItem with the cases "Name" and "NameOn" with contructor arguments +type classNameItem = Name(string) | NameOn(string, bool) -type classNameItem = String(string) | StringAndBool(string, bool) - -let toClassName2 = (input: array): string => +// Generic array with Variant parameter +let toClassName = (input: array): string => input ->Js.Array2.filter(item => { + // Pattern matching switch item { - | StringAndBool(_name, isActive) => isActive - | String(_name) => true + // Destructure the Variant NameOn to name and isActive + | NameOn(_name, isActive) => isActive + | Name(_name) => true } }) ->Js.Array2.map(item => { switch item { - | StringAndBool(name, _isActive) => name - | String(name) => name + | NameOn(name, _isActive) => name + | Name(name) => name } }) ->Js.Array2.joinWith(" ") -let testResult2 = toClassName2([ - StringAndBool("class1", true), - String("class2"), - StringAndBool("class3", false), - StringAndBool("class4", true), - String("class5"), -]) +// let testResult = toClassName([ +// NameOn("class1", true), +// Name("class2"), +// NameOn("class3", false), +// NameOn("class4", true), +// Name("class5"), +// ]) -let test3 = () => Js.log2("3. With pattern matching", testResult2) \ No newline at end of file +// let test = () => Js.log2("3. With pattern matching", testResult2) From c89c0063dd116dfb3d9dcdd5f74fe80b67e087e1 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Tue, 18 May 2021 10:51:11 +0200 Subject: [PATCH 28/62] Build --- packages/dockerlist-client/.bsb.lock | 2 +- .../dockerlist-client/src/DockerList.bs.js | 80 +++++++++++++++---- .../dockerlist-client/src/ReasonApi.bs.js | 11 +++ .../dockerlist-client/src/StyleUtil.bs.js | 80 +++++++++++++++++++ 4 files changed, 156 insertions(+), 17 deletions(-) create mode 100644 packages/dockerlist-client/src/StyleUtil.bs.js diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock index a19ff3d..8c20fbd 100644 --- a/packages/dockerlist-client/.bsb.lock +++ b/packages/dockerlist-client/.bsb.lock @@ -1 +1 @@ -147857 \ No newline at end of file +185770 \ No newline at end of file diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 4fa007a..ba82403 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -4,6 +4,7 @@ import * as Curry from "rescript/lib/es6/curry.js"; import * as React from "react"; import * as DockerListModuleCss from "./DockerList.module.css"; import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; +import * as StyleUtil$MdworldHomeremoteDockerlist from "./StyleUtil.bs.js"; import * as ConfirmAction$MdworldHomeremoteDockerlist from "./ConfirmAction.bs.js"; var styles = DockerListModuleCss; @@ -14,13 +15,21 @@ function DockerList$DockerListMod(Props) { }); var setContainers = match[1]; React.useEffect((function () { - ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { - Curry._1(setContainers, (function (_prev) { - return containerList; - })); - return Promise.resolve(containerList); - }); - + var update = function (param) { + ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { + Curry._1(setContainers, (function (_prev) { + return containerList; + })); + return Promise.resolve(containerList); + }); + + }; + update(undefined); + var interval = setInterval(update, 60000); + return (function (param) { + clearInterval(interval); + + }); }), []); var handleClickFetch = function (id, _event) { console.log("handleClickFetch"); @@ -39,25 +48,64 @@ function DockerList$DockerListMod(Props) { }; var dockerContainersElems = match[0].map(function (dockerContainer) { + var id = dockerContainer.Id; var state = dockerContainer.State; - var className = styles["button-list-item"] + " " + styles["mui-button"] + " " + ( - state === "running" ? styles["button-success"] : "" - ); + var isRunning = state === "running"; + var isExited = state === "exited"; + var isUnexpected = !isRunning && !isExited; + var className = StyleUtil$MdworldHomeremoteDockerlist.toClassName([ + { + TAG: /* Name */0, + _0: styles["button-list-item"] + }, + { + TAG: /* Name */0, + _0: styles["mui-button"] + }, + { + TAG: /* NameOn */1, + _0: styles["button-success"], + _1: isRunning + }, + { + TAG: /* NameOn */1, + _0: styles["button-error"], + _1: isUnexpected + } + ]); var name = dockerContainer.Names.map(function (name) { return name.slice(1); }).join(" "); - var partial_arg = dockerContainer.Id; return React.createElement(ConfirmAction$MdworldHomeremoteDockerlist.make, { - onClick: (function (param) { - return handleClickFetch(partial_arg, param); - }), - question: "Do you want to **turn on** " + name + "?", + onClick: isRunning ? (function (param) { + ReasonApi$MdworldHomeremoteDockerlist.stopContainer(id).then(function (_response) { + return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined); + }).then(function (containerList) { + Curry._1(setContainers, (function (_prev) { + return containerList; + })); + return Promise.resolve(containerList); + }); + + }) : (function (param) { + ReasonApi$MdworldHomeremoteDockerlist.startContainer(id).then(function (_response) { + return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined); + }).then(function (containerList) { + Curry._1(setContainers, (function (_prev) { + return containerList; + })); + return Promise.resolve(containerList); + }); + + }), + question: isRunning ? "Do you want to stop " + name + "?" : "Do you want to start " + name + "?", className: className, confirmButtonStyle: { backgroundColor: "darkblue", color: "white" }, - children: null + children: null, + key: id }, React.createElement("h1", undefined, name), React.createElement("p", undefined, dockerContainer.Status)); }); return React.createElement("div", { diff --git a/packages/dockerlist-client/src/ReasonApi.bs.js b/packages/dockerlist-client/src/ReasonApi.bs.js index 99cd48e..babf4c1 100644 --- a/packages/dockerlist-client/src/ReasonApi.bs.js +++ b/packages/dockerlist-client/src/ReasonApi.bs.js @@ -38,11 +38,22 @@ function startContainer(id) { }); } +function stopContainer(id) { + return fetch("http://localhost:3100/api/dockerlist/stop/" + id).then(function (response) { + return response.json(); + }).then(function (jsonResponse) { + return Promise.resolve(jsonResponse.containers); + }).catch(function (_err) { + return Promise.resolve([]); + }); +} + export { myFunc , fetchDogs , getDockerList , startContainer , + stopContainer , } /* No side effect */ diff --git a/packages/dockerlist-client/src/StyleUtil.bs.js b/packages/dockerlist-client/src/StyleUtil.bs.js new file mode 100644 index 0000000..7334957 --- /dev/null +++ b/packages/dockerlist-client/src/StyleUtil.bs.js @@ -0,0 +1,80 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + + +function toClassName0(input) { + return input.filter(function (param) { + return param[1]; + }).map(function (param) { + return param[0]; + }).join("_"); +} + +var testResult0 = toClassName0([ + [ + "class1", + true + ], + [ + "class2", + false + ], + [ + "class3", + true + ] + ]); + +function test0(param) { + console.log("1. With Generic array", testResult0); + +} + +function toClassName1(input) { + return input.map(function (param) { + return param._0; + }).join("_"); +} + +var testResult1 = toClassName1([ + /* StringAndBool */{ + _0: "class1", + _1: true + }, + /* StringAndBool */{ + _0: "class2", + _1: false + }, + /* StringAndBool */{ + _0: "class3", + _1: true + } + ]); + +function test1(param) { + console.log("2. With custom variant", testResult1); + +} + +function toClassName(input) { + return input.filter(function (item) { + if (item.TAG === /* Name */0) { + return true; + } else { + return item._1; + } + }).map(function (item) { + return item._0; + }).join(" "); +} + +export { + toClassName0 , + testResult0 , + test0 , + toClassName1 , + testResult1 , + test1 , + toClassName , + +} +/* testResult0 Not a pure module */ From 308567ec5436626056a8dccf899040c476cad83f Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Tue, 18 May 2021 15:26:47 +0200 Subject: [PATCH 29/62] Update workflow --- package.json | 2 +- packages/dockerlist-client/.bsb.lock | 2 +- packages/dockerlist-client/README.md | 6 ++---- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 2ecf702..c1d5d65 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "webpack-cli": "^4.2.0" }, "scripts": { - "start": "concurrently -c \"blue,magenta\" \"npm:storybook\" \"npm:storybook:api\"", + "start": "concurrently -c \"blue,magenta,green\" \"npm:storybook -- --quiet\" \"npm:storybook:api\" \"cd packages/dockerlist-client && yarn re:start\"", "storybook": "start-storybook -p 6006 --ci", "storybook:api": "ts-node storybookMockServer.ts --CORS=debug", "build-storybook": "STORYBOOK_MODE=PROD build-storybook -s mocks", diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock index 8c20fbd..0bb3a99 100644 --- a/packages/dockerlist-client/.bsb.lock +++ b/packages/dockerlist-client/.bsb.lock @@ -1 +1 @@ -185770 \ No newline at end of file +243961 \ No newline at end of file diff --git a/packages/dockerlist-client/README.md b/packages/dockerlist-client/README.md index 528e0b4..7766d11 100644 --- a/packages/dockerlist-client/README.md +++ b/packages/dockerlist-client/README.md @@ -23,17 +23,15 @@ See https://github.com/mdvanes/homeremote/issues/9 - in /packages/dockerlist-client run `yarn re:build` - Add fetch to endpoint: `yarn lerna add bs-fetch --scope=@mdworld/homeremote-dockerlist` and add to bsconfig.json: "bs-dependencies": ["bs-fetch"] -TODO For now workflow is: start storybook and in other terminal in /packages/dockerlist-client run `yarn re:start` - ## Running -- dev: `yarn storybook` and in second terminal, cwd to packages/server and run `yarn start` +- dev: run in root: `yarn start` and it will start storybook, mock api, and `yarn re:start` (in this dir) ## TODO +- Fix building - For now XHR works in Rescript, but Fetch only works in Reason files. Mainly decoding the JSON fails, even with "@glennsl/bs-json" - Material UI bindings seem very unstable: https://jsiebern.github.io/bs-material-ui Adding it breaks the build sometimes -- Add Reason/Rescript - Clean up old Elm deps from package.json - Builders (like webpack) are discouraged: https://rescript-lang.org/docs/manual/latest/interop-with-js-build-systems - Snowpack build to `dist` dir like in https://github.com/jihchi/rescript-react-realworld-example-app/blob/main/package.json https://www.snowpack.dev/ From ed611e0c597a92dce043ac38fda62f51050eaa97 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Tue, 18 May 2021 15:54:01 +0200 Subject: [PATCH 30/62] Extract DockerListItem --- .../dockerlist-client/src/ConfirmAction.res | 1 - .../dockerlist-client/src/DockerList.bs.js | 118 ++------------ packages/dockerlist-client/src/DockerList.res | 150 ++---------------- .../dockerlist-client/src/DockerList.test.js | 97 +++++++++++ .../src/DockerListItem.bs.js | 81 ++++++++++ .../dockerlist-client/src/DockerListItem.res | 84 ++++++++++ 6 files changed, 291 insertions(+), 240 deletions(-) create mode 100644 packages/dockerlist-client/src/DockerList.test.js create mode 100644 packages/dockerlist-client/src/DockerListItem.bs.js create mode 100644 packages/dockerlist-client/src/DockerListItem.res diff --git a/packages/dockerlist-client/src/ConfirmAction.res b/packages/dockerlist-client/src/ConfirmAction.res index 3be0868..34efba4 100644 --- a/packages/dockerlist-client/src/ConfirmAction.res +++ b/packages/dockerlist-client/src/ConfirmAction.res @@ -7,7 +7,6 @@ // TODO rename to ButtonWithConfirm / ConfirmingButton -// Pass props like: let make = (~count: int) => { @react.component let make = ( ~onClick: ReactEvent.Mouse.t => unit, diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index ba82403..ea7908c 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -2,14 +2,19 @@ import * as Curry from "rescript/lib/es6/curry.js"; import * as React from "react"; +import * as Caml_option from "rescript/lib/es6/caml_option.js"; import * as DockerListModuleCss from "./DockerList.module.css"; import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; -import * as StyleUtil$MdworldHomeremoteDockerlist from "./StyleUtil.bs.js"; -import * as ConfirmAction$MdworldHomeremoteDockerlist from "./ConfirmAction.bs.js"; +import * as DockerListItem$MdworldHomeremoteDockerlist from "./DockerListItem.bs.js"; var styles = DockerListModuleCss; function DockerList$DockerListMod(Props) { + var confirmButtonStyleOpt = Props.confirmButtonStyle; + var confirmButtonStyle = confirmButtonStyleOpt !== undefined ? Caml_option.valFromOption(confirmButtonStyleOpt) : ({ + backgroundColor: "darkblue", + color: "white" + }); var match = React.useState(function () { return []; }); @@ -31,114 +36,19 @@ function DockerList$DockerListMod(Props) { }); }), []); - var handleClickFetch = function (id, _event) { - console.log("handleClickFetch"); - ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { - Curry._1(setContainers, (function (_prev) { - return containerList; - })); - return Promise.resolve(containerList); - }); - ReasonApi$MdworldHomeremoteDockerlist.startContainer(id).then(function (containerList) { - Curry._1(setContainers, (function (_prev) { - return containerList; - })); - return Promise.resolve(containerList); - }); - - }; var dockerContainersElems = match[0].map(function (dockerContainer) { - var id = dockerContainer.Id; - var state = dockerContainer.State; - var isRunning = state === "running"; - var isExited = state === "exited"; - var isUnexpected = !isRunning && !isExited; - var className = StyleUtil$MdworldHomeremoteDockerlist.toClassName([ - { - TAG: /* Name */0, - _0: styles["button-list-item"] - }, - { - TAG: /* Name */0, - _0: styles["mui-button"] - }, - { - TAG: /* NameOn */1, - _0: styles["button-success"], - _1: isRunning - }, - { - TAG: /* NameOn */1, - _0: styles["button-error"], - _1: isUnexpected - } - ]); - var name = dockerContainer.Names.map(function (name) { - return name.slice(1); - }).join(" "); - return React.createElement(ConfirmAction$MdworldHomeremoteDockerlist.make, { - onClick: isRunning ? (function (param) { - ReasonApi$MdworldHomeremoteDockerlist.stopContainer(id).then(function (_response) { - return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined); - }).then(function (containerList) { - Curry._1(setContainers, (function (_prev) { - return containerList; - })); - return Promise.resolve(containerList); - }); - - }) : (function (param) { - ReasonApi$MdworldHomeremoteDockerlist.startContainer(id).then(function (_response) { - return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined); - }).then(function (containerList) { - Curry._1(setContainers, (function (_prev) { - return containerList; - })); - return Promise.resolve(containerList); - }); - - }), - question: isRunning ? "Do you want to stop " + name + "?" : "Do you want to start " + name + "?", - className: className, - confirmButtonStyle: { - backgroundColor: "darkblue", - color: "white" - }, - children: null, - key: id - }, React.createElement("h1", undefined, name), React.createElement("p", undefined, dockerContainer.Status)); + return React.createElement(DockerListItem$MdworldHomeremoteDockerlist.make, { + container: dockerContainer, + setContainers: setContainers, + confirmButtonStyle: confirmButtonStyle, + key: dockerContainer.Id + }); }); return React.createElement("div", { className: styles.root }, React.createElement("div", { className: styles["button-list"] - }, React.createElement(ConfirmAction$MdworldHomeremoteDockerlist.make, { - onClick: (function (param) { - return handleClickFetch("some-id", param); - }), - question: "turn on ?? such a long text oh wow so long wow wow wow wow wow", - className: styles["button-list-item"] + " " + styles["mui-button"], - confirmButtonStyle: { - backgroundColor: "darkblue", - color: "white" - }, - children: "modal" - }), dockerContainersElems), React.createElement("div", { - className: styles["button-list"], - style: { - marginTop: "2rem" - } - }, React.createElement("button", { - className: styles["mui-button"], - onClick: (function (param) { - return handleClickFetch("some-id", param); - }) - }, "modal"), React.createElement("button", { - className: styles["mui-button"] + " " + styles["button-error"], - onClick: (function (param) { - return handleClickFetch("some-id", param); - }) - }, React.createElement("h1", undefined, "Errrr"), React.createElement("p", undefined, "Borked")))); + }, dockerContainersElems)); } var DockerListMod = { diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 9fbd6b4..d0dba1d 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -1,17 +1,19 @@ // {..} means we are handling a JS object with an unknown // set of attributes @module external styles: {..} = "./DockerList.module.css" -// @module -// external styles: {"root": string, "button": string, "button-container": string, "off": string, "error": string, "image": string} = -// "./DockerList.module.css" @send external showModal: Dom.element => unit = "showModal" @send external close: Dom.element => unit = "close" module DockerListMod = { - // Pass props like: let make = (~count: int) => { @react.component - let make = () => { + let make = ( + ~confirmButtonStyle: ReactDOM.Style.t=ReactDOM.Style.make( + ~backgroundColor="darkblue", + ~color="white", + (), + ), + ) => { let update_interval_ms = 60000 let (containers, setContainers) = React.useState(_ => []) @@ -39,145 +41,23 @@ module DockerListMod = { ) }) - let handleClickFetch = (id: string, _event) => { - Js.log("handleClickFetch") - // Works: - // let _ = DockerApi.Api.getDogsFetch() - - // Works: - // let _ = - // DockerApi.Api.getDogsFetch() - // |> Js.Promise.then_(Fetch.Response.text) - // |> Js.Promise.then_(text => print_endline("endline: " ++ text) |> Js.Promise.resolve) - // |> Js.Promise.then_( - // value => { - // Js.log2("handleClickFetch: ", value) - // Js.Promise.resolve(value) - // }, - // // value - // _, - // ) - - // let _ = ReasonApi.fetchDogs() |> Js.Promise.then_(imgList => { - // setImgs(_prev => imgList) - // Js.log2("SpecialApiTestFunc: ", imgList) - // Js.Promise.resolve(imgList) - // }) - - let _ = ReasonApi.getDockerList() |> Js.Promise.then_(containerList => { - setContainers(_prev => containerList) - // Js.log2("SpecialApiTestFunc: ", containerList) - Js.Promise.resolve(containerList) - }) - - let _ = ReasonApi.startContainer(id) |> Js.Promise.then_(containerList => { - setContainers(_prev => containerList) - // Js.log2("SpecialApiTestFunc: ", containerList) - Js.Promise.resolve(containerList) - }) - } - - let startContainerAndUpdate = (id: string, _event) => { - // TODO |> vs -> - // TODO handle error? - let _ = - ReasonApi.startContainer(id) - |> Js.Promise.then_(_response => { - ReasonApi.getDockerList() - }) - |> Js.Promise.then_(containerList => { - setContainers(_prev => containerList) - Js.Promise.resolve(containerList) - }) - } - - let stopContainerAndUpdate = (id: string, _event) => { - let _ = - ReasonApi.stopContainer(id) - |> Js.Promise.then_(_response => { - ReasonApi.getDockerList() - }) - |> Js.Promise.then_(containerList => { - setContainers(_prev => containerList) - Js.Promise.resolve(containerList) - }) - } - let dockerContainersElems = containers - ->Js.Array2.map(dockerContainer => { - let id = dockerContainer["Id"] - // https://stackoverflow.com/a/32428199: created, restarting, running, paused, exited, dead - let state = dockerContainer["State"] - let isRunning = state == "running" - let isExited = state == "exited" - let isUnexpected = !isRunning && !isExited - let className = StyleUtil.toClassName([ - Name(styles["button-list-item"]), - Name(styles["mui-button"]), - NameOn(styles["button-success"], isRunning), - NameOn(styles["button-error"], isUnexpected), - ]) - - let name = - dockerContainer["Names"] - ->Js.Array2.map(name => Js.String2.sliceToEnd(name, ~from=1)) - ->Js.Array2.joinWith(" ") - - -

{name->React.string}

-

{dockerContainer["Status"]}

-

{styles["button-list-item"]}

-
- }) + ->Js.Array2.map(dockerContainer => + + ) ->React.array // open MaterialUi
- //

- // { - // // {"Headline"->React.string} - // // {"Some example text"->React.string} - // React.string("Docker List") - // } - //

- //

{"Docker List"->React.string}

- - {"modal"->React.string} - dockerContainersElems
-
- // - - -
} } diff --git a/packages/dockerlist-client/src/DockerList.test.js b/packages/dockerlist-client/src/DockerList.test.js new file mode 100644 index 0000000..f0d2e5c --- /dev/null +++ b/packages/dockerlist-client/src/DockerList.test.js @@ -0,0 +1,97 @@ +import React, { Component } from "react"; +import { render } from "@testing-library/react"; +// In this case use `require`, see below. import StreamPlayer from "./StreamPlayer"; + +let mockEmit = () => { + /* no-op */ +}; + +// Example of naive mock: +// jest.mock("react-elm-components", () => "mock-react-elm-components"); + +// Example of FC mock: +// jest.mock("react-elm-components", () => (props) => { +// // Do not destructure `props.ports` to keep destinct from inner `ports` argument +// console.log("props.ports", props.ports); +// // ports(); +// const foo = (fn) => { +// mockEmit = fn; +// }; +// const ports = { setPlayPauseStatusPort: { subscribe: foo } }; +// // triggerPorts = +// props.ports(ports); +// return

; +// }); + +const playSpy = jest.fn(); +const pauseSpy = jest.fn(); + +window.HTMLMediaElement.prototype.play = playSpy; +window.HTMLMediaElement.prototype.pause = pauseSpy; + +class MockReactElmComponent extends Component { + render() { + // Do not destructure `props.ports` to keep destinct from inner `ports` argument + const foo = (fn) => { + mockEmit = fn; + }; + const ports = { setPlayPauseStatusPort: { subscribe: foo } }; + this.props.ports(ports); + return ( +

+

+ ); + } +} + +// With ref: +jest.mock("react-elm-components", () => MockReactElmComponent); + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const StreamPlayer = require("./StreamPlayer").default; + +jest.mock("./StreamPlayer.css", () => ""); +jest.mock("./Elm/Audio.elm", () => ({ + Elm: { + Elm: { + Audio: "mock-elm-audio", + }, + }, +})); + +describe("StreamPlayer client", () => { + beforeEach(() => { + jest.useFakeTimers(); + playSpy.mockReset(); + pauseSpy.mockReset(); + }); + + afterEach(() => { + jest.runOnlyPendingTimers(); + jest.useRealTimers(); + }); + + it("renders the element", () => { + const { getByTestId } = render(); + expect(getByTestId("mock-react-elm-components")).toBeInTheDocument(); + }); + + it("calls audioElem.play on new status", () => { + render(); + expect(playSpy).not.toHaveBeenCalled(); + mockEmit("Play"); + jest.runAllTimers(); + expect(playSpy).toHaveBeenCalledWith(); + expect(pauseSpy).not.toHaveBeenCalled(); + }); + + it("calls audioElem.pause on new status", () => { + render(); + expect(pauseSpy).not.toHaveBeenCalled(); + mockEmit("Pause"); + jest.runAllTimers(); + expect(pauseSpy).toHaveBeenCalledWith(); + expect(playSpy).not.toHaveBeenCalled(); + }); +}); diff --git a/packages/dockerlist-client/src/DockerListItem.bs.js b/packages/dockerlist-client/src/DockerListItem.bs.js new file mode 100644 index 0000000..47ff24b --- /dev/null +++ b/packages/dockerlist-client/src/DockerListItem.bs.js @@ -0,0 +1,81 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + +import * as Curry from "rescript/lib/es6/curry.js"; +import * as React from "react"; +import * as DockerListModuleCss from "./DockerList.module.css"; +import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; +import * as StyleUtil$MdworldHomeremoteDockerlist from "./StyleUtil.bs.js"; +import * as ConfirmAction$MdworldHomeremoteDockerlist from "./ConfirmAction.bs.js"; + +var styles = DockerListModuleCss; + +function DockerListItem(Props) { + var container = Props.container; + var setContainers = Props.setContainers; + var confirmButtonStyle = Props.confirmButtonStyle; + var id = container.Id; + var state = container.State; + var isRunning = state === "running"; + var isExited = state === "exited"; + var isUnexpected = !isRunning && !isExited; + var className = StyleUtil$MdworldHomeremoteDockerlist.toClassName([ + { + TAG: /* Name */0, + _0: styles["button-list-item"] + }, + { + TAG: /* Name */0, + _0: styles["mui-button"] + }, + { + TAG: /* NameOn */1, + _0: styles["button-success"], + _1: isRunning + }, + { + TAG: /* NameOn */1, + _0: styles["button-error"], + _1: isUnexpected + } + ]); + var name = container.Names.map(function (name) { + return name.slice(1); + }).join(" "); + return React.createElement(ConfirmAction$MdworldHomeremoteDockerlist.make, { + onClick: isRunning ? (function (param) { + ReasonApi$MdworldHomeremoteDockerlist.stopContainer(id).then(function (_response) { + return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined); + }).then(function (containerList) { + Curry._1(setContainers, (function (_prev) { + return containerList; + })); + return Promise.resolve(containerList); + }); + + }) : (function (param) { + ReasonApi$MdworldHomeremoteDockerlist.startContainer(id).then(function (_response) { + return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined); + }).then(function (containerList) { + Curry._1(setContainers, (function (_prev) { + return containerList; + })); + return Promise.resolve(containerList); + }); + + }), + question: isRunning ? "Do you want to stop " + name + "?" : "Do you want to start " + name + "?", + className: className, + confirmButtonStyle: confirmButtonStyle, + children: null, + key: id + }, React.createElement("h1", undefined, name), React.createElement("p", undefined, container.Status)); +} + +var make = DockerListItem; + +export { + styles , + make , + +} +/* styles Not a pure module */ diff --git a/packages/dockerlist-client/src/DockerListItem.res b/packages/dockerlist-client/src/DockerListItem.res new file mode 100644 index 0000000..da53d0a --- /dev/null +++ b/packages/dockerlist-client/src/DockerListItem.res @@ -0,0 +1,84 @@ +@module +external styles: { + "button-list-item": string, + "mui-button": string, + "button-success": string, + "button-error": string, +} = "./DockerList.module.css" + +type dockerContainer = { + "Id": string, + "Names": Js.Array2.t, + "State": string, + "Status": React.element, +} + +type setContainersType = (array => array) => unit + +@react.component +let make = ( + ~container: dockerContainer, + ~setContainers: setContainersType, + ~confirmButtonStyle: ReactDOM.Style.t, +) => { + let id = container["Id"] + // https://stackoverflow.com/a/32428199: created, restarting, running, paused, exited, dead + let state = container["State"] + let isRunning = state == "running" + let isExited = state == "exited" + let isUnexpected = !isRunning && !isExited + let className = StyleUtil.toClassName([ + Name(styles["button-list-item"]), + Name(styles["mui-button"]), + NameOn(styles["button-success"], isRunning), + NameOn(styles["button-error"], isUnexpected), + ]) + + let startContainerAndUpdate = (id: string, _event) => { + // TODO |> vs -> + // TODO handle error? + let _ = + ReasonApi.startContainer(id) + |> Js.Promise.then_(_response => { + ReasonApi.getDockerList() + }) + |> Js.Promise.then_(containerList => { + setContainers(_prev => containerList) + Js.Promise.resolve(containerList) + }) + } + + let stopContainerAndUpdate = (id: string, _event) => { + let _ = + ReasonApi.stopContainer(id) + |> Js.Promise.then_(_response => { + ReasonApi.getDockerList() + }) + |> Js.Promise.then_(containerList => { + setContainers(_prev => containerList) + Js.Promise.resolve(containerList) + }) + } + + let name = + container["Names"] + ->Js.Array2.map(name => Js.String2.sliceToEnd(name, ~from=1)) + ->Js.Array2.joinWith(" ") + + +

{name->React.string}

{container["Status"]}

+
+} From 97293776a88bc93d02bf6a0375c24147f7cf4fb3 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Tue, 18 May 2021 15:57:16 +0200 Subject: [PATCH 31/62] Rename ButtonWithConfirm --- ...rmAction.bs.js => ButtonWithConfirm.bs.js} | 4 ++-- ...onfirmAction.res => ButtonWithConfirm.res} | 19 +++++++------------ packages/dockerlist-client/src/DockerList.res | 1 - .../src/DockerListItem.bs.js | 4 ++-- .../dockerlist-client/src/DockerListItem.res | 4 ++-- 5 files changed, 13 insertions(+), 19 deletions(-) rename packages/dockerlist-client/src/{ConfirmAction.bs.js => ButtonWithConfirm.bs.js} (97%) rename packages/dockerlist-client/src/{ConfirmAction.res => ButtonWithConfirm.res} (68%) diff --git a/packages/dockerlist-client/src/ConfirmAction.bs.js b/packages/dockerlist-client/src/ButtonWithConfirm.bs.js similarity index 97% rename from packages/dockerlist-client/src/ConfirmAction.bs.js rename to packages/dockerlist-client/src/ButtonWithConfirm.bs.js index a4a016b..c6acb32 100644 --- a/packages/dockerlist-client/src/ConfirmAction.bs.js +++ b/packages/dockerlist-client/src/ButtonWithConfirm.bs.js @@ -8,7 +8,7 @@ import * as DockerListModuleCss from "./DockerList.module.css"; var styles = DockerListModuleCss; -function ConfirmAction(Props) { +function ButtonWithConfirm(Props) { var onClick = Props.onClick; var question = Props.question; var classNameOpt = Props.className; @@ -48,7 +48,7 @@ function ConfirmAction(Props) { }, "OK")))); } -var make = ConfirmAction; +var make = ButtonWithConfirm; export { styles , diff --git a/packages/dockerlist-client/src/ConfirmAction.res b/packages/dockerlist-client/src/ButtonWithConfirm.res similarity index 68% rename from packages/dockerlist-client/src/ConfirmAction.res rename to packages/dockerlist-client/src/ButtonWithConfirm.res index 34efba4..b62834d 100644 --- a/packages/dockerlist-client/src/ConfirmAction.res +++ b/packages/dockerlist-client/src/ButtonWithConfirm.res @@ -1,24 +1,20 @@ -// {..} means we are handling a JS object with an unknown -// set of attributes -@module external styles: {..} = "./DockerList.module.css" +@module +external styles: {"dialog-actions": string, "mui-button": string} = "./DockerList.module.css" @send external showModal: Dom.element => unit = "showModal" @send external close: Dom.element => unit = "close" -// TODO rename to ButtonWithConfirm / ConfirmingButton - @react.component let make = ( ~onClick: ReactEvent.Mouse.t => unit, ~question: string, ~className: string="", ~confirmButtonStyle: ReactDOM.Style.t, - ~children: React.element + ~children: React.element, ) => { let dialogEl = React.useRef(Js.Nullable.null) + let openDialog = _event => { - // Js.log("handleClickFetch") - // TODO full screen modal to confirm the action when starting/stopping container dialogEl.current->Js.Nullable.toOption->Belt.Option.forEach(input => input->showModal) } @@ -36,11 +32,10 @@ let make = ( diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index d0dba1d..9066685 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -53,7 +53,6 @@ module DockerListMod = { ) ->React.array - // open MaterialUi
dockerContainersElems diff --git a/packages/dockerlist-client/src/DockerListItem.bs.js b/packages/dockerlist-client/src/DockerListItem.bs.js index 47ff24b..2a92bd3 100644 --- a/packages/dockerlist-client/src/DockerListItem.bs.js +++ b/packages/dockerlist-client/src/DockerListItem.bs.js @@ -5,7 +5,7 @@ import * as React from "react"; import * as DockerListModuleCss from "./DockerList.module.css"; import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; import * as StyleUtil$MdworldHomeremoteDockerlist from "./StyleUtil.bs.js"; -import * as ConfirmAction$MdworldHomeremoteDockerlist from "./ConfirmAction.bs.js"; +import * as ButtonWithConfirm$MdworldHomeremoteDockerlist from "./ButtonWithConfirm.bs.js"; var styles = DockerListModuleCss; @@ -41,7 +41,7 @@ function DockerListItem(Props) { var name = container.Names.map(function (name) { return name.slice(1); }).join(" "); - return React.createElement(ConfirmAction$MdworldHomeremoteDockerlist.make, { + return React.createElement(ButtonWithConfirm$MdworldHomeremoteDockerlist.make, { onClick: isRunning ? (function (param) { ReasonApi$MdworldHomeremoteDockerlist.stopContainer(id).then(function (_response) { return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined); diff --git a/packages/dockerlist-client/src/DockerListItem.res b/packages/dockerlist-client/src/DockerListItem.res index da53d0a..129a834 100644 --- a/packages/dockerlist-client/src/DockerListItem.res +++ b/packages/dockerlist-client/src/DockerListItem.res @@ -65,7 +65,7 @@ let make = ( ->Js.Array2.map(name => Js.String2.sliceToEnd(name, ~from=1)) ->Js.Array2.joinWith(" ") -

{name->React.string}

{container["Status"]}

-
+ } From cc4e7ae7e66245235709823f6ba230ae001d497e Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Tue, 18 May 2021 16:09:58 +0200 Subject: [PATCH 32/62] Add gentypeconfig --- packages/dockerlist-client/.bsb.lock | 2 +- packages/dockerlist-client/bsconfig.json | 5 ++++- packages/dockerlist-client/package.json | 1 + .../dockerlist-client/src/DockerList.gen.tsx | 18 ++++++++++++++++++ packages/dockerlist-client/src/DockerList.res | 6 ++---- .../src/DockerList.stories.tsx | 4 ++-- yarn.lock | 5 +++++ 7 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 packages/dockerlist-client/src/DockerList.gen.tsx diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock index 0bb3a99..cc9e272 100644 --- a/packages/dockerlist-client/.bsb.lock +++ b/packages/dockerlist-client/.bsb.lock @@ -1 +1 @@ -243961 \ No newline at end of file +251601 \ No newline at end of file diff --git a/packages/dockerlist-client/bsconfig.json b/packages/dockerlist-client/bsconfig.json index 361599e..a8f2afc 100644 --- a/packages/dockerlist-client/bsconfig.json +++ b/packages/dockerlist-client/bsconfig.json @@ -15,5 +15,8 @@ "suffix": ".bs.js", "reason": { "react-jsx": 3 }, "bs-dependencies": ["@rescript/react", "bs-fetch"], - "namespace": true + "namespace": true, + "gentypeconfig": { + "language": "typescript" + } } diff --git a/packages/dockerlist-client/package.json b/packages/dockerlist-client/package.json index 9a3f315..036c0bc 100644 --- a/packages/dockerlist-client/package.json +++ b/packages/dockerlist-client/package.json @@ -89,6 +89,7 @@ "access": "public" }, "devDependencies": { + "gentype": "^3.50.0", "rescript": "^9.1.2" }, "dependencies": { diff --git a/packages/dockerlist-client/src/DockerList.gen.tsx b/packages/dockerlist-client/src/DockerList.gen.tsx new file mode 100644 index 0000000..50178d4 --- /dev/null +++ b/packages/dockerlist-client/src/DockerList.gen.tsx @@ -0,0 +1,18 @@ +/* TypeScript file generated from DockerList.res by genType. */ +/* eslint-disable import/first */ + + +import * as React from 'react'; + +// @ts-ignore: Implicit any on import +import * as DockerListBS__Es6Import from './DockerList.bs'; +const DockerListBS: any = DockerListBS__Es6Import; + +import type {Style_t as ReactDOM_Style_t} from '@rescript/react/src/ReactDOM.gen'; + +// tslint:disable-next-line:interface-over-type-literal +export type Props = { readonly confirmButtonStyle?: ReactDOM_Style_t }; + +export const DockerListMod_make: React.ComponentType<{ readonly confirmButtonStyle?: ReactDOM_Style_t }> = DockerListBS.DockerListMod.make; + +export const DockerListMod: { make: React.ComponentType<{ readonly confirmButtonStyle?: ReactDOM_Style_t }> } = DockerListBS.DockerListMod diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 9066685..fbfb560 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -6,7 +6,7 @@ @send external close: Dom.element => unit = "close" module DockerListMod = { - @react.component + @genType @react.component let make = ( ~confirmButtonStyle: ReactDOM.Style.t=ReactDOM.Style.make( ~backgroundColor="darkblue", @@ -54,9 +54,7 @@ module DockerListMod = { ->React.array
-
- dockerContainersElems -
+
dockerContainersElems
} } diff --git a/packages/dockerlist-client/src/DockerList.stories.tsx b/packages/dockerlist-client/src/DockerList.stories.tsx index 9197aba..cc11988 100644 --- a/packages/dockerlist-client/src/DockerList.stories.tsx +++ b/packages/dockerlist-client/src/DockerList.stories.tsx @@ -1,5 +1,5 @@ import React, { ReactNode } from "react"; -import { DockerListMod } from "./DockerList.bs"; +import { DockerListMod } from "./DockerList.gen"; import packageJson from "../package.json"; import { BreakpointWrapper } from "../../../helpers"; @@ -17,7 +17,7 @@ export default { export const Default = ({ width }: { width: number }): ReactNode => ( - + ); diff --git a/yarn.lock b/yarn.lock index 1716769..8c5f044 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9892,6 +9892,11 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== +gentype@^3.50.0: + version "3.50.0" + resolved "https://registry.yarnpkg.com/gentype/-/gentype-3.50.0.tgz#68b4de22e885c26e44b110b41c2675e704f1f896" + integrity sha512-EKZzbS4HBuw80zDm5ZJxDdfoGw4nYClTgkv4vp8/db1MXmvCdJSA2NuvxNBYF8i5VqYccdQWzNGClmhWpTFWFQ== + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" From 0cf7359f272f1a25989424fafd9910f6d070c6a3 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Tue, 18 May 2021 16:19:32 +0200 Subject: [PATCH 33/62] Pass url param --- .../dockerlist-client/src/DockerList.bs.js | 4 ++- .../dockerlist-client/src/DockerList.gen.tsx | 6 ++--- packages/dockerlist-client/src/DockerList.res | 4 ++- .../src/DockerList.stories.tsx | 25 ++++++------------- .../src/DockerListItem.bs.js | 9 ++++--- .../dockerlist-client/src/DockerListItem.res | 9 ++++--- .../dockerlist-client/src/ReasonApi.bs.js | 12 ++++----- packages/dockerlist-client/src/ReasonApi.re | 12 ++++----- 8 files changed, 39 insertions(+), 42 deletions(-) diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index ea7908c..7bf4c5e 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -10,6 +10,7 @@ import * as DockerListItem$MdworldHomeremoteDockerlist from "./DockerListItem.bs var styles = DockerListModuleCss; function DockerList$DockerListMod(Props) { + var url = Props.url; var confirmButtonStyleOpt = Props.confirmButtonStyle; var confirmButtonStyle = confirmButtonStyleOpt !== undefined ? Caml_option.valFromOption(confirmButtonStyleOpt) : ({ backgroundColor: "darkblue", @@ -21,7 +22,7 @@ function DockerList$DockerListMod(Props) { var setContainers = match[1]; React.useEffect((function () { var update = function (param) { - ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined).then(function (containerList) { + ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; })); @@ -38,6 +39,7 @@ function DockerList$DockerListMod(Props) { }), []); var dockerContainersElems = match[0].map(function (dockerContainer) { return React.createElement(DockerListItem$MdworldHomeremoteDockerlist.make, { + url: url, container: dockerContainer, setContainers: setContainers, confirmButtonStyle: confirmButtonStyle, diff --git a/packages/dockerlist-client/src/DockerList.gen.tsx b/packages/dockerlist-client/src/DockerList.gen.tsx index 50178d4..f262ffd 100644 --- a/packages/dockerlist-client/src/DockerList.gen.tsx +++ b/packages/dockerlist-client/src/DockerList.gen.tsx @@ -11,8 +11,8 @@ const DockerListBS: any = DockerListBS__Es6Import; import type {Style_t as ReactDOM_Style_t} from '@rescript/react/src/ReactDOM.gen'; // tslint:disable-next-line:interface-over-type-literal -export type Props = { readonly confirmButtonStyle?: ReactDOM_Style_t }; +export type Props = { readonly confirmButtonStyle?: ReactDOM_Style_t; readonly url: string }; -export const DockerListMod_make: React.ComponentType<{ readonly confirmButtonStyle?: ReactDOM_Style_t }> = DockerListBS.DockerListMod.make; +export const DockerListMod_make: React.ComponentType<{ readonly confirmButtonStyle?: ReactDOM_Style_t; readonly url: string }> = DockerListBS.DockerListMod.make; -export const DockerListMod: { make: React.ComponentType<{ readonly confirmButtonStyle?: ReactDOM_Style_t }> } = DockerListBS.DockerListMod +export const DockerListMod: { make: React.ComponentType<{ readonly confirmButtonStyle?: ReactDOM_Style_t; readonly url: string }> } = DockerListBS.DockerListMod diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index fbfb560..6c272e5 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -8,6 +8,7 @@ module DockerListMod = { @genType @react.component let make = ( + ~url: string, ~confirmButtonStyle: ReactDOM.Style.t=ReactDOM.Style.make( ~backgroundColor="darkblue", ~color="white", @@ -21,7 +22,7 @@ module DockerListMod = { // Runs only once right after mounting the component React.useEffect0(() => { let update = () => { - ReasonApi.getDockerList() + ReasonApi.getDockerList(url) |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) Js.Promise.resolve(containerList) @@ -46,6 +47,7 @@ module DockerListMod = { ->Js.Array2.map(dockerContainer => ( - + ); @@ -26,15 +29,3 @@ Default.args = { width: 600 }; Default.argTypes = { width: { control: { type: "range", min: 375, max: 775, step: "100" } }, }; - -// export const WithSquarePicture = (): ReactNode => ( -// -// -// -// ); - -// export const WithLandscapePicture = (): ReactNode => ( -// -// -// -// ); diff --git a/packages/dockerlist-client/src/DockerListItem.bs.js b/packages/dockerlist-client/src/DockerListItem.bs.js index 2a92bd3..a3ac01d 100644 --- a/packages/dockerlist-client/src/DockerListItem.bs.js +++ b/packages/dockerlist-client/src/DockerListItem.bs.js @@ -10,6 +10,7 @@ import * as ButtonWithConfirm$MdworldHomeremoteDockerlist from "./ButtonWithConf var styles = DockerListModuleCss; function DockerListItem(Props) { + var url = Props.url; var container = Props.container; var setContainers = Props.setContainers; var confirmButtonStyle = Props.confirmButtonStyle; @@ -43,8 +44,8 @@ function DockerListItem(Props) { }).join(" "); return React.createElement(ButtonWithConfirm$MdworldHomeremoteDockerlist.make, { onClick: isRunning ? (function (param) { - ReasonApi$MdworldHomeremoteDockerlist.stopContainer(id).then(function (_response) { - return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined); + ReasonApi$MdworldHomeremoteDockerlist.stopContainer(url, id).then(function (_response) { + return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url); }).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; @@ -53,8 +54,8 @@ function DockerListItem(Props) { }); }) : (function (param) { - ReasonApi$MdworldHomeremoteDockerlist.startContainer(id).then(function (_response) { - return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(undefined); + ReasonApi$MdworldHomeremoteDockerlist.startContainer(url, id).then(function (_response) { + return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url); }).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; diff --git a/packages/dockerlist-client/src/DockerListItem.res b/packages/dockerlist-client/src/DockerListItem.res index 129a834..774c244 100644 --- a/packages/dockerlist-client/src/DockerListItem.res +++ b/packages/dockerlist-client/src/DockerListItem.res @@ -17,6 +17,7 @@ type setContainersType = (array => array) => u @react.component let make = ( + ~url: string, ~container: dockerContainer, ~setContainers: setContainersType, ~confirmButtonStyle: ReactDOM.Style.t, @@ -38,9 +39,9 @@ let make = ( // TODO |> vs -> // TODO handle error? let _ = - ReasonApi.startContainer(id) + ReasonApi.startContainer(url, id) |> Js.Promise.then_(_response => { - ReasonApi.getDockerList() + ReasonApi.getDockerList(url) }) |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) @@ -50,9 +51,9 @@ let make = ( let stopContainerAndUpdate = (id: string, _event) => { let _ = - ReasonApi.stopContainer(id) + ReasonApi.stopContainer(url, id) |> Js.Promise.then_(_response => { - ReasonApi.getDockerList() + ReasonApi.getDockerList(url) }) |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) diff --git a/packages/dockerlist-client/src/ReasonApi.bs.js b/packages/dockerlist-client/src/ReasonApi.bs.js index babf4c1..796cf4e 100644 --- a/packages/dockerlist-client/src/ReasonApi.bs.js +++ b/packages/dockerlist-client/src/ReasonApi.bs.js @@ -18,8 +18,8 @@ function fetchDogs(param) { }); } -function getDockerList(param) { - return fetch("http://localhost:3100/api/dockerlist").then(function (response) { +function getDockerList(url) { + return fetch(url + "/api/dockerlist").then(function (response) { return response.json(); }).then(function (jsonResponse) { return Promise.resolve(jsonResponse.containers); @@ -28,8 +28,8 @@ function getDockerList(param) { }); } -function startContainer(id) { - return fetch("http://localhost:3100/api/dockerlist/start/" + id).then(function (response) { +function startContainer(url, id) { + return fetch(url + ("/api/dockerlist/start/" + id)).then(function (response) { return response.json(); }).then(function (jsonResponse) { return Promise.resolve(jsonResponse.containers); @@ -38,8 +38,8 @@ function startContainer(id) { }); } -function stopContainer(id) { - return fetch("http://localhost:3100/api/dockerlist/stop/" + id).then(function (response) { +function stopContainer(url, id) { + return fetch(url + ("/api/dockerlist/stop/" + id)).then(function (response) { return response.json(); }).then(function (jsonResponse) { return Promise.resolve(jsonResponse.containers); diff --git a/packages/dockerlist-client/src/ReasonApi.re b/packages/dockerlist-client/src/ReasonApi.re index c786f0c..ea4292c 100644 --- a/packages/dockerlist-client/src/ReasonApi.re +++ b/packages/dockerlist-client/src/ReasonApi.re @@ -27,8 +27,8 @@ let fetchDogs = () => Js.Promise.( // |> ignore ); -let getDockerList = () => Js.Promise.( - "http://localhost:3100/api/dockerlist" +let getDockerList = (url: string) => Js.Promise.( + (url ++ "/api/dockerlist") -> fetch // fetch("http://localhost:3100/api/dockerlist") @@ -43,8 +43,8 @@ let getDockerList = () => Js.Promise.( // |> ignore ); -let startContainer = (id: string) => Js.Promise.( - ("http://localhost:3100/api/dockerlist/start/" ++ id) +let startContainer = (url: string, id: string) => Js.Promise.( + (url ++ "/api/dockerlist/start/" ++ id) -> fetch // fetch("http://localhost:3100/api/dockerlist") @@ -59,8 +59,8 @@ let startContainer = (id: string) => Js.Promise.( // |> ignore ); -let stopContainer = (id: string) => Js.Promise.( - ("http://localhost:3100/api/dockerlist/stop/" ++ id) +let stopContainer = (url: string, id: string) => Js.Promise.( + (url ++ "/api/dockerlist/stop/" ++ id) -> fetch |> then_(response => response##json()) From 5b10453795fa44fb4757bcdb540ffd83b86e8bda Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Tue, 18 May 2021 17:12:43 +0200 Subject: [PATCH 34/62] Add api test --- packages/dockerlist-client/.bsb.lock | 2 +- .../dockerlist-server/lib/DockerListAPI.d.ts | 2 +- .../dockerlist-server/lib/DockerListAPI.js | 34 ++-- .../src/DockerListAPI.test.ts | 174 ++++++++---------- .../dockerlist-server/src/DockerListAPI.ts | 79 +++----- 5 files changed, 128 insertions(+), 163 deletions(-) diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock index cc9e272..7e37b9d 100644 --- a/packages/dockerlist-client/.bsb.lock +++ b/packages/dockerlist-client/.bsb.lock @@ -1 +1 @@ -251601 \ No newline at end of file +264686 \ No newline at end of file diff --git a/packages/dockerlist-server/lib/DockerListAPI.d.ts b/packages/dockerlist-server/lib/DockerListAPI.d.ts index 98a3d74..a4eb18d 100644 --- a/packages/dockerlist-server/lib/DockerListAPI.d.ts +++ b/packages/dockerlist-server/lib/DockerListAPI.d.ts @@ -5,7 +5,7 @@ interface DockerContainerInfo { Status: string; } export interface DockerListResponse { - status: "received"; + status: "received" | "error"; containers?: DockerContainerInfo[]; } export declare const getDockerList: () => Promise; diff --git a/packages/dockerlist-server/lib/DockerListAPI.js b/packages/dockerlist-server/lib/DockerListAPI.js index cd27c39..a579ca7 100644 --- a/packages/dockerlist-server/lib/DockerListAPI.js +++ b/packages/dockerlist-server/lib/DockerListAPI.js @@ -52,7 +52,6 @@ exports.getDockerList = function () { return __awaiter(void 0, void 0, void 0, f }).json()]; case 1: result = _a.sent(); - // console.log(result); return [2 /*return*/, { status: "received", containers: result.map(pickAndMapContainerProps) @@ -61,16 +60,18 @@ exports.getDockerList = function () { return __awaiter(void 0, void 0, void 0, f }); }); }; exports.startContainer = function (containerId) { return __awaiter(void 0, void 0, void 0, function () { - var result; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, got_1["default"]("http://localhost/v1.41/containers/" + containerId + "/start", { + case 0: + // TODO add error handling + return [4 /*yield*/, got_1["default"]("http://localhost/v1.41/containers/" + containerId + "/start", { method: "POST", socketPath: "/var/run/docker.sock" }).json()]; case 1: - result = _a.sent(); - console.log(result); + // TODO add error handling + _a.sent(); + console.log("before received"); return [2 /*return*/, { status: "received" }]; @@ -78,19 +79,30 @@ exports.startContainer = function (containerId) { return __awaiter(void 0, void }); }); }; exports.stopContainer = function (containerId) { return __awaiter(void 0, void 0, void 0, function () { - var result; + var result, err_1; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, got_1["default"]("http://localhost/v1.41/containers/" + containerId + "/stop", { - method: "POST", - socketPath: "/var/run/docker.sock" - }).json()]; + case 0: + _a.trys.push([0, 2, , 3]); + return [4 /*yield*/, got_1["default"]( + // TODO using invalid url to emulate error + "http://localhost/v1.41/containers/111" + containerId + "/stop", { + method: "POST", + socketPath: "/var/run/docker.sock" + }).json()]; case 1: result = _a.sent(); - console.log(result); + console.log("result", result); return [2 /*return*/, { status: "received" }]; + case 2: + err_1 = _a.sent(); + console.log("err", err_1); + return [2 /*return*/, { + status: "error" + }]; + case 3: return [2 /*return*/]; } }); }); }; diff --git a/packages/dockerlist-server/src/DockerListAPI.test.ts b/packages/dockerlist-server/src/DockerListAPI.test.ts index 93dad6f..118ac65 100644 --- a/packages/dockerlist-server/src/DockerListAPI.test.ts +++ b/packages/dockerlist-server/src/DockerListAPI.test.ts @@ -2,122 +2,100 @@ import { getDockerList, startContainer, stopContainer } from "./DockerListAPI"; import * as GotModule from "got"; import { CancelableRequest } from "got"; -// jest.mock("got"); +jest.mock("got"); -// const gotSpy = jest.spyOn(GotModule, "default"); +const gotSpy = jest.spyOn(GotModule, "default"); -// const SomeArtist = "Some Artist"; -// const SomeTitle = "Some Title"; -// const SomeEndDateTime = "Some End Date Time"; -// const SomePresenters = "Some Presenters"; -// const SomeImageUrl = "Some Image Url"; - -// const mockBaseResponse = { -// artist: SomeArtist, -// title: SomeTitle, -// enddatetime: SomeEndDateTime, -// }; - -// const createMockRequest = ( -// additional: Record -// ): CancelableRequest => { -// const jsonResponse = { -// data: [{ ...mockBaseResponse, ...additional }], -// }; -// return { -// json: () => Promise.resolve(jsonResponse), -// } as CancelableRequest; -// }; +const createMockRequest = ( + // additional: Record + jsonResponse: unknown +): CancelableRequest => { + // const jsonResponse = { + // // data: [{ ...mockBaseResponse, ...additional }], + // // data: [{ ...additional }], + // // ...additional + // }; + return { + json: () => Promise.resolve(jsonResponse), + } as CancelableRequest; +}; describe("DockerListAPI", () => { - // beforeEach(() => { - // gotSpy.mockReset(); - // gotSpy.mockReturnValue( - // createMockRequest({ - // presenters: SomePresenters, - // image: SomeImageUrl, - // }) - // ); - // }); + beforeEach(() => { + gotSpy.mockReset(); + }); it("lists all containers", async () => { + gotSpy.mockReturnValue( + createMockRequest([ + { + RandomProp: "SomeValue", + Id: "1", + Names: ["a", "b", "c"], + State: "started", + Status: "started 10 minutes ago", + }, + ]) + ); const response = await getDockerList(); - // console.log(response); - // expect(gotSpy).toHaveBeenCalledWith( - // "https://www.nporadio2.nl/api/tracks" + // console.log( + // response.containers.map((x) => { + // return `name: ${x.Names.join(" ").padEnd( + // 22, + // " " + // )} | State: ${x.State.padEnd( + // 10, + // " " + // )} | Status: ${x.Status.padEnd(25, " ")} | Id: ${x.Id.padEnd( + // 25, + // " " + // )}`; + // }) // ); - console.log( - response.containers.map((x) => { - return `name: ${x.Names.join(" ").padEnd( - 22, - " " - )} | State: ${x.State.padEnd( - 10, - " " - )} | Status: ${x.Status.padEnd(25, " ")} | Id: ${x.Id.padEnd( - 25, - " " - )}`; - }) - ); expect(response).toEqual({ - // artist: SomeArtist, - // title: SomeTitle, - // last_updated: SomeEndDateTime, - // songImageUrl: SomeImageUrl, - // name: `${SomeTitle} / ${SomePresenters}`, - // imageUrl: "", + status: "received", + containers: [ + { + Id: "1", + Names: ["a", "b", "c"], + State: "started", + Status: "started 10 minutes ago", + }, + ], }); }); - // TODO this already works, but needs a mock it("starts a container", async () => { - // 42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe - // const response = await startContainer( - // "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" - // ); - }); + gotSpy.mockReturnValue(createMockRequest([])); + const response = await startContainer( + "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" + ); - // TODO this already works, but needs a mock - it("stops a container", async () => { - // const response = await stopContainer( - // "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" - // ); + expect(response).toEqual({ + status: "received", + }); }); - // it("can respond when fields are not defined", async () => { - // gotSpy.mockReturnValue(createMockRequest({})); - // const response = await getNowPlaying(ChannelName.RADIO2); - // expect(gotSpy).toHaveBeenCalledWith( - // "https://www.nporadio2.nl/api/tracks" - // ); - // expect(response).toEqual( - // expect.objectContaining({ - // name: SomeTitle, - // imageUrl: "", - // }) - // ); - // }); + it("stops a container", async () => { + gotSpy.mockReturnValue(createMockRequest([])); + const response = await stopContainer( + "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" + ); - // it("retrieves data from Radio3 endpoint", async () => { - // await getNowPlaying(ChannelName.RADIO3); - // expect(gotSpy).toHaveBeenCalledWith("https://www.npo3fm.nl/api/tracks"); - // }); + expect(response).toEqual({ + status: "received", + }); + }); - // it("can respond when fields are not defined for Radio 3", async () => { - // gotSpy.mockReturnValue(createMockRequest({})); - // const response = await getNowPlaying(ChannelName.RADIO3); - // expect(response).toEqual( - // expect.objectContaining({ - // name: SomeTitle, - // imageUrl: "", - // }) - // ); - // }); + it("can return an error when stopping a container", async () => { + gotSpy.mockReturnValue(createMockRequest([])); + const response = await stopContainer( + "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" + ); - // it("ignores invalid channels", async () => { - // const response = await getNowPlaying(("" as unknown) as ChannelName); - // expect(response).toBeUndefined(); - // }); + expect(response).toEqual({ + status: "error", + }); + }); }); diff --git a/packages/dockerlist-server/src/DockerListAPI.ts b/packages/dockerlist-server/src/DockerListAPI.ts index ae67e8f..746c1cd 100644 --- a/packages/dockerlist-server/src/DockerListAPI.ts +++ b/packages/dockerlist-server/src/DockerListAPI.ts @@ -1,29 +1,5 @@ import got from "got"; -// export interface NowPlayingResponse { -// artist: string; -// title: string; -// last_updated: string; -// songImageUrl: string; -// name: string; -// imageUrl: string; -// } - -// export enum ChannelName { -// RADIO2, -// RADIO3, -// } - -// interface TracksResponse { -// data: [ -// { artist: string; title: string; image?: string; enddatetime: string } -// ]; -// } - -// interface BroadcastResponse { -// data: [{ title: string; presenters?: string; image_url?: string }]; -// } - interface DockerContainerInfo { Id: string; Names: string[]; @@ -31,11 +7,10 @@ interface DockerContainerInfo { Status: string; } -// TODO add health type AllResponse = DockerContainerInfo[]; export interface DockerListResponse { - status: "received"; + status: "received" | "error"; containers?: DockerContainerInfo[]; } @@ -51,12 +26,11 @@ export const getDockerList = async (): Promise => { // docker ps -as --format='{{json .}}' (see system guides for more commands) // Using Docker Engine API: curl --unix-socket /var/run/docker.sock http:/v1.24/containers/json?all=true + // TODO add error handling const result = await got("http:/v1.41/containers/json?all=true", { socketPath: "/var/run/docker.sock", }).json(); - // console.log(result); - return { status: "received", containers: result.map(pickAndMapContainerProps), @@ -66,19 +40,12 @@ export const getDockerList = async (): Promise => { export const startContainer = async ( containerId: string ): Promise => { - // Start a container: - // https://docs.docker.com/engine/api/sdk/examples/ - // curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/1c6594faf5/start - // this works: - // 42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe - const result = await got( - `http://localhost/v1.41/containers/${containerId}/start`, - { - method: "POST", - socketPath: "/var/run/docker.sock", - } - ).json(); - console.log(result); + // TODO add error handling + await got(`http://localhost/v1.41/containers/${containerId}/start`, { + method: "POST", + socketPath: "/var/run/docker.sock", + }).json(); + console.log("before received"); return { status: "received", }; @@ -87,15 +54,23 @@ export const startContainer = async ( export const stopContainer = async ( containerId: string ): Promise => { - const result = await got( - `http://localhost/v1.41/containers/${containerId}/stop`, - { - method: "POST", - socketPath: "/var/run/docker.sock", - } - ).json(); - console.log(result); - return { - status: "received", - }; + try { + const result = await got( + // TODO using invalid url to emulate error + `http://localhost/v1.41/containers/111${containerId}/stop`, + { + method: "POST", + socketPath: "/var/run/docker.sock", + } + ).json(); + console.log("result", result); + return { + status: "received", + }; + } catch (err) { + console.log("err", err); + return { + status: "error", + }; + } }; From 10f9aa35c4d20e1c67ac12ddc05fa3b239f6b519 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Thu, 20 May 2021 21:26:24 +0200 Subject: [PATCH 35/62] Add onError --- .../dockerlist-client/src/ReasonApi.bs.js | 31 +++----- packages/dockerlist-client/src/ReasonApi.re | 79 ++++++++----------- .../dockerlist-server/lib/DockerListAPI.js | 56 ++++++++----- .../dockerlist-server/src/DockerListAPI.ts | 68 ++++++++-------- 4 files changed, 115 insertions(+), 119 deletions(-) diff --git a/packages/dockerlist-client/src/ReasonApi.bs.js b/packages/dockerlist-client/src/ReasonApi.bs.js index 796cf4e..6382a86 100644 --- a/packages/dockerlist-client/src/ReasonApi.bs.js +++ b/packages/dockerlist-client/src/ReasonApi.bs.js @@ -1,29 +1,19 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +import * as Curry from "rescript/lib/es6/curry.js"; +import * as Js_exn from "rescript/lib/es6/js_exn.js"; -function myFunc(param) { - return Promise.resolve({ - hd: "a", - tl: /* [] */0 - }); -} - -function fetchDogs(param) { - return fetch("https://dog.ceo/api/breeds/image/random/3").then(function (response) { - return response.json(); - }).then(function (jsonResponse) { - return Promise.resolve(jsonResponse.message); - }).catch(function (_err) { - return Promise.resolve([]); - }); -} - -function getDockerList(url) { +function getDockerList(url, onError) { return fetch(url + "/api/dockerlist").then(function (response) { return response.json(); }).then(function (jsonResponse) { - return Promise.resolve(jsonResponse.containers); + if (jsonResponse.status === "received") { + return Promise.resolve(jsonResponse.containers); + } else { + return Js_exn.raiseError("Invalid getDockerList response"); + } }).catch(function (_err) { + Curry._1(onError, "error in getDockerList"); return Promise.resolve([]); }); } @@ -42,6 +32,7 @@ function stopContainer(url, id) { return fetch(url + ("/api/dockerlist/stop/" + id)).then(function (response) { return response.json(); }).then(function (jsonResponse) { + console.log("error..", jsonResponse.status); return Promise.resolve(jsonResponse.containers); }).catch(function (_err) { return Promise.resolve([]); @@ -49,8 +40,6 @@ function stopContainer(url, id) { } export { - myFunc , - fetchDogs , getDockerList , startContainer , stopContainer , diff --git a/packages/dockerlist-client/src/ReasonApi.re b/packages/dockerlist-client/src/ReasonApi.re index ea4292c..e541b58 100644 --- a/packages/dockerlist-client/src/ReasonApi.re +++ b/packages/dockerlist-client/src/ReasonApi.re @@ -1,42 +1,42 @@ [@bs.val] external fetch: string => Js.Promise.t('a) = "fetch"; -// type state = -// | LoadingDogs -// | ErrorFetchingDogs -// | LoadedDogs(array(string)); +// let unwrapErrorToCb = (error: Js.Promise.error, message: string, cb: string => unit) => { +// switch error { +// // | error error => cb(message ++ "some kind of Error") +// | exception error => { +// // Note: in reason vs rescript write generic like option(Js.Exn.t) vs option +// let optError: option(Js.Exn.t) = Js.Exn.asJsExn(error) +// switch optError { +// | Some(error) => { +// Js.log(Js.Exn.name(error)) +// Js.log(Js.Exn.message(error)) +// // cb(message ++ Js.Exn.name(error) ++ " " ++ Js.Exn.message(error)) +// cb(message) +// } +// | None => cb(message ++ "Not a Js.Exn.t") +// } +// } +// // | Js.Exn.Error(_obj) => cb(message ++ "Not an exn") +// // | Some(m) => cb(message ++ "Not an exn") +// | _ => cb(message ++ "Not an exn") +// } +// } -let myFunc = (): Js.Promise.t('array) => Js.Promise.resolve(["a"]) - -let fetchDogs = () => Js.Promise.( - // "https://dog.ceo/api/breeds/image/random/3" - // -> - // fetch - fetch("https://dog.ceo/api/breeds/image/random/3") - |> then_(response => response##json()) - |> then_(jsonResponse => { - // setState(_previousState => LoadedDogs(jsonResponse##message)); - // Js.log2("testFunc Done", jsonResponse##message) - // Js.Promise.resolve(Belt.List.toArray(jsonResponse##message)); - Js.Promise.resolve(jsonResponse##message); - }) - |> catch(_err => { - // setState(_previousState => ErrorFetchingDogs); - // TODO In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array - Js.Promise.resolve([||]); - }) - // |> ignore - ); - -let getDockerList = (url: string) => Js.Promise.( +let getDockerList = (url: string, onError: string => unit) => Js.Promise.( (url ++ "/api/dockerlist") -> fetch - // fetch("http://localhost:3100/api/dockerlist") |> then_(response => response##json()) |> then_(jsonResponse => { - Js.Promise.resolve(jsonResponse##containers); + if(jsonResponse##status == "received") { + Js.Promise.resolve(jsonResponse##containers); + } else { + Js.Exn.raiseError("Invalid getDockerList response") + } }) |> catch(_err => { + onError("error in getDockerList") + // unwrapErrorToCb(err, "error in getDockerList:", onError) // Note: In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array Js.Promise.resolve([||]); }) @@ -47,16 +47,15 @@ let startContainer = (url: string, id: string) => Js.Promise.( (url ++ "/api/dockerlist/start/" ++ id) -> fetch - // fetch("http://localhost:3100/api/dockerlist") |> then_(response => response##json()) |> then_(jsonResponse => { Js.Promise.resolve(jsonResponse##containers); }) |> catch(_err => { + // TODO onError("error in startContainer") // Note: In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array Js.Promise.resolve([||]); }) - // |> ignore ); let stopContainer = (url: string, id: string) => Js.Promise.( @@ -65,25 +64,13 @@ let stopContainer = (url: string, id: string) => Js.Promise.( fetch |> then_(response => response##json()) |> then_(jsonResponse => { + // TODO fix error handling + Js.log2("error..", jsonResponse##status) Js.Promise.resolve(jsonResponse##containers); }) |> catch(_err => { + // TODO onError("error in startContainer") // Note: In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array Js.Promise.resolve([||]); }) ); - -// let testFunc = () => -// fetch("https://dog.ceo/api/breeds/image/random/3") -// |> Js.Promise.then_(response => response##json()) -// |> Js.Promise.then_(jsonResponse => { -// // setState(_previousState => LoadedDogs(jsonResponse##message)); -// Js.log2("testFunc Done", jsonResponse##message) -// Js.Promise.resolve(jsonResponse##message); -// }) -// |> Js.Promise.catch(_err => { -// // setState(_previousState => ErrorFetchingDogs); -// Js.Promise.resolve([]); -// }) -// |> ignore - \ No newline at end of file diff --git a/packages/dockerlist-server/lib/DockerListAPI.js b/packages/dockerlist-server/lib/DockerListAPI.js index a579ca7..e204f4f 100644 --- a/packages/dockerlist-server/lib/DockerListAPI.js +++ b/packages/dockerlist-server/lib/DockerListAPI.js @@ -42,63 +42,77 @@ var pickAndMapContainerProps = function (_a) { var Id = _a.Id, Names = _a.Names, State = _a.State, Status = _a.Status; return ({ Id: Id, Names: Names, State: State, Status: Status }); }; -// Export for use by other apps +// Using Docker Engine API: curl --unix-socket /var/run/docker.sock http://v1.24/containers/json?all=true +// These urls also work: http://localhost/v1.24/containers/json?all=true or v1.24/containers/json?all=true +var ROOT_URL = "http://v1.41/containers??"; exports.getDockerList = function () { return __awaiter(void 0, void 0, void 0, function () { - var result; + var result, err_1; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, got_1["default"]("http:/v1.41/containers/json?all=true", { - socketPath: "/var/run/docker.sock" - }).json()]; + case 0: + _a.trys.push([0, 2, , 3]); + return [4 /*yield*/, got_1["default"](ROOT_URL + "/json?all=true", { + socketPath: "/var/run/docker.sock" + }).json()]; case 1: result = _a.sent(); return [2 /*return*/, { status: "received", containers: result.map(pickAndMapContainerProps) }]; + case 2: + err_1 = _a.sent(); + console.error(err_1); + return [2 /*return*/, { + status: "error" + }]; + case 3: return [2 /*return*/]; } }); }); }; exports.startContainer = function (containerId) { return __awaiter(void 0, void 0, void 0, function () { + var err_2; return __generator(this, function (_a) { switch (_a.label) { - case 0: - // TODO add error handling - return [4 /*yield*/, got_1["default"]("http://localhost/v1.41/containers/" + containerId + "/start", { - method: "POST", - socketPath: "/var/run/docker.sock" - }).json()]; + case 0: + _a.trys.push([0, 2, , 3]); + return [4 /*yield*/, got_1["default"](ROOT_URL + "/" + containerId + "/start", { + method: "POST", + socketPath: "/var/run/docker.sock" + }).json()]; case 1: - // TODO add error handling _a.sent(); - console.log("before received"); return [2 /*return*/, { status: "received" }]; + case 2: + err_2 = _a.sent(); + console.error(err_2); + return [2 /*return*/, { + status: "error" + }]; + case 3: return [2 /*return*/]; } }); }); }; exports.stopContainer = function (containerId) { return __awaiter(void 0, void 0, void 0, function () { - var result, err_1; + var err_3; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); - return [4 /*yield*/, got_1["default"]( - // TODO using invalid url to emulate error - "http://localhost/v1.41/containers/111" + containerId + "/stop", { + return [4 /*yield*/, got_1["default"](ROOT_URL + "/" + containerId + "/stop", { method: "POST", socketPath: "/var/run/docker.sock" }).json()]; case 1: - result = _a.sent(); - console.log("result", result); + _a.sent(); return [2 /*return*/, { status: "received" }]; case 2: - err_1 = _a.sent(); - console.log("err", err_1); + err_3 = _a.sent(); + console.error(err_3); return [2 /*return*/, { status: "error" }]; diff --git a/packages/dockerlist-server/src/DockerListAPI.ts b/packages/dockerlist-server/src/DockerListAPI.ts index 746c1cd..f8afab7 100644 --- a/packages/dockerlist-server/src/DockerListAPI.ts +++ b/packages/dockerlist-server/src/DockerListAPI.ts @@ -21,54 +21,60 @@ const pickAndMapContainerProps = ({ Status, }: DockerContainerInfo): DockerContainerInfo => ({ Id, Names, State, Status }); -// Export for use by other apps -export const getDockerList = async (): Promise => { - // docker ps -as --format='{{json .}}' (see system guides for more commands) - // Using Docker Engine API: curl --unix-socket /var/run/docker.sock http:/v1.24/containers/json?all=true +// Using Docker Engine API: curl --unix-socket /var/run/docker.sock http://v1.24/containers/json?all=true +// These urls also work: http://localhost/v1.24/containers/json?all=true or v1.24/containers/json?all=true +const ROOT_URL = "http://v1.41/containers??"; - // TODO add error handling - const result = await got("http:/v1.41/containers/json?all=true", { - socketPath: "/var/run/docker.sock", - }).json(); +export const getDockerList = async (): Promise => { + try { + const result = await got(`${ROOT_URL}/json?all=true`, { + socketPath: "/var/run/docker.sock", + }).json(); - return { - status: "received", - containers: result.map(pickAndMapContainerProps), - }; + return { + status: "received", + containers: result.map(pickAndMapContainerProps), + }; + } catch (err) { + console.error(err); + return { + status: "error", + }; + } }; export const startContainer = async ( containerId: string ): Promise => { - // TODO add error handling - await got(`http://localhost/v1.41/containers/${containerId}/start`, { - method: "POST", - socketPath: "/var/run/docker.sock", - }).json(); - console.log("before received"); - return { - status: "received", - }; + try { + await got(`${ROOT_URL}/${containerId}/start`, { + method: "POST", + socketPath: "/var/run/docker.sock", + }).json(); + return { + status: "received", + }; + } catch (err) { + console.error(err); + return { + status: "error", + }; + } }; export const stopContainer = async ( containerId: string ): Promise => { try { - const result = await got( - // TODO using invalid url to emulate error - `http://localhost/v1.41/containers/111${containerId}/stop`, - { - method: "POST", - socketPath: "/var/run/docker.sock", - } - ).json(); - console.log("result", result); + await got(`${ROOT_URL}/${containerId}/stop`, { + method: "POST", + socketPath: "/var/run/docker.sock", + }).json(); return { status: "received", }; } catch (err) { - console.log("err", err); + console.error(err); return { status: "error", }; From 19842e8f243a6920c9b1625f57cedd333268d8e7 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Thu, 20 May 2021 21:37:13 +0200 Subject: [PATCH 36/62] Remove test for error --- packages/dockerlist-server/src/DockerListAPI.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dockerlist-server/src/DockerListAPI.ts b/packages/dockerlist-server/src/DockerListAPI.ts index f8afab7..fa32945 100644 --- a/packages/dockerlist-server/src/DockerListAPI.ts +++ b/packages/dockerlist-server/src/DockerListAPI.ts @@ -23,7 +23,7 @@ const pickAndMapContainerProps = ({ // Using Docker Engine API: curl --unix-socket /var/run/docker.sock http://v1.24/containers/json?all=true // These urls also work: http://localhost/v1.24/containers/json?all=true or v1.24/containers/json?all=true -const ROOT_URL = "http://v1.41/containers??"; +const ROOT_URL = "http://v1.41/containers"; export const getDockerList = async (): Promise => { try { From daa427197a35b7d2d306e73da39dff47245900de Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Thu, 20 May 2021 21:38:32 +0200 Subject: [PATCH 37/62] Add error handling for start and stop --- .../dockerlist-client/src/DockerList.bs.js | 4 +++- .../dockerlist-client/src/DockerList.gen.tsx | 18 ++++++++++++--- packages/dockerlist-client/src/DockerList.res | 5 +++- .../src/DockerList.stories.tsx | 1 + .../src/DockerListItem.bs.js | 9 ++++---- .../dockerlist-client/src/DockerListItem.res | 10 ++++---- .../dockerlist-client/src/ReasonApi.bs.js | 19 +++++++++++---- packages/dockerlist-client/src/ReasonApi.re | 23 ++++++++++++------- 8 files changed, 62 insertions(+), 27 deletions(-) diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 7bf4c5e..8befa45 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -11,6 +11,7 @@ var styles = DockerListModuleCss; function DockerList$DockerListMod(Props) { var url = Props.url; + var onError = Props.onError; var confirmButtonStyleOpt = Props.confirmButtonStyle; var confirmButtonStyle = confirmButtonStyleOpt !== undefined ? Caml_option.valFromOption(confirmButtonStyleOpt) : ({ backgroundColor: "darkblue", @@ -22,7 +23,7 @@ function DockerList$DockerListMod(Props) { var setContainers = match[1]; React.useEffect((function () { var update = function (param) { - ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url).then(function (containerList) { + ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url, onError).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; })); @@ -43,6 +44,7 @@ function DockerList$DockerListMod(Props) { container: dockerContainer, setContainers: setContainers, confirmButtonStyle: confirmButtonStyle, + onError: onError, key: dockerContainer.Id }); }); diff --git a/packages/dockerlist-client/src/DockerList.gen.tsx b/packages/dockerlist-client/src/DockerList.gen.tsx index f262ffd..ceb2b47 100644 --- a/packages/dockerlist-client/src/DockerList.gen.tsx +++ b/packages/dockerlist-client/src/DockerList.gen.tsx @@ -11,8 +11,20 @@ const DockerListBS: any = DockerListBS__Es6Import; import type {Style_t as ReactDOM_Style_t} from '@rescript/react/src/ReactDOM.gen'; // tslint:disable-next-line:interface-over-type-literal -export type Props = { readonly confirmButtonStyle?: ReactDOM_Style_t; readonly url: string }; +export type Props = { + readonly confirmButtonStyle?: ReactDOM_Style_t; + readonly onError: (_1:string) => void; + readonly url: string +}; -export const DockerListMod_make: React.ComponentType<{ readonly confirmButtonStyle?: ReactDOM_Style_t; readonly url: string }> = DockerListBS.DockerListMod.make; +export const DockerListMod_make: React.ComponentType<{ + readonly confirmButtonStyle?: ReactDOM_Style_t; + readonly onError: (_1:string) => void; + readonly url: string +}> = DockerListBS.DockerListMod.make; -export const DockerListMod: { make: React.ComponentType<{ readonly confirmButtonStyle?: ReactDOM_Style_t; readonly url: string }> } = DockerListBS.DockerListMod +export const DockerListMod: { make: React.ComponentType<{ + readonly confirmButtonStyle?: ReactDOM_Style_t; + readonly onError: (_1:string) => void; + readonly url: string +}> } = DockerListBS.DockerListMod diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 6c272e5..8bd4ede 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -9,6 +9,7 @@ module DockerListMod = { @genType @react.component let make = ( ~url: string, + ~onError: string => unit, ~confirmButtonStyle: ReactDOM.Style.t=ReactDOM.Style.make( ~backgroundColor="darkblue", ~color="white", @@ -22,8 +23,9 @@ module DockerListMod = { // Runs only once right after mounting the component React.useEffect0(() => { let update = () => { - ReasonApi.getDockerList(url) + ReasonApi.getDockerList(url, onError) |> Js.Promise.then_(containerList => { + // Js.log() setContainers(_prev => containerList) Js.Promise.resolve(containerList) }) @@ -51,6 +53,7 @@ module DockerListMod = { container={dockerContainer} setContainers={setContainers} confirmButtonStyle={confirmButtonStyle} + onError={onError} /> ) ->React.array diff --git a/packages/dockerlist-client/src/DockerList.stories.tsx b/packages/dockerlist-client/src/DockerList.stories.tsx index 8a065a5..c5164cb 100644 --- a/packages/dockerlist-client/src/DockerList.stories.tsx +++ b/packages/dockerlist-client/src/DockerList.stories.tsx @@ -19,6 +19,7 @@ export const Default = ({ width }: { width: number }): ReactNode => ( console.error(`some error has occurred ${err}`)} confirmButtonStyle={{ backgroundColor: "#1a237e", color: "white" }} /> diff --git a/packages/dockerlist-client/src/DockerListItem.bs.js b/packages/dockerlist-client/src/DockerListItem.bs.js index a3ac01d..5abd2e5 100644 --- a/packages/dockerlist-client/src/DockerListItem.bs.js +++ b/packages/dockerlist-client/src/DockerListItem.bs.js @@ -14,6 +14,7 @@ function DockerListItem(Props) { var container = Props.container; var setContainers = Props.setContainers; var confirmButtonStyle = Props.confirmButtonStyle; + var onError = Props.onError; var id = container.Id; var state = container.State; var isRunning = state === "running"; @@ -44,8 +45,8 @@ function DockerListItem(Props) { }).join(" "); return React.createElement(ButtonWithConfirm$MdworldHomeremoteDockerlist.make, { onClick: isRunning ? (function (param) { - ReasonApi$MdworldHomeremoteDockerlist.stopContainer(url, id).then(function (_response) { - return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url); + ReasonApi$MdworldHomeremoteDockerlist.stopContainer(url, id, onError).then(function (_response) { + return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url, onError); }).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; @@ -54,8 +55,8 @@ function DockerListItem(Props) { }); }) : (function (param) { - ReasonApi$MdworldHomeremoteDockerlist.startContainer(url, id).then(function (_response) { - return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url); + ReasonApi$MdworldHomeremoteDockerlist.startContainer(url, id, onError).then(function (_response) { + return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url, onError); }).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; diff --git a/packages/dockerlist-client/src/DockerListItem.res b/packages/dockerlist-client/src/DockerListItem.res index 774c244..05e4097 100644 --- a/packages/dockerlist-client/src/DockerListItem.res +++ b/packages/dockerlist-client/src/DockerListItem.res @@ -21,6 +21,7 @@ let make = ( ~container: dockerContainer, ~setContainers: setContainersType, ~confirmButtonStyle: ReactDOM.Style.t, + ~onError: string => unit ) => { let id = container["Id"] // https://stackoverflow.com/a/32428199: created, restarting, running, paused, exited, dead @@ -37,11 +38,10 @@ let make = ( let startContainerAndUpdate = (id: string, _event) => { // TODO |> vs -> - // TODO handle error? let _ = - ReasonApi.startContainer(url, id) + ReasonApi.startContainer(url, id, onError) |> Js.Promise.then_(_response => { - ReasonApi.getDockerList(url) + ReasonApi.getDockerList(url, onError) }) |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) @@ -51,9 +51,9 @@ let make = ( let stopContainerAndUpdate = (id: string, _event) => { let _ = - ReasonApi.stopContainer(url, id) + ReasonApi.stopContainer(url, id, onError) |> Js.Promise.then_(_response => { - ReasonApi.getDockerList(url) + ReasonApi.getDockerList(url, onError) }) |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) diff --git a/packages/dockerlist-client/src/ReasonApi.bs.js b/packages/dockerlist-client/src/ReasonApi.bs.js index 6382a86..d0ab68f 100644 --- a/packages/dockerlist-client/src/ReasonApi.bs.js +++ b/packages/dockerlist-client/src/ReasonApi.bs.js @@ -18,23 +18,32 @@ function getDockerList(url, onError) { }); } -function startContainer(url, id) { +function startContainer(url, id, onError) { return fetch(url + ("/api/dockerlist/start/" + id)).then(function (response) { return response.json(); }).then(function (jsonResponse) { - return Promise.resolve(jsonResponse.containers); + if (jsonResponse.status === "received") { + return Promise.resolve([]); + } else { + return Js_exn.raiseError("Invalid startContainer response"); + } }).catch(function (_err) { + Curry._1(onError, "error in startContainer"); return Promise.resolve([]); }); } -function stopContainer(url, id) { +function stopContainer(url, id, onError) { return fetch(url + ("/api/dockerlist/stop/" + id)).then(function (response) { return response.json(); }).then(function (jsonResponse) { - console.log("error..", jsonResponse.status); - return Promise.resolve(jsonResponse.containers); + if (jsonResponse.status === "received") { + return Promise.resolve([]); + } else { + return Js_exn.raiseError("Invalid stopContainer response"); + } }).catch(function (_err) { + Curry._1(onError, "error in stopContainer"); return Promise.resolve([]); }); } diff --git a/packages/dockerlist-client/src/ReasonApi.re b/packages/dockerlist-client/src/ReasonApi.re index e541b58..3b4e3ea 100644 --- a/packages/dockerlist-client/src/ReasonApi.re +++ b/packages/dockerlist-client/src/ReasonApi.re @@ -27,6 +27,7 @@ let getDockerList = (url: string, onError: string => unit) => Js.Promise.( -> fetch |> then_(response => response##json()) + // TODO deduplicate response handling with startContainer and stopContainer |> then_(jsonResponse => { if(jsonResponse##status == "received") { Js.Promise.resolve(jsonResponse##containers); @@ -43,33 +44,39 @@ let getDockerList = (url: string, onError: string => unit) => Js.Promise.( // |> ignore ); -let startContainer = (url: string, id: string) => Js.Promise.( +let startContainer = (url: string, id: string, onError: string => unit) => Js.Promise.( (url ++ "/api/dockerlist/start/" ++ id) -> fetch |> then_(response => response##json()) |> then_(jsonResponse => { - Js.Promise.resolve(jsonResponse##containers); + if(jsonResponse##status == "received") { + Js.Promise.resolve([||]); + } else { + Js.Exn.raiseError("Invalid startContainer response") + } }) |> catch(_err => { - // TODO onError("error in startContainer") + onError("error in startContainer") // Note: In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array Js.Promise.resolve([||]); }) ); -let stopContainer = (url: string, id: string) => Js.Promise.( +let stopContainer = (url: string, id: string, onError: string => unit) => Js.Promise.( (url ++ "/api/dockerlist/stop/" ++ id) -> fetch |> then_(response => response##json()) |> then_(jsonResponse => { - // TODO fix error handling - Js.log2("error..", jsonResponse##status) - Js.Promise.resolve(jsonResponse##containers); + if(jsonResponse##status == "received") { + Js.Promise.resolve([||]); + } else { + Js.Exn.raiseError("Invalid stopContainer response") + } }) |> catch(_err => { - // TODO onError("error in startContainer") + onError("error in stopContainer") // Note: In Rescript ["a"] is an array, but in Reason ["a"] is a list and [|"a"|] is an array Js.Promise.resolve([||]); }) From db42b391eef31a09a2127355dd792f4014a508ba Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Thu, 20 May 2021 21:43:37 +0200 Subject: [PATCH 38/62] Remove unused file --- .../dockerlist-client/src/DockerApi.bs.js | 90 --- packages/dockerlist-client/src/DockerApi.res | 676 ------------------ packages/dockerlist-client/src/ReasonApi.re | 4 + 3 files changed, 4 insertions(+), 766 deletions(-) delete mode 100644 packages/dockerlist-client/src/DockerApi.bs.js delete mode 100644 packages/dockerlist-client/src/DockerApi.res diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js deleted file mode 100644 index 5baadb4..0000000 --- a/packages/dockerlist-client/src/DockerApi.bs.js +++ /dev/null @@ -1,90 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE - -import * as Curry from "rescript/lib/es6/curry.js"; - -function getDogs(address, onDone, onError) { - var request = new XMLHttpRequest(); - request.addEventListener("load", (function (param) { - return Curry._1(onDone, JSON.parse(request.response)); - })); - request.addEventListener("error", (function (param) { - return Curry._1(onError, request.status); - })); - request.open("GET", "https://dog.ceo/api/breeds/image/random/" + address); - request.send(); - -} - -function getDogsAndPrint(param) { - return getDogs("3", (function (response) { - console.log("GetDogsAndPrint Done", response.message); - - }), (function (x) { - console.log("Error logging: " + String(x)); - - })); -} - -function getDogsAndShow(show) { - return getDogs("3", (function (response) { - console.log("GetDogsAndShow Done", response.message); - return Curry._1(show, response.message); - }), (function (x) { - console.log("Error logging: " + String(x)); - - })); -} - -var result = [ - 1, - 2, - 3 - ].map(function (a) { - return a + 1 | 0; - }).filter(function (a) { - return a % 2 === 0; - }); - -console.log(result); - -var myPromise = new Promise((function (resolve, param) { - return resolve(2); - })); - -var __x = myPromise.then(function (value) { - console.log("prom1: ", value); - return Promise.resolve(value + 2 | 0); - }); - -var __x$1 = __x.then(function (value) { - console.log("prom2: ", value); - return Promise.resolve(value + 3 | 0); - }); - -__x$1.catch(function (err) { - console.log("Failure!!", err); - return Promise.resolve(-2); - }); - -function getDogsFetch(param) { - var __x = fetch("https://dog.ceo/api/breeds/image/random/1"); - return __x.then(function (value) { - console.log("getDogsFetch: ", value); - return Promise.resolve(value); - }); -} - -var Api = { - getDogs: getDogs, - getDogsAndPrint: getDogsAndPrint, - getDogsAndShow: getDogsAndShow, - result: result, - myPromise: myPromise, - getDogsFetch: getDogsFetch -}; - -export { - Api , - -} -/* result Not a pure module */ diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res deleted file mode 100644 index 3315476..0000000 --- a/packages/dockerlist-client/src/DockerApi.res +++ /dev/null @@ -1,676 +0,0 @@ -type request -type response - -// open Js.Promise -// open Fetch - -@new external makeXMLHttpRequest: unit => request = "XMLHttpRequest" -@send -external addEventListener: (request, string, unit => unit) => unit = "addEventListener" -@get external response: request => response = "response" -@send external open_: (request, string, string) => unit = "open" -@send external send: request => unit = "send" -@send external abort: request => unit = "abort" - -@get external status: request => int = "status" - -module Api = { - // let addJwtToken: unit => array<(string, string)> = () => - // Utils.getCookie("jwtToken") - // ->Belt.Option.flatMap(snd) - // ->Belt.Option.map(token => [("Authorization", Printf.sprintf("Token %s", token))]) - // ->Belt.Option.getWithDefault([]) - - // let getDogs: unit => array<(string, string)> = () => [ - // ("Content-Type", "application/json; charset=UTF-8"), - // ] - - @scope("JSON") @val - external parseResponse: response => {"message": array} = "parse" - - // XHR example (no dependencies) - let getDogs = (~address, ~onDone, ~onError /* , () */) => { - // let query = (~address) => { - let request = makeXMLHttpRequest() - - request->addEventListener("load", () => onDone(request->response->parseResponse)) - request->addEventListener("error", () => onError(request->status)) - // request->addEventListener("load", () => { - // let response = request->response->parseResponse - // Js.log(response["message"]) - // }) - // request->addEventListener("error", () => { - // Js.log("Error logging here") - // }) - - request->open_("GET", "https://dog.ceo/api/breeds/image/random/" ++ address) - request->send - - // () => request->abort - } - - let getDogsAndPrint = () => - getDogs( - ~address="3", - ~onDone=response => { - // let response = request->response->parseResponse - Js.log2("GetDogsAndPrint Done", response["message"]) - }, - ~onError=x => { - // let response = request->response->parseResponse - Js.log("Error logging: " ++ Belt.Int.toString(x)) - }, - ) - - let getDogsAndShow = (~show) => - getDogs( - ~address="3", - ~onDone=response => { - // let response = request->response->parseResponse - Js.log2("GetDogsAndShow Done", response["message"]) - show(response["message"]) - }, - ~onError=x => { - // let response = request->response->parseResponse - Js.log("Error logging: " ++ Belt.Int.toString(x)) - }, - ) - - let result = [1, 2, 3]->Js.Array2.map(a => a + 1)->Js.Array2.filter(a => mod(a, 2) == 0) - Js.log(result) - - // Working example of promise (with wildcards) - let myPromise = Js.Promise.make((~resolve, ~reject as _) => resolve(. 2)) - let _ = myPromise->Js.Promise.then_(value => { - Js.log2("prom1: ", value) - Js.Promise.resolve(value + 2) - }, _)->Js.Promise.then_(value => { - Js.log2("prom2: ", value) - Js.Promise.resolve(value + 3) - }, _)->Js.Promise.catch(err => { - Js.log2("Failure!!", err) - Js.Promise.resolve(-2) - }, _) - - // Using Fetch API with bs-fetch bindings - // let getDogsFetch = () => Js.Promise.( - // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") - // |> then_(Fetch.Response.text) - // |> then_(text => print_endline(text) |> resolve), - // ) - // Works: - // let getDogsFetch = () => - // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1")->Js.Promise.then_(value => { - // Js.log2("getDogsFetch: ", value) - // Js.Promise.resolve(value) - // }, _) - - // Note: https://kevanstannard.github.io/rescript-blog/fetch-json.html - // module Decode = { - // // open Json.Decode - // let catData = (data: Js.Json.t) => { - // file: Json.Decode.field("file", string, data), - // } - // } - - // Note: https://medium.com/@kevanstannard/how-to-fetch-json-data-with-reasonml-a4507ec945ad - let getDogsFetch = () => - "https://dog.ceo/api/breeds/image/random/1" - ->Fetch.fetch - // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") - // ->Js.Promise.then_(Fetch.Response.text) - ->Js.Promise.then_(value => { - Js.log2("getDogsFetch: ", value) - Js.Promise.resolve(value) - }, _) - - // type data = {message: array} - - // @scope("JSON") @val - // external parseDogResponse: string => data = "parse" - - // let result = parseDogResponse(`{"message": ["Luke", "Christine"]}`) - // let name1 = result.message[0] - - // let _ = - // getDogsFetch() - // |> Js.Promise.then_(Fetch.Response.json) - // |> Js.Promise.then_(x => Js.Promise.resolve(parseDogResponse)) - // // |> Js.Promise.then_(response => { - // // switch Js.Json.decodeObject(response) { - // // | Some(decodedRes) => Js.Promise.resolve(decodedRes) - // // | None => Js.Promise.resolve(Js.Dict.empty()) - // // } - // // }) - // |> Js.Promise.then_(response => { - // Js.log2("getDogsFetch2: ", response.message[0]) - // Js.Promise.resolve(response.message[0]) - // }) - - // let getDogsFetch = () => Js.Promise.( - // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") - // |> then_(Fetch.Response.text) - // |> then_(text => print_endline(text) |> resolve), - // ) - - // let getDogsFetch = () => - // Fetch.fetch("https://dog.ceo/api/breeds/image/random/1") - // |> Js.Promise.then_(Fetch.Response.text) - // |> Js.Promise.then_(text => print_endline(text) |> Js.Promise.resolve) - - // let tags: unit => Js.Promise.t> = () => - // Endpoints.tags - // |> fetch - // |> then_(parseJsonIfOk) - // |> then_(getErrorBodyText) - // |> then_(result => - // result->Belt.Result.flatMap(json => json->Shape.Tags.decode->AppError.decode)->resolve - // ) -} - -// TODO use Fetch -// -// -// module Action = { -// type article = -// | Create(Shape.Article.t) -// | Read(string) -// | Update(string, Shape.Article.t) -// | Delete(string) - -// type follow = -// | Follow(string) -// | Unfollow(string) - -// type favorite = -// | Favorite(string) -// | Unfavorite(string) -// } - -// module Headers = { -// let addJwtToken: unit => array<(string, string)> = () => -// Utils.getCookie("jwtToken") -// ->Belt.Option.flatMap(snd) -// ->Belt.Option.map(token => [("Authorization", Printf.sprintf("Token %s", token))]) -// ->Belt.Option.getWithDefault([]) - -// let addContentTypeAsJson: unit => array<(string, string)> = () => [ -// ("Content-Type", "application/json; charset=UTF-8"), -// ] -// } - -// let getErrorBodyJson: result => Js.Promise.t< -// result, -// > = x => -// switch x { -// | Ok(_json) as ok => ok |> resolve -// | Error(resp) => -// resp -// |> Response.json -// |> then_(json => { -// let status = Response.status(resp) -// let statusText = Response.statusText(resp) -// let bodyJson = #json(json) - -// AppError.fetch((status, statusText, bodyJson))->Belt.Result.Error->resolve -// }) -// } - -// let getErrorBodyText: result => Js.Promise.t< -// result, -// > = x => -// switch x { -// | Ok(_json) as ok => ok |> resolve -// | Error(resp) => -// let status = Response.status(resp) -// let statusText = Response.statusText(resp) -// let bodyText = #text("FIXME: show body text instead") - -// AppError.fetch((status, statusText, bodyText))->Belt.Result.Error->resolve -// } - -// let parseJsonIfOk: Response.t => Js.Promise.t> = resp => -// if Response.ok(resp) { -// resp -// |> Response.json -// |> then_(json => json->Ok->resolve) -// |> catch(_error => resp->Belt.Result.Error->resolve) -// } else { -// resp->Belt.Result.Error->resolve -// } - -// let article: ( -// ~action: Action.article, -// unit, -// ) => Js.Promise.t> = (~action, ()) => { -// let body = switch action { -// | Create(article) | Update(_, article) => -// let article = -// list{ -// ("title", Js.Json.string(article.title)), -// ("description", Js.Json.string(article.description)), -// ("body", Js.Json.string(article.body)), -// ("tagList", Js.Json.stringArray(article.tagList)), -// } -// |> Js.Dict.fromList -// |> Js.Json.object_ - -// list{("article", article)} -// ->Js.Dict.fromList -// ->Js.Json.object_ -// ->Js.Json.stringify -// ->BodyInit.make -// ->Some -// | Read(_) | Delete(_) => None -// } - -// let method__ = switch action { -// | Create(_) => Post -// | Read(_) => Get -// | Update(_) => Put -// | Delete(_) => Delete -// } - -// let headers = -// switch action { -// | Create(_) | Update(_) => Headers.addContentTypeAsJson() -// | Read(_) | Delete(_) => [] -// } -// ->Belt.Array.concat(Headers.addJwtToken()) -// ->HeadersInit.makeWithArray - -// let slug = switch action { -// | Create(_) => "" -// | Read(slug) | Update(slug, _) | Delete(slug) => slug -// } - -// fetchWithInit( -// Endpoints.Articles.article(~slug, ()), -// RequestInit.make(~method_=method__, ~headers, ~body?, ()), -// ) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyJson) -// |> then_(result => { -// result -// ->Belt.Result.flatMap(json => { -// try { -// json -// ->Js.Json.decodeObject -// ->Belt.Option.getExn -// ->Js.Dict.get("article") -// ->Belt.Option.getExn -// ->Shape.Article.decode -// ->AppError.decode -// } catch { -// | _ => AppError.decode(Error("API.article: failed to decode json")) -// } -// }) -// ->resolve -// }) -// } - -// let favoriteArticle: ( -// ~action: Action.favorite, -// unit, -// ) => Js.Promise.t> = (~action, ()) => { -// let requestInit = RequestInit.make( -// ~method_=switch action { -// | Favorite(_slug) => Post -// | Unfavorite(_slug) => Delete -// }, -// ~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, -// (), -// ) - -// Endpoints.Articles.favorite( -// ~slug=switch action { -// | Favorite(slug) => slug -// | Unfavorite(slug) => slug -// }, -// (), -// ) -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => -// result -// ->Belt.Result.flatMap(json => -// try { -// json -// ->Js.Json.decodeObject -// ->Belt.Option.getExn -// ->Js.Dict.get("article") -// ->Belt.Option.getExn -// ->Shape.Article.decode -// ->AppError.decode -// } catch { -// | _ => AppError.decode(Error("API.favoriteArticle: failed to decode json")) -// } -// ) -// ->resolve -// ) -// } - -// let listArticles: ( -// ~limit: int=?, -// ~offset: int=?, -// ~tag: string=?, -// ~author: string=?, -// ~favorited: string=?, -// unit, -// ) => Js.Promise.t> = ( -// ~limit=10, -// ~offset=0, -// ~tag=?, -// ~author=?, -// ~favorited=?, -// (), -// ) => { -// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) - -// Endpoints.Articles.root(~limit, ~offset, ~tag?, ~author?, ~favorited?, ()) -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => -// result->Belt.Result.flatMap(json => json->Shape.Articles.decode->AppError.decode)->resolve -// ) -// } - -// let feedArticles: ( -// ~limit: int=?, -// ~offset: int=?, -// unit, -// ) => Js.Promise.t> = (~limit=10, ~offset=0, ()) => { -// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) - -// Endpoints.Articles.feed(~limit, ~offset, ()) -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => -// result->Belt.Result.flatMap(json => json->Shape.Articles.decode->AppError.decode)->resolve -// ) -// } - -// let tags: unit => Js.Promise.t> = () => -// Endpoints.tags -// |> fetch -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => -// result->Belt.Result.flatMap(json => json->Shape.Tags.decode->AppError.decode)->resolve -// ) - -// let currentUser: unit => Js.Promise.t> = () => { -// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) - -// Endpoints.user -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => -// result->Belt.Result.flatMap(json => json->Shape.User.decode->AppError.decode)->resolve -// ) -// } - -// let updateUser: ( -// ~user: Shape.User.t, -// ~password: string, -// unit, -// ) => Js.Promise.t> = (~user, ~password, ()) => { -// let user = -// list{ -// list{("email", Js.Json.string(user.email))}, -// list{("bio", Js.Json.string(user.bio->Belt.Option.getWithDefault("")))}, -// list{("image", Js.Json.string(user.image->Belt.Option.getWithDefault("")))}, -// list{("username", Js.Json.string(user.username))}, -// if password == "" { -// list{} -// } else { -// list{("password", Js.Json.string(password))} -// }, -// } -// |> List.flatten -// |> Js.Dict.fromList -// |> Js.Json.object_ -// let body = -// list{("user", user)} -// |> Js.Dict.fromList -// |> Js.Json.object_ -// |> Js.Json.stringify -// |> BodyInit.make - -// let requestInit = RequestInit.make( -// ~method_=Put, -// ~headers=Headers.addJwtToken() -// ->Belt.Array.concat(Headers.addContentTypeAsJson()) -// ->HeadersInit.makeWithArray, -// ~body, -// (), -// ) - -// Endpoints.user -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyJson) -// |> then_(result => -// result->Belt.Result.flatMap(json => json->Shape.User.decode->AppError.decode)->resolve -// ) -// } - -// let followUser: ( -// ~action: Action.follow, -// unit, -// ) => Js.Promise.t> = (~action, ()) => { -// let requestInit = RequestInit.make( -// ~method_=switch action { -// | Follow(_username) => Post -// | Unfollow(_username) => Delete -// }, -// ~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, -// (), -// ) - -// Endpoints.Profiles.follow( -// ~username=switch action { -// | Follow(username) | Unfollow(username) => username -// }, -// (), -// ) -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => -// result->Belt.Result.flatMap(json => { -// try { -// json -// ->Js.Json.decodeObject -// ->Belt.Option.getExn -// ->Js.Dict.get("profile") -// ->Belt.Option.getExn -// ->Shape.Author.decode -// ->AppError.decode -// } catch { -// | _ => AppError.decode(Belt.Result.Error("API.followUser: failed to decode json")) -// } -// }) |> resolve -// ) -// } - -// let getComments: ( -// ~slug: string, -// unit, -// ) => Js.Promise.t, AppError.t>> = (~slug, ()) => { -// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) - -// Endpoints.Articles.comments(~slug, ()) -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => -// result->Belt.Result.flatMap(json => json->Shape.Comment.decode->AppError.decode)->resolve -// ) -// } - -// let deleteComment: ( -// ~slug: string, -// ~id: int, -// unit, -// ) => Js.Promise.t> = (~slug, ~id, ()) => { -// let requestInit = RequestInit.make( -// ~method_=Delete, -// ~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, -// (), -// ) - -// Endpoints.Articles.comment(~slug, ~id, ()) -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => result->Belt.Result.flatMap(_json => Belt.Result.Ok((slug, id)))->resolve) -// } - -// let addComment: ( -// ~slug: string, -// ~body: string, -// unit, -// ) => Js.Promise.t> = (~slug, ~body, ()) => { -// let comment = list{("body", Js.Json.string(body))} |> Js.Dict.fromList |> Js.Json.object_ - -// let body = -// list{("comment", comment)} -// |> Js.Dict.fromList -// |> Js.Json.object_ -// |> Js.Json.stringify -// |> BodyInit.make - -// let requestInit = RequestInit.make( -// ~method_=Post, -// ~headers=Headers.addJwtToken() -// ->Belt.Array.concat(Headers.addContentTypeAsJson()) -// ->HeadersInit.makeWithArray, -// ~body, -// (), -// ) - -// Endpoints.Articles.comments(~slug, ()) -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => -// result -// ->Belt.Result.flatMap(json => { -// try { -// json -// ->Js.Json.decodeObject -// ->Belt.Option.getExn -// ->Js.Dict.get("comment") -// ->Belt.Option.getExn -// ->Shape.Comment.decodeComment -// ->AppError.decode -// } catch { -// | _ => AppError.decode(Belt.Result.Error("API.addComment: failed to decode json")) -// } -// }) -// ->resolve -// ) -// } - -// let getProfile: (~username: string, unit) => Js.Promise.t> = ( -// ~username, -// (), -// ) => { -// let requestInit = RequestInit.make(~headers=Headers.addJwtToken()->HeadersInit.makeWithArray, ()) - -// Endpoints.Profiles.profile(~username, ()) -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyText) -// |> then_(result => -// result -// ->Belt.Result.flatMap(json => { -// try { -// json -// ->Js.Json.decodeObject -// ->Belt.Option.getExn -// ->Js.Dict.get("profile") -// ->Belt.Option.getExn -// ->Shape.Author.decode -// ->AppError.decode -// } catch { -// | _ => AppError.decode(Belt.Result.Error("API.getProfile: failed to decode json")) -// } -// }) -// ->resolve -// ) -// } - -// let login = (~email: string, ~password: string, ()): Js.Promise.t< -// result, -// > => { -// let user = -// list{("email", Js.Json.string(email)), ("password", Js.Json.string(password))} -// |> Js.Dict.fromList -// |> Js.Json.object_ - -// let body = -// list{("user", user)} -// |> Js.Dict.fromList -// |> Js.Json.object_ -// |> Js.Json.stringify -// |> BodyInit.make - -// let requestInit = RequestInit.make( -// ~method_=Post, -// ~headers=Headers.addContentTypeAsJson()->HeadersInit.makeWithArray, -// ~body, -// (), -// ) - -// Endpoints.Users.login -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyJson) -// |> then_(result => -// result->Belt.Result.flatMap(json => json->Shape.User.decode->AppError.decode)->resolve -// ) -// } - -// let register: ( -// ~username: string, -// ~email: string, -// ~password: string, -// unit, -// ) => Js.Promise.t> = (~username, ~email, ~password, ()) => { -// let user = -// list{ -// ("email", Js.Json.string(email)), -// ("password", Js.Json.string(password)), -// ("username", Js.Json.string(username)), -// } -// |> Js.Dict.fromList -// |> Js.Json.object_ - -// let body = -// list{("user", user)} -// |> Js.Dict.fromList -// |> Js.Json.object_ -// |> Js.Json.stringify -// |> BodyInit.make - -// let requestInit = RequestInit.make( -// ~method_=Post, -// ~headers=Headers.addContentTypeAsJson()->HeadersInit.makeWithArray, -// ~body, -// (), -// ) - -// Endpoints.Users.root -// |> fetchWithInit(_, requestInit) -// |> then_(parseJsonIfOk) -// |> then_(getErrorBodyJson) -// |> then_(result => -// result->Belt.Result.flatMap(json => json->Shape.User.decode->AppError.decode)->resolve -// ) -// } diff --git a/packages/dockerlist-client/src/ReasonApi.re b/packages/dockerlist-client/src/ReasonApi.re index 3b4e3ea..74e4c5c 100644 --- a/packages/dockerlist-client/src/ReasonApi.re +++ b/packages/dockerlist-client/src/ReasonApi.re @@ -1,5 +1,9 @@ [@bs.val] external fetch: string => Js.Promise.t('a) = "fetch"; +/** + * This is a .re (ReasonML) file instead of an .res (ReScript) file, because I can't get fetch to work in ReScript + */ + // let unwrapErrorToCb = (error: Js.Promise.error, message: string, cb: string => unit) => { // switch error { // // | error error => cb(message ++ "some kind of Error") From 65dc911962f3519c0e217c3adb77a34c91ee17ee Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 13:27:17 +0200 Subject: [PATCH 39/62] Rename ReasonApi to DockerApi --- packages/dockerlist-client/.bsb.lock | 2 +- packages/dockerlist-client/package.json | 2 +- .../src/{ReasonApi.bs.js => DockerApi.bs.js} | 0 .../src/{ReasonApi.re => DockerApi.re} | 0 packages/dockerlist-client/src/DockerList.bs.js | 4 ++-- packages/dockerlist-client/src/DockerList.res | 2 +- packages/dockerlist-client/src/DockerList.stories.tsx | 3 ++- packages/dockerlist-client/src/DockerListItem.bs.js | 10 +++++----- packages/dockerlist-client/src/DockerListItem.res | 10 +++++----- 9 files changed, 17 insertions(+), 16 deletions(-) rename packages/dockerlist-client/src/{ReasonApi.bs.js => DockerApi.bs.js} (100%) rename packages/dockerlist-client/src/{ReasonApi.re => DockerApi.re} (100%) diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock index 7e37b9d..9f6ded0 100644 --- a/packages/dockerlist-client/.bsb.lock +++ b/packages/dockerlist-client/.bsb.lock @@ -1 +1 @@ -264686 \ No newline at end of file +306000 \ No newline at end of file diff --git a/packages/dockerlist-client/package.json b/packages/dockerlist-client/package.json index 036c0bc..83dd0a0 100644 --- a/packages/dockerlist-client/package.json +++ b/packages/dockerlist-client/package.json @@ -8,7 +8,7 @@ "url": "https://github.com/mdvanes/homeremote-plugins.git" }, "scripts": { - "build": "webpack-cli --config webpack.config.prod.js", + "build": "yarn re:build", "re:build": "rescript", "re:start": "rescript build -w" }, diff --git a/packages/dockerlist-client/src/ReasonApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js similarity index 100% rename from packages/dockerlist-client/src/ReasonApi.bs.js rename to packages/dockerlist-client/src/DockerApi.bs.js diff --git a/packages/dockerlist-client/src/ReasonApi.re b/packages/dockerlist-client/src/DockerApi.re similarity index 100% rename from packages/dockerlist-client/src/ReasonApi.re rename to packages/dockerlist-client/src/DockerApi.re diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 8befa45..0211dda 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -4,7 +4,7 @@ import * as Curry from "rescript/lib/es6/curry.js"; import * as React from "react"; import * as Caml_option from "rescript/lib/es6/caml_option.js"; import * as DockerListModuleCss from "./DockerList.module.css"; -import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; +import * as DockerApi$MdworldHomeremoteDockerlist from "./DockerApi.bs.js"; import * as DockerListItem$MdworldHomeremoteDockerlist from "./DockerListItem.bs.js"; var styles = DockerListModuleCss; @@ -23,7 +23,7 @@ function DockerList$DockerListMod(Props) { var setContainers = match[1]; React.useEffect((function () { var update = function (param) { - ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url, onError).then(function (containerList) { + DockerApi$MdworldHomeremoteDockerlist.getDockerList(url, onError).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; })); diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index 8bd4ede..ef39b0d 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -23,7 +23,7 @@ module DockerListMod = { // Runs only once right after mounting the component React.useEffect0(() => { let update = () => { - ReasonApi.getDockerList(url, onError) + DockerApi.getDockerList(url, onError) |> Js.Promise.then_(containerList => { // Js.log() setContainers(_prev => containerList) diff --git a/packages/dockerlist-client/src/DockerList.stories.tsx b/packages/dockerlist-client/src/DockerList.stories.tsx index c5164cb..ca5432b 100644 --- a/packages/dockerlist-client/src/DockerList.stories.tsx +++ b/packages/dockerlist-client/src/DockerList.stories.tsx @@ -1,4 +1,5 @@ import React, { ReactNode } from "react"; +import { action } from "@storybook/addon-actions"; import { DockerListMod } from "./DockerList.gen"; import packageJson from "../package.json"; import { BreakpointWrapper } from "../../../helpers"; @@ -19,7 +20,7 @@ export const Default = ({ width }: { width: number }): ReactNode => ( console.error(`some error has occurred ${err}`)} + onError={action(`some error has occurred`)} confirmButtonStyle={{ backgroundColor: "#1a237e", color: "white" }} /> diff --git a/packages/dockerlist-client/src/DockerListItem.bs.js b/packages/dockerlist-client/src/DockerListItem.bs.js index 5abd2e5..75625ef 100644 --- a/packages/dockerlist-client/src/DockerListItem.bs.js +++ b/packages/dockerlist-client/src/DockerListItem.bs.js @@ -3,7 +3,7 @@ import * as Curry from "rescript/lib/es6/curry.js"; import * as React from "react"; import * as DockerListModuleCss from "./DockerList.module.css"; -import * as ReasonApi$MdworldHomeremoteDockerlist from "./ReasonApi.bs.js"; +import * as DockerApi$MdworldHomeremoteDockerlist from "./DockerApi.bs.js"; import * as StyleUtil$MdworldHomeremoteDockerlist from "./StyleUtil.bs.js"; import * as ButtonWithConfirm$MdworldHomeremoteDockerlist from "./ButtonWithConfirm.bs.js"; @@ -45,8 +45,8 @@ function DockerListItem(Props) { }).join(" "); return React.createElement(ButtonWithConfirm$MdworldHomeremoteDockerlist.make, { onClick: isRunning ? (function (param) { - ReasonApi$MdworldHomeremoteDockerlist.stopContainer(url, id, onError).then(function (_response) { - return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url, onError); + DockerApi$MdworldHomeremoteDockerlist.stopContainer(url, id, onError).then(function (_response) { + return DockerApi$MdworldHomeremoteDockerlist.getDockerList(url, onError); }).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; @@ -55,8 +55,8 @@ function DockerListItem(Props) { }); }) : (function (param) { - ReasonApi$MdworldHomeremoteDockerlist.startContainer(url, id, onError).then(function (_response) { - return ReasonApi$MdworldHomeremoteDockerlist.getDockerList(url, onError); + DockerApi$MdworldHomeremoteDockerlist.startContainer(url, id, onError).then(function (_response) { + return DockerApi$MdworldHomeremoteDockerlist.getDockerList(url, onError); }).then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; diff --git a/packages/dockerlist-client/src/DockerListItem.res b/packages/dockerlist-client/src/DockerListItem.res index 05e4097..3f121f7 100644 --- a/packages/dockerlist-client/src/DockerListItem.res +++ b/packages/dockerlist-client/src/DockerListItem.res @@ -37,11 +37,11 @@ let make = ( ]) let startContainerAndUpdate = (id: string, _event) => { - // TODO |> vs -> + // TODO |> vs ->_ let _ = - ReasonApi.startContainer(url, id, onError) + DockerApi.startContainer(url, id, onError) |> Js.Promise.then_(_response => { - ReasonApi.getDockerList(url, onError) + DockerApi.getDockerList(url, onError) }) |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) @@ -51,9 +51,9 @@ let make = ( let stopContainerAndUpdate = (id: string, _event) => { let _ = - ReasonApi.stopContainer(url, id, onError) + DockerApi.stopContainer(url, id, onError) |> Js.Promise.then_(_response => { - ReasonApi.getDockerList(url, onError) + DockerApi.getDockerList(url, onError) }) |> Js.Promise.then_(containerList => { setContainers(_prev => containerList) From 94ea8e7f5350b1c75634a4e272964763a6824223 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 15:39:03 +0200 Subject: [PATCH 40/62] Test rescript version of fetch --- packages/dockerlist-client/src/TestApi.res | 134 +++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 packages/dockerlist-client/src/TestApi.res diff --git a/packages/dockerlist-client/src/TestApi.res b/packages/dockerlist-client/src/TestApi.res new file mode 100644 index 0000000..1990161 --- /dev/null +++ b/packages/dockerlist-client/src/TestApi.res @@ -0,0 +1,134 @@ +// [@bs.val] external fetch: string => Js.Promise.t('a) = "fetch"; + +// let getDockerList1 = (url: string, onError: string => unit) => Js.Promise.("someurl"->fetch); + +// let getDockerList2 = (url: string, onError: string => unit) => "someurl"->fetch; + + +let myPromise = Js.Promise.make((~resolve, ~reject) => { + Js.log(reject) + resolve(. 2) +}) + +// a |> f(b) turns into f(b, a) +// a -> f(b) turns into f(a, b) + +// type person = { +// name: string, +// friends: array, +// age: int, +// } + +// @module external john: person = "john" + +// let johnName = john.name + +// TODO deduplicate/import this type from DockerListItem.res +type dockerContainer = { + "Id": string, + "Names": Js.Array2.t, + "State": string, + "Status": React.element, +} + +type dockerListResponse = { + status: string, // TODO convert to "received" | "error" + containers: array +} + +// NOTE: it might be better to do `|> then_(Fetch.Response.json)` (instead of `|> then_(Fetch.Response.text)`) and then Decode the response with e.g. @glennsl/bs-json +@scope("JSON") @val +external parseIntoDockerListResponse: string => dockerListResponse = "parse" + +open Js.Promise +let getDockerList = (url: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist`) + |> then_(Fetch.Response.text) + |> then_((jsonResponse) => { + let response = parseIntoDockerListResponse(jsonResponse) + // Js.log2("jpr_|>", response.status) + if (response.status == "received") { + // Js.log(response.containers) + Js.Promise.resolve(response.containers) + } else { + // Js.log("errors") + // Js.Promise.resolve([]) + Js.Exn.raiseError("Invalid getDockerList response") + } + }, _) + |> catch(_err => { + onError("error in getDockerList__TestApi.res") + Js.Promise.resolve([]) + }, _) + +let blabla = () => Fetch.fetch("http://localhost:3100/api/dockerlist") + |> then_(Fetch.Response.json) + |> then_(value => { + Js.log2("jpr_|>", value) + Js.Promise.resolve(value) + }, _) + +// let blabla3 = () => then_(value => { +// Js.log2("jpr_nested", value) +// Js.Promise.resolve(value) +// }, then_(Fetch.Response.json, Fetch.fetch("http://localhost:3100/api/dockerlist"))) + +// let blabla = () => Fetch.Response.json +// ->then_(Fetch.fetch("http://localhost:3100/api/dockerlist")) + +let blabla1 = () => Fetch.fetch("http://localhost:3100/api/dockerlist") + // ->Js.Promise.then_(value => { + // // Js.log(value) + // Js.Promise.resolve(value + 2) + // }, + // _) + // ->Js.Promise.then_(value => { + // // Js.log(value) + // Js.Promise.resolve(value + 3) + // }, _) + // ->Js.Promise.then_(value => value, _) + ->Js.Promise.then_(value => { + // let _foo = value.json() + Js.log2("blabla:", value) + Js.Promise.resolve(value) + }, _) + +// type data = {names: array} + + +// type point = { +// x: int, +// y: int +// }; + +// type line = { +// start: point, +// end_: point, +// thickness: option +// } + + + +// open Json.Decode + +// module Decode = { +// let point = json => +// { +// x: json |> field("x", int), +// y: json |> field("y", int) +// }; + +// let line = json => +// { +// start: json |> field("start", point), +// end_: json |> field("end", point), +// thickness: json |> optional(field("thickness", int)) +// }; +// }; + +// let data = { +// "start": { "x": 1, "y": -4 }, +// "end": { "x": 5, "y": 8 } +// } ; + +// let line = data |> Json.parseOrRaise +// |> Decode.line; \ No newline at end of file From 74d8b8dac885cdf586062e5956057a47d6bf61b4 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 15:43:34 +0200 Subject: [PATCH 41/62] Convert to rescript fetch --- packages/dockerlist-client/src/TestApi.res | 129 +++++---------------- 1 file changed, 29 insertions(+), 100 deletions(-) diff --git a/packages/dockerlist-client/src/TestApi.res b/packages/dockerlist-client/src/TestApi.res index 1990161..7339f55 100644 --- a/packages/dockerlist-client/src/TestApi.res +++ b/packages/dockerlist-client/src/TestApi.res @@ -1,28 +1,3 @@ -// [@bs.val] external fetch: string => Js.Promise.t('a) = "fetch"; - -// let getDockerList1 = (url: string, onError: string => unit) => Js.Promise.("someurl"->fetch); - -// let getDockerList2 = (url: string, onError: string => unit) => "someurl"->fetch; - - -let myPromise = Js.Promise.make((~resolve, ~reject) => { - Js.log(reject) - resolve(. 2) -}) - -// a |> f(b) turns into f(b, a) -// a -> f(b) turns into f(a, b) - -// type person = { -// name: string, -// friends: array, -// age: int, -// } - -// @module external john: person = "john" - -// let johnName = john.name - // TODO deduplicate/import this type from DockerListItem.res type dockerContainer = { "Id": string, @@ -41,94 +16,48 @@ type dockerListResponse = { external parseIntoDockerListResponse: string => dockerListResponse = "parse" open Js.Promise + let getDockerList = (url: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist`) |> then_(Fetch.Response.text) |> then_((jsonResponse) => { let response = parseIntoDockerListResponse(jsonResponse) - // Js.log2("jpr_|>", response.status) if (response.status == "received") { - // Js.log(response.containers) Js.Promise.resolve(response.containers) } else { - // Js.log("errors") - // Js.Promise.resolve([]) Js.Exn.raiseError("Invalid getDockerList response") } }, _) |> catch(_err => { - onError("error in getDockerList__TestApi.res") + onError("error in getDockerList") Js.Promise.resolve([]) }, _) -let blabla = () => Fetch.fetch("http://localhost:3100/api/dockerlist") - |> then_(Fetch.Response.json) - |> then_(value => { - Js.log2("jpr_|>", value) - Js.Promise.resolve(value) +let startContainer = (url: string, id: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist/start/${id}`) + |> then_(Fetch.Response.text) + |> then_((jsonResponse) => { + let response = parseIntoDockerListResponse(jsonResponse) + if (response.status == "received") { + Js.Promise.resolve(response.containers) + } else { + Js.Exn.raiseError("Invalid startContainer response") + } + }, _) + |> catch(_err => { + onError("error in startContainer") + Js.Promise.resolve([]) }, _) -// let blabla3 = () => then_(value => { -// Js.log2("jpr_nested", value) -// Js.Promise.resolve(value) -// }, then_(Fetch.Response.json, Fetch.fetch("http://localhost:3100/api/dockerlist"))) - -// let blabla = () => Fetch.Response.json -// ->then_(Fetch.fetch("http://localhost:3100/api/dockerlist")) - -let blabla1 = () => Fetch.fetch("http://localhost:3100/api/dockerlist") - // ->Js.Promise.then_(value => { - // // Js.log(value) - // Js.Promise.resolve(value + 2) - // }, - // _) - // ->Js.Promise.then_(value => { - // // Js.log(value) - // Js.Promise.resolve(value + 3) - // }, _) - // ->Js.Promise.then_(value => value, _) - ->Js.Promise.then_(value => { - // let _foo = value.json() - Js.log2("blabla:", value) - Js.Promise.resolve(value) - }, _) - -// type data = {names: array} - - -// type point = { -// x: int, -// y: int -// }; - -// type line = { -// start: point, -// end_: point, -// thickness: option -// } - - - -// open Json.Decode - -// module Decode = { -// let point = json => -// { -// x: json |> field("x", int), -// y: json |> field("y", int) -// }; - -// let line = json => -// { -// start: json |> field("start", point), -// end_: json |> field("end", point), -// thickness: json |> optional(field("thickness", int)) -// }; -// }; - -// let data = { -// "start": { "x": 1, "y": -4 }, -// "end": { "x": 5, "y": 8 } -// } ; - -// let line = data |> Json.parseOrRaise -// |> Decode.line; \ No newline at end of file +let stopContainer = (url: string, id: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist/stop/${id}`) + |> then_(Fetch.Response.text) + |> then_((jsonResponse) => { + let response = parseIntoDockerListResponse(jsonResponse) + if (response.status == "received") { + Js.Promise.resolve(response.containers) + } else { + Js.Exn.raiseError("Invalid stopContainer response") + } + }, _) + |> catch(_err => { + onError("error in stopContainer") + Js.Promise.resolve([]) + }, _) From 37262398a8983f98c258e4b28017d44c5c96a98b Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 15:44:33 +0200 Subject: [PATCH 42/62] Rename DockerApi to DockerApiReason --- .../src/{DockerApi.bs.js => DockerApiReason.bs.js} | 0 .../dockerlist-client/src/{DockerApi.re => DockerApiReason.re} | 1 + 2 files changed, 1 insertion(+) rename packages/dockerlist-client/src/{DockerApi.bs.js => DockerApiReason.bs.js} (100%) rename packages/dockerlist-client/src/{DockerApi.re => DockerApiReason.re} (97%) diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApiReason.bs.js similarity index 100% rename from packages/dockerlist-client/src/DockerApi.bs.js rename to packages/dockerlist-client/src/DockerApiReason.bs.js diff --git a/packages/dockerlist-client/src/DockerApi.re b/packages/dockerlist-client/src/DockerApiReason.re similarity index 97% rename from packages/dockerlist-client/src/DockerApi.re rename to packages/dockerlist-client/src/DockerApiReason.re index 74e4c5c..d7b4cb9 100644 --- a/packages/dockerlist-client/src/DockerApi.re +++ b/packages/dockerlist-client/src/DockerApiReason.re @@ -26,6 +26,7 @@ // } // } +// Note: In Rescript `open Js.Promise` is in Reason `Js.Promise.()` let getDockerList = (url: string, onError: string => unit) => Js.Promise.( (url ++ "/api/dockerlist") -> From 50daeadb8d1fe07b1ca0784cf9761b7c898ff84f Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 15:46:30 +0200 Subject: [PATCH 43/62] Rename TestApi to DockerApi --- .../dockerlist-client/src/DockerApi.bs.js | 66 +++++++++++++++++++ .../src/{TestApi.res => DockerApi.res} | 0 packages/dockerlist-client/src/DockerList.res | 1 - 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 packages/dockerlist-client/src/DockerApi.bs.js rename packages/dockerlist-client/src/{TestApi.res => DockerApi.res} (100%) diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js new file mode 100644 index 0000000..0697a44 --- /dev/null +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -0,0 +1,66 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + +import * as Curry from "rescript/lib/es6/curry.js"; +import * as Js_exn from "rescript/lib/es6/js_exn.js"; + +function getDockerList(url, onError) { + var __x = fetch(url + "/api/dockerlist").then(function (prim) { + return prim.text(); + }); + var __x$1 = __x.then(function (jsonResponse) { + var response = JSON.parse(jsonResponse); + if (response.status === "received") { + return Promise.resolve(response.containers); + } else { + return Js_exn.raiseError("Invalid getDockerList response"); + } + }); + return __x$1.catch(function (_err) { + Curry._1(onError, "error in getDockerList"); + return Promise.resolve([]); + }); +} + +function startContainer(url, id, onError) { + var __x = fetch(url + "/api/dockerlist/start/" + id).then(function (prim) { + return prim.text(); + }); + var __x$1 = __x.then(function (jsonResponse) { + var response = JSON.parse(jsonResponse); + if (response.status === "received") { + return Promise.resolve(response.containers); + } else { + return Js_exn.raiseError("Invalid startContainer response"); + } + }); + return __x$1.catch(function (_err) { + Curry._1(onError, "error in startContainer"); + return Promise.resolve([]); + }); +} + +function stopContainer(url, id, onError) { + var __x = fetch(url + "/api/dockerlist/stop/" + id).then(function (prim) { + return prim.text(); + }); + var __x$1 = __x.then(function (jsonResponse) { + var response = JSON.parse(jsonResponse); + if (response.status === "received") { + return Promise.resolve(response.containers); + } else { + return Js_exn.raiseError("Invalid stopContainer response"); + } + }); + return __x$1.catch(function (_err) { + Curry._1(onError, "error in stopContainer"); + return Promise.resolve([]); + }); +} + +export { + getDockerList , + startContainer , + stopContainer , + +} +/* No side effect */ diff --git a/packages/dockerlist-client/src/TestApi.res b/packages/dockerlist-client/src/DockerApi.res similarity index 100% rename from packages/dockerlist-client/src/TestApi.res rename to packages/dockerlist-client/src/DockerApi.res diff --git a/packages/dockerlist-client/src/DockerList.res b/packages/dockerlist-client/src/DockerList.res index ef39b0d..f5c922f 100644 --- a/packages/dockerlist-client/src/DockerList.res +++ b/packages/dockerlist-client/src/DockerList.res @@ -25,7 +25,6 @@ module DockerListMod = { let update = () => { DockerApi.getDockerList(url, onError) |> Js.Promise.then_(containerList => { - // Js.log() setContainers(_prev => containerList) Js.Promise.resolve(containerList) }) From 81e18f8844baa709d47ce464c88b3c4f9dceb573 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 15:57:08 +0200 Subject: [PATCH 44/62] Deduplicate response handling --- .../dockerlist-client/src/DockerApi.bs.js | 56 +++++---------- packages/dockerlist-client/src/DockerApi.res | 70 +++++++------------ 2 files changed, 44 insertions(+), 82 deletions(-) diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js index 0697a44..7ea34e3 100644 --- a/packages/dockerlist-client/src/DockerApi.bs.js +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -3,61 +3,41 @@ import * as Curry from "rescript/lib/es6/curry.js"; import * as Js_exn from "rescript/lib/es6/js_exn.js"; -function getDockerList(url, onError) { - var __x = fetch(url + "/api/dockerlist").then(function (prim) { - return prim.text(); - }); - var __x$1 = __x.then(function (jsonResponse) { +function handleResponse(onError, errorMessage, promise) { + var __x = promise.then(function (jsonResponse) { var response = JSON.parse(jsonResponse); if (response.status === "received") { return Promise.resolve(response.containers); } else { - return Js_exn.raiseError("Invalid getDockerList response"); + return Js_exn.raiseError("Error in response"); } }); - return __x$1.catch(function (_err) { - Curry._1(onError, "error in getDockerList"); + return __x.catch(function (_err) { + Curry._1(onError, errorMessage); return Promise.resolve([]); }); } +function getDockerList(url, onError) { + return handleResponse(onError, "error in getDockerList", fetch(url + "/api/dockerlist").then(function (prim) { + return prim.text(); + })); +} + function startContainer(url, id, onError) { - var __x = fetch(url + "/api/dockerlist/start/" + id).then(function (prim) { - return prim.text(); - }); - var __x$1 = __x.then(function (jsonResponse) { - var response = JSON.parse(jsonResponse); - if (response.status === "received") { - return Promise.resolve(response.containers); - } else { - return Js_exn.raiseError("Invalid startContainer response"); - } - }); - return __x$1.catch(function (_err) { - Curry._1(onError, "error in startContainer"); - return Promise.resolve([]); - }); + return handleResponse(onError, "error in startContainer", fetch(url + "/api/dockerlist/start/" + id).then(function (prim) { + return prim.text(); + })); } function stopContainer(url, id, onError) { - var __x = fetch(url + "/api/dockerlist/stop/" + id).then(function (prim) { - return prim.text(); - }); - var __x$1 = __x.then(function (jsonResponse) { - var response = JSON.parse(jsonResponse); - if (response.status === "received") { - return Promise.resolve(response.containers); - } else { - return Js_exn.raiseError("Invalid stopContainer response"); - } - }); - return __x$1.catch(function (_err) { - Curry._1(onError, "error in stopContainer"); - return Promise.resolve([]); - }); + return handleResponse(onError, "error in stopContainer", fetch(url + "/api/dockerlist/stop/" + id).then(function (prim) { + return prim.text(); + })); } export { + handleResponse , getDockerList , startContainer , stopContainer , diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res index 7339f55..51d3e33 100644 --- a/packages/dockerlist-client/src/DockerApi.res +++ b/packages/dockerlist-client/src/DockerApi.res @@ -7,8 +7,8 @@ type dockerContainer = { } type dockerListResponse = { - status: string, // TODO convert to "received" | "error" - containers: array + status: string, // TODO convert to "received" | "error" + containers: array, } // NOTE: it might be better to do `|> then_(Fetch.Response.json)` (instead of `|> then_(Fetch.Response.text)`) and then Decode the response with e.g. @glennsl/bs-json @@ -17,47 +17,29 @@ external parseIntoDockerListResponse: string => dockerListResponse = "parse" open Js.Promise -let getDockerList = (url: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist`) - |> then_(Fetch.Response.text) - |> then_((jsonResponse) => { - let response = parseIntoDockerListResponse(jsonResponse) - if (response.status == "received") { - Js.Promise.resolve(response.containers) - } else { - Js.Exn.raiseError("Invalid getDockerList response") - } - }, _) - |> catch(_err => { - onError("error in getDockerList") - Js.Promise.resolve([]) - }, _) +let handleResponse = (onError: string => unit, errorMessage: string, promise: Js.Promise.t) => promise |> then_(jsonResponse => { + let response = parseIntoDockerListResponse(jsonResponse) + if response.status == "received" { + Js.Promise.resolve(response.containers) + } else { + Js.Exn.raiseError("Error in response") + } + }, _) |> catch(_err => { + onError(errorMessage) + Js.Promise.resolve([]) + }, _) -let startContainer = (url: string, id: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist/start/${id}`) - |> then_(Fetch.Response.text) - |> then_((jsonResponse) => { - let response = parseIntoDockerListResponse(jsonResponse) - if (response.status == "received") { - Js.Promise.resolve(response.containers) - } else { - Js.Exn.raiseError("Invalid startContainer response") - } - }, _) - |> catch(_err => { - onError("error in startContainer") - Js.Promise.resolve([]) - }, _) +let getDockerList = (url: string, onError: string => unit) => + Fetch.fetch(`${url}/api/dockerlist`) + |> then_(Fetch.Response.text) + |> handleResponse(onError, "error in getDockerList") -let stopContainer = (url: string, id: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist/stop/${id}`) - |> then_(Fetch.Response.text) - |> then_((jsonResponse) => { - let response = parseIntoDockerListResponse(jsonResponse) - if (response.status == "received") { - Js.Promise.resolve(response.containers) - } else { - Js.Exn.raiseError("Invalid stopContainer response") - } - }, _) - |> catch(_err => { - onError("error in stopContainer") - Js.Promise.resolve([]) - }, _) +let startContainer = (url: string, id: string, onError: string => unit) => + Fetch.fetch(`${url}/api/dockerlist/start/${id}`) + |> then_(Fetch.Response.text) + |> handleResponse(onError, "error in startContainer") + +let stopContainer = (url: string, id: string, onError: string => unit) => + Fetch.fetch(`${url}/api/dockerlist/stop/${id}`) + |> then_(Fetch.Response.text) + |> handleResponse(onError, "error in stopContainer") From d83289dfcee99ac7888fc7df96233f642e0ea9f4 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 18:30:36 +0200 Subject: [PATCH 45/62] Extract shared type --- packages/dockerlist-client/src/DockerApi.res | 15 +--------- .../src/DockerListItem.bs.js | 4 +-- .../dockerlist-client/src/DockerListItem.res | 19 ++++--------- .../src/{StyleUtil.bs.js => DockerUtil.bs.js} | 0 .../src/{StyleUtil.res => DockerUtil.res} | 28 ++++++++++++------- 5 files changed, 27 insertions(+), 39 deletions(-) rename packages/dockerlist-client/src/{StyleUtil.bs.js => DockerUtil.bs.js} (100%) rename packages/dockerlist-client/src/{StyleUtil.res => DockerUtil.res} (80%) diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res index 51d3e33..c01a7f1 100644 --- a/packages/dockerlist-client/src/DockerApi.res +++ b/packages/dockerlist-client/src/DockerApi.res @@ -1,19 +1,6 @@ -// TODO deduplicate/import this type from DockerListItem.res -type dockerContainer = { - "Id": string, - "Names": Js.Array2.t, - "State": string, - "Status": React.element, -} - -type dockerListResponse = { - status: string, // TODO convert to "received" | "error" - containers: array, -} - // NOTE: it might be better to do `|> then_(Fetch.Response.json)` (instead of `|> then_(Fetch.Response.text)`) and then Decode the response with e.g. @glennsl/bs-json @scope("JSON") @val -external parseIntoDockerListResponse: string => dockerListResponse = "parse" +external parseIntoDockerListResponse: string => DockerUtil.dockerListResponse = "parse" open Js.Promise diff --git a/packages/dockerlist-client/src/DockerListItem.bs.js b/packages/dockerlist-client/src/DockerListItem.bs.js index 75625ef..962d1ce 100644 --- a/packages/dockerlist-client/src/DockerListItem.bs.js +++ b/packages/dockerlist-client/src/DockerListItem.bs.js @@ -4,7 +4,7 @@ import * as Curry from "rescript/lib/es6/curry.js"; import * as React from "react"; import * as DockerListModuleCss from "./DockerList.module.css"; import * as DockerApi$MdworldHomeremoteDockerlist from "./DockerApi.bs.js"; -import * as StyleUtil$MdworldHomeremoteDockerlist from "./StyleUtil.bs.js"; +import * as DockerUtil$MdworldHomeremoteDockerlist from "./DockerUtil.bs.js"; import * as ButtonWithConfirm$MdworldHomeremoteDockerlist from "./ButtonWithConfirm.bs.js"; var styles = DockerListModuleCss; @@ -20,7 +20,7 @@ function DockerListItem(Props) { var isRunning = state === "running"; var isExited = state === "exited"; var isUnexpected = !isRunning && !isExited; - var className = StyleUtil$MdworldHomeremoteDockerlist.toClassName([ + var className = DockerUtil$MdworldHomeremoteDockerlist.toClassName([ { TAG: /* Name */0, _0: styles["button-list-item"] diff --git a/packages/dockerlist-client/src/DockerListItem.res b/packages/dockerlist-client/src/DockerListItem.res index 3f121f7..98f3f60 100644 --- a/packages/dockerlist-client/src/DockerListItem.res +++ b/packages/dockerlist-client/src/DockerListItem.res @@ -6,20 +6,11 @@ external styles: { "button-error": string, } = "./DockerList.module.css" -type dockerContainer = { - "Id": string, - "Names": Js.Array2.t, - "State": string, - "Status": React.element, -} - -type setContainersType = (array => array) => unit - @react.component let make = ( ~url: string, - ~container: dockerContainer, - ~setContainers: setContainersType, + ~container: DockerUtil.dockerContainer, + ~setContainers: DockerUtil.setContainersType, ~confirmButtonStyle: ReactDOM.Style.t, ~onError: string => unit ) => { @@ -29,7 +20,7 @@ let make = ( let isRunning = state == "running" let isExited = state == "exited" let isUnexpected = !isRunning && !isExited - let className = StyleUtil.toClassName([ + let className = DockerUtil.toClassName([ Name(styles["button-list-item"]), Name(styles["mui-button"]), NameOn(styles["button-success"], isRunning), @@ -37,7 +28,9 @@ let make = ( ]) let startContainerAndUpdate = (id: string, _event) => { - // TODO |> vs ->_ + // Note: |> is deprecated in favor of ->, however `a |> fn(b)` converts to `fn(b, a)` + // where `a -> fn(b)` converts to `fn(a, b)` and `Js.Promise.then_` has not been optimized + // for this order, e.g. like how Js.Array2 has been optimized for -> while Js.Array is optimized for |> let _ = DockerApi.startContainer(url, id, onError) |> Js.Promise.then_(_response => { diff --git a/packages/dockerlist-client/src/StyleUtil.bs.js b/packages/dockerlist-client/src/DockerUtil.bs.js similarity index 100% rename from packages/dockerlist-client/src/StyleUtil.bs.js rename to packages/dockerlist-client/src/DockerUtil.bs.js diff --git a/packages/dockerlist-client/src/StyleUtil.res b/packages/dockerlist-client/src/DockerUtil.res similarity index 80% rename from packages/dockerlist-client/src/StyleUtil.res rename to packages/dockerlist-client/src/DockerUtil.res index 7c6ed05..8a3d988 100644 --- a/packages/dockerlist-client/src/StyleUtil.res +++ b/packages/dockerlist-client/src/DockerUtil.res @@ -30,9 +30,27 @@ let testResult1 = toClassName1([ let test1 = () => Js.log2("2. With custom variant", testResult1) +/* Shared types */ + +type dockerContainer = { + "Id": string, + "Names": Js.Array2.t, + "State": string, + "Status": React.element, +} + +type dockerListResponse = { + status: string, // TODO convert to "received" | "error"_ + containers: array, +} + +type setContainersType = (array => array) => unit + // Variant classNameItem with the cases "Name" and "NameOn" with contructor arguments type classNameItem = Name(string) | NameOn(string, bool) +/* Style utils */ + // Generic array with Variant parameter let toClassName = (input: array): string => input @@ -51,13 +69,3 @@ let toClassName = (input: array): string => } }) ->Js.Array2.joinWith(" ") - -// let testResult = toClassName([ -// NameOn("class1", true), -// Name("class2"), -// NameOn("class3", false), -// NameOn("class4", true), -// Name("class5"), -// ]) - -// let test = () => Js.log2("3. With pattern matching", testResult2) From 7f3ee37aa6dcf0f43bdf57eed19576d8fbc3b654 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 18:49:19 +0200 Subject: [PATCH 46/62] Convert to new pipe --- .../dockerlist-client/src/DockerApi.bs.js | 17 +++++++------ packages/dockerlist-client/src/DockerApi.res | 22 ++++++++++------- .../src/DockerListItem.bs.js | 8 ++++--- .../dockerlist-client/src/DockerListItem.res | 24 +++++++++++++------ 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js index 7ea34e3..b241f83 100644 --- a/packages/dockerlist-client/src/DockerApi.bs.js +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -3,7 +3,7 @@ import * as Curry from "rescript/lib/es6/curry.js"; import * as Js_exn from "rescript/lib/es6/js_exn.js"; -function handleResponse(onError, errorMessage, promise) { +function handleResponse(promise, onError, errorMessage) { var __x = promise.then(function (jsonResponse) { var response = JSON.parse(jsonResponse); if (response.status === "received") { @@ -19,21 +19,24 @@ function handleResponse(onError, errorMessage, promise) { } function getDockerList(url, onError) { - return handleResponse(onError, "error in getDockerList", fetch(url + "/api/dockerlist").then(function (prim) { + var __x = fetch(url + "/api/dockerlist"); + return handleResponse(__x.then(function (prim) { return prim.text(); - })); + }), onError, "error in getDockerList"); } function startContainer(url, id, onError) { - return handleResponse(onError, "error in startContainer", fetch(url + "/api/dockerlist/start/" + id).then(function (prim) { + var __x = fetch(url + "/api/dockerlist/start/" + id); + return handleResponse(__x.then(function (prim) { return prim.text(); - })); + }), onError, "error in startContainer"); } function stopContainer(url, id, onError) { - return handleResponse(onError, "error in stopContainer", fetch(url + "/api/dockerlist/stop/" + id).then(function (prim) { + var __x = fetch(url + "/api/dockerlist/stop/" + id); + return handleResponse(__x.then(function (prim) { return prim.text(); - })); + }), onError, "error in stopContainer"); } export { diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res index c01a7f1..c6f4271 100644 --- a/packages/dockerlist-client/src/DockerApi.res +++ b/packages/dockerlist-client/src/DockerApi.res @@ -4,29 +4,35 @@ external parseIntoDockerListResponse: string => DockerUtil.dockerListResponse = open Js.Promise -let handleResponse = (onError: string => unit, errorMessage: string, promise: Js.Promise.t) => promise |> then_(jsonResponse => { +let handleResponse = ( + promise: Js.Promise.t, + onError: string => unit, + errorMessage: string, +) => promise + ->then_(jsonResponse => { let response = parseIntoDockerListResponse(jsonResponse) if response.status == "received" { Js.Promise.resolve(response.containers) } else { Js.Exn.raiseError("Error in response") } - }, _) |> catch(_err => { + }, _) + ->catch(_err => { onError(errorMessage) Js.Promise.resolve([]) }, _) let getDockerList = (url: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist`) - |> then_(Fetch.Response.text) - |> handleResponse(onError, "error in getDockerList") + ->then_(Fetch.Response.text, _) + ->handleResponse(onError, "error in getDockerList") let startContainer = (url: string, id: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist/start/${id}`) - |> then_(Fetch.Response.text) - |> handleResponse(onError, "error in startContainer") + ->then_(Fetch.Response.text, _) + ->handleResponse(onError, "error in startContainer") let stopContainer = (url: string, id: string, onError: string => unit) => Fetch.fetch(`${url}/api/dockerlist/stop/${id}`) - |> then_(Fetch.Response.text) - |> handleResponse(onError, "error in stopContainer") + ->then_(Fetch.Response.text, _) + ->handleResponse(onError, "error in stopContainer") diff --git a/packages/dockerlist-client/src/DockerListItem.bs.js b/packages/dockerlist-client/src/DockerListItem.bs.js index 962d1ce..87e3c7a 100644 --- a/packages/dockerlist-client/src/DockerListItem.bs.js +++ b/packages/dockerlist-client/src/DockerListItem.bs.js @@ -55,9 +55,11 @@ function DockerListItem(Props) { }); }) : (function (param) { - DockerApi$MdworldHomeremoteDockerlist.startContainer(url, id, onError).then(function (_response) { - return DockerApi$MdworldHomeremoteDockerlist.getDockerList(url, onError); - }).then(function (containerList) { + var __x = DockerApi$MdworldHomeremoteDockerlist.startContainer(url, id, onError); + var __x$1 = __x.then(function (_response) { + return DockerApi$MdworldHomeremoteDockerlist.getDockerList(url, onError); + }); + __x$1.then(function (containerList) { Curry._1(setContainers, (function (_prev) { return containerList; })); diff --git a/packages/dockerlist-client/src/DockerListItem.res b/packages/dockerlist-client/src/DockerListItem.res index 98f3f60..1e82cc5 100644 --- a/packages/dockerlist-client/src/DockerListItem.res +++ b/packages/dockerlist-client/src/DockerListItem.res @@ -12,7 +12,7 @@ let make = ( ~container: DockerUtil.dockerContainer, ~setContainers: DockerUtil.setContainersType, ~confirmButtonStyle: ReactDOM.Style.t, - ~onError: string => unit + ~onError: string => unit, ) => { let id = container["Id"] // https://stackoverflow.com/a/32428199: created, restarting, running, paused, exited, dead @@ -28,18 +28,28 @@ let make = ( ]) let startContainerAndUpdate = (id: string, _event) => { - // Note: |> is deprecated in favor of ->, however `a |> fn(b)` converts to `fn(b, a)` - // where `a -> fn(b)` converts to `fn(a, b)` and `Js.Promise.then_` has not been optimized + // Note: |> is deprecated in favor of ->, however `a |> fn(b)` converts to `fn(b, a)` + // where `a -> fn(b)` converts to `fn(a, b)` and `Js.Promise.then_` has not been optimized // for this order, e.g. like how Js.Array2 has been optimized for -> while Js.Array is optimized for |> + // This can be remedied by using the _ pipe placeholder. With the placeholder it is possible to write + // ```DockerApi.startContainer(url, id, onError) + // |> Js.Promise.then_(_response => { + // DockerApi.getDockerList(url, onError) + // })``` + // Like: + // ```DockerApi.startContainer(url, id, onError) + // -> Js.Promise.then_(_response => { + // DockerApi.getDockerList(url, onError) + // }, _)``` let _ = DockerApi.startContainer(url, id, onError) - |> Js.Promise.then_(_response => { + -> Js.Promise.then_(_response => { DockerApi.getDockerList(url, onError) - }) - |> Js.Promise.then_(containerList => { + }, _) + -> Js.Promise.then_(containerList => { setContainers(_prev => containerList) Js.Promise.resolve(containerList) - }) + }, _) } let stopContainerAndUpdate = (id: string, _event) => { From 88bbfbc9b9833916c468b33ffa6d84e0b38c2385 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 19:08:33 +0200 Subject: [PATCH 47/62] Log promise errors --- packages/dockerlist-client/src/DockerApi.bs.js | 4 ++-- packages/dockerlist-client/src/DockerApi.res | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js index b241f83..ecb63c1 100644 --- a/packages/dockerlist-client/src/DockerApi.bs.js +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -12,8 +12,8 @@ function handleResponse(promise, onError, errorMessage) { return Js_exn.raiseError("Error in response"); } }); - return __x.catch(function (_err) { - Curry._1(onError, errorMessage); + return __x.catch(function (err) { + Curry._1(onError, errorMessage + " " + err); return Promise.resolve([]); }); } diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res index c6f4271..96ac558 100644 --- a/packages/dockerlist-client/src/DockerApi.res +++ b/packages/dockerlist-client/src/DockerApi.res @@ -4,6 +4,10 @@ external parseIntoDockerListResponse: string => DockerUtil.dockerListResponse = open Js.Promise +// Prevent type casting with Obj.magic, e.g. like let message: string = err->Obj.magic, see https://dev.to/fhammerschmidt/reason-react-best-practices-2cb7 +// Convert Js.Promise.error to string (effectively an unchecked type cast) +external promiseErrToString: Js.Promise.error => string = "%identity"; + let handleResponse = ( promise: Js.Promise.t, onError: string => unit, @@ -17,8 +21,9 @@ let handleResponse = ( Js.Exn.raiseError("Error in response") } }, _) - ->catch(_err => { - onError(errorMessage) + ->catch(err => { + let message: string = err->promiseErrToString + onError(`${errorMessage} ${message}`) Js.Promise.resolve([]) }, _) From c16ff3f23941b3378d7395f9871d212b9ef0b7c1 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 19:53:28 +0200 Subject: [PATCH 48/62] Use more pattern matching --- packages/dockerlist-client/.bsb.lock | 2 +- packages/dockerlist-client/src/DockerApi.bs.js | 3 ++- packages/dockerlist-client/src/DockerApi.res | 7 +++---- packages/dockerlist-client/src/DockerUtil.res | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock index 9f6ded0..f8c685e 100644 --- a/packages/dockerlist-client/.bsb.lock +++ b/packages/dockerlist-client/.bsb.lock @@ -1 +1 @@ -306000 \ No newline at end of file +327429 \ No newline at end of file diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js index ecb63c1..1396330 100644 --- a/packages/dockerlist-client/src/DockerApi.bs.js +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -6,7 +6,8 @@ import * as Js_exn from "rescript/lib/es6/js_exn.js"; function handleResponse(promise, onError, errorMessage) { var __x = promise.then(function (jsonResponse) { var response = JSON.parse(jsonResponse); - if (response.status === "received") { + var match = response.status; + if (match === "received") { return Promise.resolve(response.containers); } else { return Js_exn.raiseError("Error in response"); diff --git a/packages/dockerlist-client/src/DockerApi.res b/packages/dockerlist-client/src/DockerApi.res index 96ac558..014a904 100644 --- a/packages/dockerlist-client/src/DockerApi.res +++ b/packages/dockerlist-client/src/DockerApi.res @@ -15,10 +15,9 @@ let handleResponse = ( ) => promise ->then_(jsonResponse => { let response = parseIntoDockerListResponse(jsonResponse) - if response.status == "received" { - Js.Promise.resolve(response.containers) - } else { - Js.Exn.raiseError("Error in response") + switch response.status { + | "received" => Js.Promise.resolve(response.containers) + | _ => Js.Exn.raiseError("Error in response") } }, _) ->catch(err => { diff --git a/packages/dockerlist-client/src/DockerUtil.res b/packages/dockerlist-client/src/DockerUtil.res index 8a3d988..c4339dd 100644 --- a/packages/dockerlist-client/src/DockerUtil.res +++ b/packages/dockerlist-client/src/DockerUtil.res @@ -40,7 +40,7 @@ type dockerContainer = { } type dockerListResponse = { - status: string, // TODO convert to "received" | "error"_ + status: string, // Union types do not exist in Reason but the string is pattern matched containers: array, } From 759f866e3aa20bc03bd0e99745ebd1188e03725e Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Fri, 21 May 2021 20:06:27 +0200 Subject: [PATCH 49/62] Improve test coverage --- .../dockerlist-server/lib/DockerListAPI.js | 2 +- .../src/DockerListAPI.test.ts | 51 +++++++++++++------ 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/packages/dockerlist-server/lib/DockerListAPI.js b/packages/dockerlist-server/lib/DockerListAPI.js index e204f4f..6c35500 100644 --- a/packages/dockerlist-server/lib/DockerListAPI.js +++ b/packages/dockerlist-server/lib/DockerListAPI.js @@ -44,7 +44,7 @@ var pickAndMapContainerProps = function (_a) { }; // Using Docker Engine API: curl --unix-socket /var/run/docker.sock http://v1.24/containers/json?all=true // These urls also work: http://localhost/v1.24/containers/json?all=true or v1.24/containers/json?all=true -var ROOT_URL = "http://v1.41/containers??"; +var ROOT_URL = "http://v1.41/containers"; exports.getDockerList = function () { return __awaiter(void 0, void 0, void 0, function () { var result, err_1; return __generator(this, function (_a) { diff --git a/packages/dockerlist-server/src/DockerListAPI.test.ts b/packages/dockerlist-server/src/DockerListAPI.test.ts index 118ac65..0ce91c5 100644 --- a/packages/dockerlist-server/src/DockerListAPI.test.ts +++ b/packages/dockerlist-server/src/DockerListAPI.test.ts @@ -7,22 +7,29 @@ jest.mock("got"); const gotSpy = jest.spyOn(GotModule, "default"); const createMockRequest = ( - // additional: Record jsonResponse: unknown ): CancelableRequest => { - // const jsonResponse = { - // // data: [{ ...mockBaseResponse, ...additional }], - // // data: [{ ...additional }], - // // ...additional - // }; return { json: () => Promise.resolve(jsonResponse), } as CancelableRequest; }; +const createMockReject = (): CancelableRequest => { + return { + json: () => Promise.reject(Error("Some Error")), + } as CancelableRequest; +}; + describe("DockerListAPI", () => { beforeEach(() => { gotSpy.mockReset(); + jest.spyOn(console, "error").mockImplementation(() => { + /* hide console errors when running Jest */ + }); + }); + + afterEach(() => { + (console.error as jest.Mock).mockRestore(); }); it("lists all containers", async () => { @@ -66,22 +73,36 @@ describe("DockerListAPI", () => { }); }); + it("can return an error when listing all containers", async () => { + gotSpy.mockReturnValue(createMockReject()); + const response = await getDockerList(); + + expect(response).toEqual({ + status: "error", + }); + }); + it("starts a container", async () => { gotSpy.mockReturnValue(createMockRequest([])); - const response = await startContainer( - "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" - ); + const response = await startContainer("some_id"); expect(response).toEqual({ status: "received", }); }); + it("can return an error when starting a container", async () => { + gotSpy.mockReturnValue(createMockReject()); + const response = await startContainer("some_id"); + + expect(response).toEqual({ + status: "error", + }); + }); + it("stops a container", async () => { gotSpy.mockReturnValue(createMockRequest([])); - const response = await stopContainer( - "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" - ); + const response = await stopContainer("some_id"); expect(response).toEqual({ status: "received", @@ -89,10 +110,8 @@ describe("DockerListAPI", () => { }); it("can return an error when stopping a container", async () => { - gotSpy.mockReturnValue(createMockRequest([])); - const response = await stopContainer( - "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe" - ); + gotSpy.mockReturnValue(createMockReject()); + const response = await stopContainer("some_id"); expect(response).toEqual({ status: "error", From c4a6b5d9733ae7fc3c43318fb01ae74dd527ede9 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 16:31:28 +0200 Subject: [PATCH 50/62] Convert rescript to commonjs for jest --- packages/dockerlist-client/.bsb.lock | 2 +- packages/dockerlist-client/README.md | 5 +- packages/dockerlist-client/bsconfig.json | 2 +- .../src/ButtonWithConfirm.bs.js | 18 +- .../dockerlist-client/src/DockerApi.bs.js | 16 +- .../src/DockerApiReason.bs.js | 14 +- .../dockerlist-client/src/DockerList.bs.js | 20 +- .../dockerlist-client/src/DockerList.test.js | 211 +++++++++++------- .../src/DockerListItem.bs.js | 20 +- .../dockerlist-client/src/DockerUtil.bs.js | 18 +- .../dockerlist-client/webpack.config.prod.js | 49 ---- packages/example/README.md | 2 +- packages/example/package.json | 1 + 13 files changed, 183 insertions(+), 195 deletions(-) delete mode 100644 packages/dockerlist-client/webpack.config.prod.js diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock index f8c685e..143384b 100644 --- a/packages/dockerlist-client/.bsb.lock +++ b/packages/dockerlist-client/.bsb.lock @@ -1 +1 @@ -327429 \ No newline at end of file +359131 \ No newline at end of file diff --git a/packages/dockerlist-client/README.md b/packages/dockerlist-client/README.md index 7766d11..5f50a61 100644 --- a/packages/dockerlist-client/README.md +++ b/packages/dockerlist-client/README.md @@ -29,7 +29,10 @@ See https://github.com/mdvanes/homeremote/issues/9 ## TODO -- Fix building +- Error handling, callback for snackbar +- Add unit test +- Fix building, exclude "dist" from the build? +- Add DockerList to the Example app - For now XHR works in Rescript, but Fetch only works in Reason files. Mainly decoding the JSON fails, even with "@glennsl/bs-json" - Material UI bindings seem very unstable: https://jsiebern.github.io/bs-material-ui Adding it breaks the build sometimes - Clean up old Elm deps from package.json diff --git a/packages/dockerlist-client/bsconfig.json b/packages/dockerlist-client/bsconfig.json index a8f2afc..5cafabd 100644 --- a/packages/dockerlist-client/bsconfig.json +++ b/packages/dockerlist-client/bsconfig.json @@ -8,7 +8,7 @@ ], "package-specs": [ { - "module": "es6", + "module": "commonjs", "in-source": true } ], diff --git a/packages/dockerlist-client/src/ButtonWithConfirm.bs.js b/packages/dockerlist-client/src/ButtonWithConfirm.bs.js index c6acb32..c549983 100644 --- a/packages/dockerlist-client/src/ButtonWithConfirm.bs.js +++ b/packages/dockerlist-client/src/ButtonWithConfirm.bs.js @@ -1,10 +1,11 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; -import * as Curry from "rescript/lib/es6/curry.js"; -import * as React from "react"; -import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; -import * as Caml_option from "rescript/lib/es6/caml_option.js"; -import * as DockerListModuleCss from "./DockerList.module.css"; +var Curry = require("rescript/lib/js/curry.js"); +var React = require("react"); +var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var Caml_option = require("rescript/lib/js/caml_option.js"); +var DockerListModuleCss = require("./DockerList.module.css"); var styles = DockerListModuleCss; @@ -50,9 +51,6 @@ function ButtonWithConfirm(Props) { var make = ButtonWithConfirm; -export { - styles , - make , - -} +exports.styles = styles; +exports.make = make; /* styles Not a pure module */ diff --git a/packages/dockerlist-client/src/DockerApi.bs.js b/packages/dockerlist-client/src/DockerApi.bs.js index 1396330..aa1ae58 100644 --- a/packages/dockerlist-client/src/DockerApi.bs.js +++ b/packages/dockerlist-client/src/DockerApi.bs.js @@ -1,7 +1,8 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; -import * as Curry from "rescript/lib/es6/curry.js"; -import * as Js_exn from "rescript/lib/es6/js_exn.js"; +var Curry = require("rescript/lib/js/curry.js"); +var Js_exn = require("rescript/lib/js/js_exn.js"); function handleResponse(promise, onError, errorMessage) { var __x = promise.then(function (jsonResponse) { @@ -40,11 +41,8 @@ function stopContainer(url, id, onError) { }), onError, "error in stopContainer"); } -export { - handleResponse , - getDockerList , - startContainer , - stopContainer , - -} +exports.handleResponse = handleResponse; +exports.getDockerList = getDockerList; +exports.startContainer = startContainer; +exports.stopContainer = stopContainer; /* No side effect */ diff --git a/packages/dockerlist-client/src/DockerApiReason.bs.js b/packages/dockerlist-client/src/DockerApiReason.bs.js index d0ab68f..d3dcb16 100644 --- a/packages/dockerlist-client/src/DockerApiReason.bs.js +++ b/packages/dockerlist-client/src/DockerApiReason.bs.js @@ -1,7 +1,8 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; -import * as Curry from "rescript/lib/es6/curry.js"; -import * as Js_exn from "rescript/lib/es6/js_exn.js"; +var Curry = require("rescript/lib/js/curry.js"); +var Js_exn = require("rescript/lib/js/js_exn.js"); function getDockerList(url, onError) { return fetch(url + "/api/dockerlist").then(function (response) { @@ -48,10 +49,7 @@ function stopContainer(url, id, onError) { }); } -export { - getDockerList , - startContainer , - stopContainer , - -} +exports.getDockerList = getDockerList; +exports.startContainer = startContainer; +exports.stopContainer = stopContainer; /* No side effect */ diff --git a/packages/dockerlist-client/src/DockerList.bs.js b/packages/dockerlist-client/src/DockerList.bs.js index 0211dda..b5ac4ae 100644 --- a/packages/dockerlist-client/src/DockerList.bs.js +++ b/packages/dockerlist-client/src/DockerList.bs.js @@ -1,11 +1,12 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; -import * as Curry from "rescript/lib/es6/curry.js"; -import * as React from "react"; -import * as Caml_option from "rescript/lib/es6/caml_option.js"; -import * as DockerListModuleCss from "./DockerList.module.css"; -import * as DockerApi$MdworldHomeremoteDockerlist from "./DockerApi.bs.js"; -import * as DockerListItem$MdworldHomeremoteDockerlist from "./DockerListItem.bs.js"; +var Curry = require("rescript/lib/js/curry.js"); +var React = require("react"); +var Caml_option = require("rescript/lib/js/caml_option.js"); +var DockerListModuleCss = require("./DockerList.module.css"); +var DockerApi$MdworldHomeremoteDockerlist = require("./DockerApi.bs.js"); +var DockerListItem$MdworldHomeremoteDockerlist = require("./DockerListItem.bs.js"); var styles = DockerListModuleCss; @@ -59,9 +60,6 @@ var DockerListMod = { make: DockerList$DockerListMod }; -export { - styles , - DockerListMod , - -} +exports.styles = styles; +exports.DockerListMod = DockerListMod; /* styles Not a pure module */ diff --git a/packages/dockerlist-client/src/DockerList.test.js b/packages/dockerlist-client/src/DockerList.test.js index f0d2e5c..40bbab7 100644 --- a/packages/dockerlist-client/src/DockerList.test.js +++ b/packages/dockerlist-client/src/DockerList.test.js @@ -1,97 +1,142 @@ import React, { Component } from "react"; -import { render } from "@testing-library/react"; -// In this case use `require`, see below. import StreamPlayer from "./StreamPlayer"; +import { render, screen, waitFor, wait } from "@testing-library/react"; +import { DockerListMod } from "./DockerList.bs"; +import { json } from "express"; +// import "./DockerList.bs.js"; -let mockEmit = () => { - /* no-op */ -}; +// eslint-disable-next-line @typescript-eslint/no-var-requires +// const { DockerListMod } = require("./DockerList.bs"); -// Example of naive mock: -// jest.mock("react-elm-components", () => "mock-react-elm-components"); - -// Example of FC mock: -// jest.mock("react-elm-components", () => (props) => { -// // Do not destructure `props.ports` to keep destinct from inner `ports` argument -// console.log("props.ports", props.ports); -// // ports(); -// const foo = (fn) => { -// mockEmit = fn; -// }; -// const ports = { setPlayPauseStatusPort: { subscribe: foo } }; -// // triggerPorts = -// props.ports(ports); -// return

; -// }); +// TODO convert to typescript? +// TODO convert to bs-jest? -const playSpy = jest.fn(); -const pauseSpy = jest.fn(); - -window.HTMLMediaElement.prototype.play = playSpy; -window.HTMLMediaElement.prototype.pause = pauseSpy; - -class MockReactElmComponent extends Component { - render() { - // Do not destructure `props.ports` to keep destinct from inner `ports` argument - const foo = (fn) => { - mockEmit = fn; - }; - const ports = { setPlayPauseStatusPort: { subscribe: foo } }; - this.props.ports(ports); - return ( -

-

- ); - } -} +const DockerList = DockerListMod.make; -// With ref: -jest.mock("react-elm-components", () => MockReactElmComponent); +jest.mock("./DockerList.module.css", () => ""); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const StreamPlayer = require("./StreamPlayer").default; - -jest.mock("./StreamPlayer.css", () => ""); -jest.mock("./Elm/Audio.elm", () => ({ - Elm: { - Elm: { - Audio: "mock-elm-audio", +const FOO = { + status: "received", + containers: [ + { + Id: + "2757091519a2e227b40e6fae4f92b7f4c8b7b189037bda0bc3152ce2be96af9d", + Names: ["/determined_edison"], + State: "exited", + Status: "Exited (1) 5 months ago", }, - }, -})); - -describe("StreamPlayer client", () => { - beforeEach(() => { - jest.useFakeTimers(); - playSpy.mockReset(); - pauseSpy.mockReset(); - }); + { + Id: + "42aebf279f8c95488fab905d788f3caffee6afcaad240fc4aca68106c7173bfe", + Names: ["/tinycors"], + State: "exited", + Status: "Exited (2) 13 hours ago", + }, + { + Id: + "c7f51601f9870180859a2feb981613b30e3fcd282830b398185aa4facff21be1", + Names: ["/hello_world"], + State: "exited", + Status: "Exited (0) 17 hours ago", + }, + ], +}; - afterEach(() => { - jest.runOnlyPendingTimers(); - jest.useRealTimers(); - }); +// function getDockerList(url, onError) { +// var __x = fetch(url + "/api/dockerlist"); +// return handleResponse(__x.then(function (prim) { +// return prim.text(); +// }), onError, "error in getDockerList"); - it("renders the element", () => { - const { getByTestId } = render(); - expect(getByTestId("mock-react-elm-components")).toBeInTheDocument(); - }); +// global.fetch = jest.fn().mockResolvedValue({ +// then: (fn) => { +// // fn(); +// jest.fn().mockResolvedValue(JSON.stringify(FOO)); +// }, +// }); + +global.fetch = jest.fn().mockResolvedValue({ + text: () => Promise.resolve(JSON.stringify(FOO)), +}); - it("calls audioElem.play on new status", () => { - render(); - expect(playSpy).not.toHaveBeenCalled(); - mockEmit("Play"); - jest.runAllTimers(); - expect(playSpy).toHaveBeenCalledWith(); - expect(pauseSpy).not.toHaveBeenCalled(); +// global.fetch = jest.fn().mockResolvedValue({ +// text: () => jest.fn().mockResolvedValue(FOO), +// }); + +describe("DockerList client", () => { + it("trivial test", () => { + expect(true).toBeTruthy(); }); - it("calls audioElem.pause on new status", () => { - render(); - expect(pauseSpy).not.toHaveBeenCalled(); - mockEmit("Pause"); - jest.runAllTimers(); - expect(pauseSpy).toHaveBeenCalledWith(); - expect(playSpy).not.toHaveBeenCalled(); + // it("trivial render", () => { + // render(); + // screen.debug(); + // }); + + it("trivial render", async () => { + render(); + + await waitFor(() => { + screen.getByText("determined_edison"); + }); + screen.debug(); }); }); + +// In this case use `require`, see below. import StreamPlayer from "./StreamPlayer"; + +// let mockEmit = () => { +// /* no-op */ +// }; + +// // Example of naive mock: +// // jest.mock("react-elm-components", () => "mock-react-elm-components"); + +// // Example of FC mock: +// // jest.mock("react-elm-components", () => (props) => { +// // // Do not destructure `props.ports` to keep destinct from inner `ports` argument +// // console.log("props.ports", props.ports); +// // // ports(); +// // const foo = (fn) => { +// // mockEmit = fn; +// // }; +// // const ports = { setPlayPauseStatusPort: { subscribe: foo } }; +// // // triggerPorts = +// // props.ports(ports); +// // return

; +// // }); + +// const playSpy = jest.fn(); +// const pauseSpy = jest.fn(); + +// window.HTMLMediaElement.prototype.play = playSpy; +// window.HTMLMediaElement.prototype.pause = pauseSpy; + +// class MockReactElmComponent extends Component { +// render() { +// // Do not destructure `props.ports` to keep destinct from inner `ports` argument +// const foo = (fn) => { +// mockEmit = fn; +// }; +// const ports = { setPlayPauseStatusPort: { subscribe: foo } }; +// this.props.ports(ports); +// return ( +//

+//

+// ); +// } +// } + +// With ref: +// jest.mock("react-elm-components", () => MockReactElmComponent); + +// eslint-disable-next-line @typescript-eslint/no-var-requires +// const StreamPlayer = require("./StreamPlayer").default; + +// jest.mock("./Elm/Audio.elm", () => ({ +// Elm: { +// Elm: { +// Audio: "mock-elm-audio", +// }, +// }, +// })); diff --git a/packages/dockerlist-client/src/DockerListItem.bs.js b/packages/dockerlist-client/src/DockerListItem.bs.js index 87e3c7a..2a5b7a2 100644 --- a/packages/dockerlist-client/src/DockerListItem.bs.js +++ b/packages/dockerlist-client/src/DockerListItem.bs.js @@ -1,11 +1,12 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; -import * as Curry from "rescript/lib/es6/curry.js"; -import * as React from "react"; -import * as DockerListModuleCss from "./DockerList.module.css"; -import * as DockerApi$MdworldHomeremoteDockerlist from "./DockerApi.bs.js"; -import * as DockerUtil$MdworldHomeremoteDockerlist from "./DockerUtil.bs.js"; -import * as ButtonWithConfirm$MdworldHomeremoteDockerlist from "./ButtonWithConfirm.bs.js"; +var Curry = require("rescript/lib/js/curry.js"); +var React = require("react"); +var DockerListModuleCss = require("./DockerList.module.css"); +var DockerApi$MdworldHomeremoteDockerlist = require("./DockerApi.bs.js"); +var DockerUtil$MdworldHomeremoteDockerlist = require("./DockerUtil.bs.js"); +var ButtonWithConfirm$MdworldHomeremoteDockerlist = require("./ButtonWithConfirm.bs.js"); var styles = DockerListModuleCss; @@ -77,9 +78,6 @@ function DockerListItem(Props) { var make = DockerListItem; -export { - styles , - make , - -} +exports.styles = styles; +exports.make = make; /* styles Not a pure module */ diff --git a/packages/dockerlist-client/src/DockerUtil.bs.js b/packages/dockerlist-client/src/DockerUtil.bs.js index 7334957..771e78c 100644 --- a/packages/dockerlist-client/src/DockerUtil.bs.js +++ b/packages/dockerlist-client/src/DockerUtil.bs.js @@ -1,4 +1,5 @@ // Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; function toClassName0(input) { @@ -67,14 +68,11 @@ function toClassName(input) { }).join(" "); } -export { - toClassName0 , - testResult0 , - test0 , - toClassName1 , - testResult1 , - test1 , - toClassName , - -} +exports.toClassName0 = toClassName0; +exports.testResult0 = testResult0; +exports.test0 = test0; +exports.toClassName1 = toClassName1; +exports.testResult1 = testResult1; +exports.test1 = test1; +exports.toClassName = toClassName; /* testResult0 Not a pure module */ diff --git a/packages/dockerlist-client/webpack.config.prod.js b/packages/dockerlist-client/webpack.config.prod.js deleted file mode 100644 index 69804e6..0000000 --- a/packages/dockerlist-client/webpack.config.prod.js +++ /dev/null @@ -1,49 +0,0 @@ -const path = require("path"); -// const elmloader = require("../../webpack.elmloader.js"); -const TerserPlugin = require("terser-webpack-plugin"); - -process.env.BABEL_ENV = "production"; -process.env.NODE_ENV = "production"; - -module.exports = { - mode: "production", - entry: "./src/DockerList.tsx", - output: { - path: path.resolve(__dirname, "lib"), - filename: "DockerList.js", - libraryTarget: "commonjs2", - }, - module: { - rules: [ - { - test: /\.(ts|tsx)$/, - include: path.resolve(__dirname, "src"), - exclude: /(node_modules|bower_components|build)/, - use: { - loader: "babel-loader", - options: { - presets: ["@babel/preset-env", "@babel/preset-react"], - }, - }, - }, - { test: /\.css$/, loader: "style-loader!css-loader" }, - { test: /\.svg$/, loader: "url-loader" }, - // loader for elm files - // elmloader, - ], - }, - externals: { - react: "commonjs react", - }, - optimization: { - minimize: true, - minimizer: [ - new TerserPlugin({ - terserOptions: { - // Default is to write cache dirs in /packages/*/node_modules/.cache - nameCache: {}, - }, - }), - ], - }, -}; diff --git a/packages/example/README.md b/packages/example/README.md index 9781023..2687280 100644 --- a/packages/example/README.md +++ b/packages/example/README.md @@ -1,3 +1,3 @@ -Example project that uses the homeremote-stream-player React component and server plugin +Example project that uses the homeremote-stream-player and homeremote-dockerlist React components and server plugins After making changes, first build `yarn build` and then start the server `yarn start`. diff --git a/packages/example/package.json b/packages/example/package.json index 2a6ab45..d7504ef 100644 --- a/packages/example/package.json +++ b/packages/example/package.json @@ -3,6 +3,7 @@ "version": "1.6.3", "private": true, "dependencies": { + "@mdworld/homeremote-dockerlist": "^1.6.3", "@mdworld/homeremote-stream-player": "^1.6.3" }, "scripts": { From 8b4afc814e3575583f31951f0e52320fa28564ea Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 19:06:14 +0200 Subject: [PATCH 51/62] Upgrade jsdom --- .storybook/main.js | 2 +- package.json | 3 +- packages/dockerlist-client/package.json | 2 +- packages/streamplayer-client/package.json | 1 - yarn.lock | 4673 ++++++++++----------- 5 files changed, 2311 insertions(+), 2370 deletions(-) diff --git a/.storybook/main.js b/.storybook/main.js index d676f59..a066c68 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -32,7 +32,7 @@ module.exports = { webpackFinal: (config) => { const { module: { - rules: [, , , , , , { oneOf }], + rules: [, , , , , { oneOf }], }, } = config; const babelLoader = oneOf.find(({ test }) => diff --git a/package.json b/package.json index c1d5d65..635b4ab 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "eslint-plugin-react": "^7.21.5", "eslint-plugin-react-hooks": "^4.2.0", "jest": "26.6.3", - "jest-environment-jsdom-fourteen": "1.0.1", "jest-resolve": "26.6.2", "jest-watch-typeahead": "0.6.1", "lerna": "^3.20.2", @@ -51,7 +50,7 @@ "react-dom": "^16.13.1", "react-elm-components": "^1.1.0", "react-is": "^16.13.1", - "react-scripts": "3.4.4", + "react-scripts": "^4.0.3", "serve": "^11.3.2", "ts-jest": "^26.4.3", "ts-node": "^9.0.0", diff --git a/packages/dockerlist-client/package.json b/packages/dockerlist-client/package.json index 83dd0a0..b454293 100644 --- a/packages/dockerlist-client/package.json +++ b/packages/dockerlist-client/package.json @@ -8,6 +8,7 @@ "url": "https://github.com/mdvanes/homeremote-plugins.git" }, "scripts": { + "clean": "rm src/*.bs.js && rm src/*.gen.tsx", "build": "yarn re:build", "re:build": "rescript", "re:start": "rescript build -w" @@ -42,7 +43,6 @@ "/src/**/__tests__/**/*.{js,jsx,ts,tsx}", "/src/**/*.{spec,test}.{js,jsx,ts,tsx}" ], - "testEnvironment": "jest-environment-jsdom-fourteen", "transform": { "^.+\\.(js|jsx|ts|tsx)$": "/node_modules/babel-jest", "^.+\\.css$": "/config/jest/cssTransform.js", diff --git a/packages/streamplayer-client/package.json b/packages/streamplayer-client/package.json index 48a66ba..62b7812 100644 --- a/packages/streamplayer-client/package.json +++ b/packages/streamplayer-client/package.json @@ -40,7 +40,6 @@ "/src/**/__tests__/**/*.{js,jsx,ts,tsx}", "/src/**/*.{spec,test}.{js,jsx,ts,tsx}" ], - "testEnvironment": "jest-environment-jsdom-fourteen", "transform": { "^.+\\.(js|jsx|ts|tsx)$": "/node_modules/babel-jest", "^.+\\.css$": "/config/jest/cssTransform.js", diff --git a/yarn.lock b/yarn.lock index 8c5f044..0ba4219 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,13 +2,20 @@ # yarn lockfile v1 -"@babel/code-frame@7.10.4", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@7.10.4", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: "@babel/highlight" "^7.10.4" +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" @@ -16,12 +23,19 @@ dependencies: "@babel/highlight" "^7.8.3" +"@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.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.1.tgz#d7386a689aa0ddf06255005b4b991988021101a0" integrity sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ== -"@babel/compat-data@^7.12.5", "@babel/compat-data@^7.9.0": +"@babel/compat-data@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.5.tgz#f56db0c4bb1bbbf221b4e81345aab4141e7cb0e9" integrity sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg== @@ -31,6 +45,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" + integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== + "@babel/core@7.11.6": version "7.11.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" @@ -53,7 +72,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@7.12.3", "@babel/core@^7.12.3", "@babel/core@^7.4.5": +"@babel/core@7.12.3", "@babel/core@^7.12.3": version "7.12.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== @@ -75,28 +94,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - "@babel/core@^7.1.0", "@babel/core@^7.12.1", "@babel/core@^7.7.5": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" @@ -119,7 +116,28 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6", "@babel/generator@^7.12.5", "@babel/generator@^7.9.0": +"@babel/core@^7.8.4": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" + integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.3" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-module-transforms" "^7.14.2" + "@babel/helpers" "^7.14.0" + "@babel/parser" "^7.14.3" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.11.5", "@babel/generator@^7.11.6", "@babel/generator@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== @@ -137,12 +155,12 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.4.0": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== +"@babel/generator@^7.14.2", "@babel/generator@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" + integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== dependencies: - "@babel/types" "^7.11.5" + "@babel/types" "^7.14.2" jsesc "^2.5.1" source-map "^0.5.0" @@ -153,6 +171,13 @@ dependencies: "@babel/types" "^7.10.4" +"@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" @@ -161,6 +186,14 @@ "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" +"@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-builder-react-jsx-experimental@^7.12.1", "@babel/helper-builder-react-jsx-experimental@^7.12.4": version "7.12.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48" @@ -188,7 +221,7 @@ browserslist "^4.12.0" semver "^5.5.0" -"@babel/helper-compilation-targets@^7.12.5", "@babel/helper-compilation-targets@^7.8.7": +"@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== @@ -198,7 +231,17 @@ browserslist "^4.14.5" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.8.3": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" + integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== + dependencies: + "@babel/compat-data" "^7.13.15" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== @@ -209,6 +252,18 @@ "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" +"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.3.tgz#832111bcf4f57ca57a4c5b1a000fc125abc6554a" + integrity sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.14.3" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-create-regexp-features-plugin@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" @@ -218,6 +273,14 @@ "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.1" +"@babel/helper-create-regexp-features-plugin@^7.12.13": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz#149aa6d78c016e318c43e2409a0ae9c136a86688" + integrity sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA== + 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" @@ -227,6 +290,20 @@ "@babel/types" "^7.10.5" lodash "^4.17.19" +"@babel/helper-define-polyfill-provider@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.1.tgz#e6f5f4a6edc3722152c21359190de67fc6cf664d" + integrity sha512-x3AUTVZNPunaw1opRTa5OwVA5N0YxGlIad9xQ5QflK1uIS7PnAGGU5O2Dj/G183fR//N8AzTq+Q8+oiu9m0VFg== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-explode-assignable-expression@^7.10.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" @@ -234,6 +311,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": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" @@ -243,6 +327,15 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2" + integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.14.2" + "@babel/helper-get-function-arity@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" @@ -250,6 +343,13 @@ dependencies: "@babel/types" "^7.10.4" +"@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" @@ -257,6 +357,14 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-hoist-variables@^7.13.0": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz#1b1651249e94b51f8f0d33439843e33e39775b30" + integrity sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg== + dependencies: + "@babel/traverse" "^7.13.15" + "@babel/types" "^7.13.16" + "@babel/helper-member-expression-to-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" @@ -264,7 +372,14 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.5", "@babel/helper-module-imports@^7.8.3": +"@babel/helper-member-expression-to-functions@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" + integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== + dependencies: + "@babel/types" "^7.13.12" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== @@ -278,7 +393,14 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-module-transforms@^7.11.0", "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.9.0": +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" + integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== + dependencies: + "@babel/types" "^7.13.12" + +"@babel/helper-module-transforms@^7.11.0", "@babel/helper-module-transforms@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== @@ -293,6 +415,20 @@ "@babel/types" "^7.12.1" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" + integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.14.0" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz#7f94ae5e08721a49467346aa04fd22f750033b9c" @@ -300,11 +436,23 @@ dependencies: "@babel/types" "^7.12.7" +"@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.10.4", "@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-regex@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" @@ -321,6 +469,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.1" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" @@ -331,6 +488,16 @@ "@babel/traverse" "^7.12.1" "@babel/types" "^7.12.1" +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz#ca17b318b859d107f0e9b722d58cf12d94436600" + integrity sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + "@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" @@ -338,6 +505,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-simple-access@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" + integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== + dependencies: + "@babel/types" "^7.13.12" + "@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" @@ -352,16 +526,33 @@ dependencies: "@babel/types" "^7.11.0" +"@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": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== + "@babel/helper-validator-option@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== +"@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" @@ -372,7 +563,17 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helpers@^7.10.4", "@babel/helpers@^7.12.5", "@babel/helpers@^7.9.0": +"@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.10.4", "@babel/helpers@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== @@ -390,6 +591,15 @@ "@babel/traverse" "^7.12.1" "@babel/types" "^7.12.1" +"@babel/helpers@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" + integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.14.0" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -399,7 +609,16 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3": +"@babel/highlight@^7.12.13": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== @@ -414,12 +633,26 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== -"@babel/parser@^7.12.5", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": +"@babel/parser@^7.12.13", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" + integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== + +"@babel/parser@^7.12.5", "@babel/parser@^7.7.0": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ== -"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.8.3": +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" + integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + +"@babel/plugin-proposal-async-generator-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== @@ -428,6 +661,15 @@ "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" +"@babel/plugin-proposal-async-generator-functions@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz#3a2085abbf5d5f962d480dbc81347385ed62eb1e" + integrity sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-proposal-class-properties@7.12.1", "@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" @@ -436,13 +678,22 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-class-properties@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" - integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== +"@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.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-class-static-block@^7.13.11": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz#5a527e2cae4a4753119c3a3e7f64ecae8ccf1360" + integrity sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.3" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-class-static-block" "^7.12.13" "@babel/plugin-proposal-decorators@7.12.1", "@babel/plugin-proposal-decorators@^7.12.1": version "7.12.1" @@ -453,16 +704,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-decorators" "^7.12.1" -"@babel/plugin-proposal-decorators@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" - integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-decorators" "^7.8.3" - -"@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.8.3": +"@babel/plugin-proposal-dynamic-import@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== @@ -470,6 +712,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" +"@babel/plugin-proposal-dynamic-import@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz#01ebabd7c381cff231fa43e302939a9de5be9d9f" + integrity sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-export-default-from@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.1.tgz#c6e62d668a8abcfe0d28b82f560395fecb611c5a" @@ -486,7 +736,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.8.3": +"@babel/plugin-proposal-export-namespace-from@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz#62542f94aa9ce8f6dba79eec698af22112253791" + integrity sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== @@ -494,6 +752,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" +"@babel/plugin-proposal-json-strings@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz#830b4e2426a782e8b2878fbfe2cba85b70cbf98c" + integrity sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@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" @@ -502,7 +768,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-proposal-logical-assignment-operators@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz#222348c080a1678e0e74ea63fe76f275882d1fd7" + integrity sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== @@ -510,13 +784,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz#425b11dc62fc26939a2ab42cbba680bdf5734546" + integrity sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@7.12.1", "@babel/plugin-proposal-numeric-separator@^7.12.1": version "7.12.1" @@ -526,14 +800,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-numeric-separator@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@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" @@ -542,12 +808,12 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz#b1ce757156d40ed79d59d467cb2b154a5c4149ba" - integrity sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g== +"@babel/plugin-proposal-numeric-separator@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz#82b4cc06571143faf50626104b335dd71baa4f9e" + integrity sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@7.11.0": @@ -559,7 +825,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.9.0": +"@babel/plugin-proposal-object-rest-spread@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== @@ -568,7 +834,18 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": +"@babel/plugin-proposal-object-rest-spread@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz#e17d418f81cc103fedd4ce037e181c8056225abc" + integrity sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw== + dependencies: + "@babel/compat-data" "^7.14.0" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.14.2" + +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== @@ -576,7 +853,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.9.0": +"@babel/plugin-proposal-optional-catch-binding@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz#150d4e58e525b16a9a1431bd5326c4eed870d717" + integrity sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== @@ -585,14 +870,6 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-proposal-optional-chaining@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" @@ -602,6 +879,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.12", "@babel/plugin-proposal-optional-chaining@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz#df8171a8b9c43ebf4c1dabe6311b432d83e1b34e" + integrity sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@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" @@ -610,7 +896,25 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": +"@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-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636" + integrity sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-create-class-features-plugin" "^7.14.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== @@ -618,6 +922,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" @@ -639,7 +951,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-decorators@^7.12.1", "@babel/plugin-syntax-decorators@^7.8.3": +"@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-class-static-block@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz#8e3d674b0613e67975ceac2776c97b60cafc5c9c" + integrity sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-decorators@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz#81a8b535b284476c41be6de06853a8802b98c5dd" integrity sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w== @@ -667,7 +993,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.8.3": +"@babel/plugin-syntax-flow@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz#a77670d9abe6d63e8acadf4c31bb1eb5a506bbdd" integrity sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA== @@ -702,6 +1028,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@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" @@ -716,14 +1049,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -744,6 +1077,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz#762a4babec61176fec6c88480dec40372b140c0b" + integrity sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-top-level-await@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" @@ -751,6 +1091,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-top-level-await@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" @@ -765,14 +1112,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.8.3": +"@babel/plugin-transform-arrow-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.8.3": +"@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" integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== @@ -781,21 +1135,44 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-remap-async-to-generator" "^7.12.1" -"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.8.3": +"@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" integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.8.3": +"@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.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.9.0": +"@babel/plugin-transform-block-scoping@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz#761cb12ab5a88d640ad4af4aa81f820e6b5fdf5c" + integrity sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-classes@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== @@ -809,21 +1186,48 @@ "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.8.3": +"@babel/plugin-transform-classes@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz#3f1196c5709f064c252ad056207d87b7aeb2d03d" + integrity sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-replace-supers" "^7.13.12" + "@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" integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.8.3": +"@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" integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": +"@babel/plugin-transform-destructuring@^7.13.17": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" + integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== + 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" integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== @@ -831,14 +1235,29 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.8.3": +"@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" integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.8.3": +"@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" integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== @@ -846,6 +1265,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", "@babel/plugin-transform-flow-strip-types@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" @@ -854,22 +1281,21 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-flow" "^7.12.1" -"@babel/plugin-transform-flow-strip-types@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" - integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-flow" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.9.0": +"@babel/plugin-transform-for-of@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.8.3": +"@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" integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== @@ -877,21 +1303,43 @@ "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.8.3": +"@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" integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.8.3": +"@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" integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.9.0": +"@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" integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== @@ -900,7 +1348,16 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.9.0": +"@babel/plugin-transform-modules-amd@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz#6622806fe1a7c07a1388444222ef9535f2ca17b0" + integrity sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw== + dependencies: + "@babel/helper-module-transforms" "^7.14.2" + "@babel/helper-plugin-utils" "^7.13.0" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== @@ -910,7 +1367,17 @@ "@babel/helper-simple-access" "^7.12.1" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.9.0": +"@babel/plugin-transform-modules-commonjs@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" + integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== + dependencies: + "@babel/helper-module-transforms" "^7.14.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-simple-access" "^7.13.12" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== @@ -921,7 +1388,18 @@ "@babel/helper-validator-identifier" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.9.0": +"@babel/plugin-transform-modules-systemjs@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" + integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== + dependencies: + "@babel/helper-hoist-variables" "^7.13.0" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@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" integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== @@ -929,21 +1407,43 @@ "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": +"@babel/plugin-transform-modules-umd@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34" + integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw== + dependencies: + "@babel/helper-module-transforms" "^7.14.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" integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.1" -"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.8.3": +"@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" integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.8.3": +"@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" integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== @@ -951,40 +1451,62 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.12.1" -"@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.8.7": +"@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.10.4", "@babel/plugin-transform-parameters@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.8.3": +"@babel/plugin-transform-parameters@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" + integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== + 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" integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-constant-elements@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz#4471f0851feec3231cc9aaa0dccde39947c1ac1e" - integrity sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.13.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz#0208b1d942bf939cd4f7aa5b255d42602aa4a920" + integrity sha512-SNJU53VM/SjQL0bZhyU+f4kJQz7bQQajnrZRSaU21hruG/NWY41AEM9AWXeXX90pYr/C2yAmTgI6yW3LlLrAUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-react-display-name@7.12.1", "@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.8.3": +"@babel/plugin-transform-react-display-name@7.12.1", "@babel/plugin-transform-react-display-name@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-display-name@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" - integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== +"@babel/plugin-transform-react-display-name@^7.12.13": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.2.tgz#2e854544d42ab3bb9c21f84e153d62e800fbd593" + integrity sha512-zCubvP+jjahpnFJvPaHPiGVfuVUjXHhFvJKQdNnsmSsiU9kR/rCZ41jHc++tERD2zV+p7Hr6is+t5b6iWTCqSw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-react-jsx-development@^7.12.1": version "7.12.1" @@ -995,6 +1517,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.12.1" +"@babel/plugin-transform-react-jsx-development@^7.12.17": + 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-development@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.7.tgz#4c2a647de79c7e2b16bfe4540677ba3121e82a08" @@ -1004,23 +1533,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.12.1" -"@babel/plugin-transform-react-jsx-development@^7.9.0": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.5.tgz#677de5b96da310430d6cfb7fee16a1603afa3d56" - integrity sha512-1JJusg3iPgsZDthyWiCr3KQiGs31ikU/mSf2N2dSYEAO0GEImmVUbWf0VoSDGDFTAn5Dj4DUiR6SdIXHY7tELA== - dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" - -"@babel/plugin-transform-react-jsx-self@^7.12.1", "@babel/plugin-transform-react-jsx-self@^7.9.0": +"@babel/plugin-transform-react-jsx-self@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-source@^7.12.1", "@babel/plugin-transform-react-jsx-source@^7.9.0": +"@babel/plugin-transform-react-jsx-source@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b" integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ== @@ -1037,6 +1557,17 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.12.1" +"@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.3.tgz#0e26597805cf0862da735f264550933c38babb66" + integrity sha512-uuxuoUNVhdgYzERiHHFkE4dWoJx+UFVyuAl0aqN8P2/AKFHwqgUC5w2+4/PjpKXJsFgBlYAFXlUmDQ3k3DUkXw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/types" "^7.14.2" + "@babel/plugin-transform-react-jsx@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.7.tgz#8b14d45f6eccd41b7f924bcb65c021e9f0a06f7f" @@ -1047,16 +1578,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.12.1" -"@babel/plugin-transform-react-jsx@^7.9.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.5.tgz#39ede0e30159770561b6963be143e40af3bde00c" - integrity sha512-2xkcPqqrYiOQgSlM/iwto1paPijjsDbUynN13tI6bosDz/jOW3CRzYguIE8wKX32h+msbBM22Dv5fwrFkUOZjQ== - dependencies: - "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" - "@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" @@ -1065,20 +1586,34 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.8.7": +"@babel/plugin-transform-regenerator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.8.3": +"@babel/plugin-transform-regenerator@^7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" + integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-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.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" @@ -1089,24 +1624,21 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" - integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.8.3": +"@babel/plugin-transform-shorthand-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.8.3": +"@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" integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== @@ -1114,7 +1646,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.8.3": +"@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.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== @@ -1122,6 +1662,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-regex" "^7.10.4" +"@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" @@ -1129,21 +1676,35 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.8.3": +"@babel/plugin-transform-template-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.8.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.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typescript@^7.12.1", "@babel/plugin-transform-typescript@^7.9.0": +"@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": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== @@ -1159,7 +1720,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.8.3": +"@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" integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== @@ -1167,7 +1735,15 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@7.12.1", "@babel/preset-env@^7.4.5": +"@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.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== @@ -1239,72 +1815,6 @@ core-js-compat "^3.6.2" semver "^5.5.0" -"@babel/preset-env@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" - integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@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.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - browserslist "^4.9.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - "@babel/preset-env@^7.12.1": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.7.tgz#54ea21dbe92caf6f10cb1a0a576adc4ebf094b55" @@ -1377,6 +1887,85 @@ core-js-compat "^3.7.0" semver "^5.5.0" +"@babel/preset-env@^7.8.4": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.2.tgz#e80612965da73579c84ad2f963c2359c71524ed5" + integrity sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ== + dependencies: + "@babel/compat-data" "^7.14.0" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" + "@babel/plugin-proposal-async-generator-functions" "^7.14.2" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-class-static-block" "^7.13.11" + "@babel/plugin-proposal-dynamic-import" "^7.14.2" + "@babel/plugin-proposal-export-namespace-from" "^7.14.2" + "@babel/plugin-proposal-json-strings" "^7.14.2" + "@babel/plugin-proposal-logical-assignment-operators" "^7.14.2" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.2" + "@babel/plugin-proposal-numeric-separator" "^7.14.2" + "@babel/plugin-proposal-object-rest-spread" "^7.14.2" + "@babel/plugin-proposal-optional-catch-binding" "^7.14.2" + "@babel/plugin-proposal-optional-chaining" "^7.14.2" + "@babel/plugin-proposal-private-methods" "^7.13.0" + "@babel/plugin-proposal-private-property-in-object" "^7.14.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" + "@babel/plugin-syntax-top-level-await" "^7.12.13" + "@babel/plugin-transform-arrow-functions" "^7.13.0" + "@babel/plugin-transform-async-to-generator" "^7.13.0" + "@babel/plugin-transform-block-scoped-functions" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.14.2" + "@babel/plugin-transform-classes" "^7.14.2" + "@babel/plugin-transform-computed-properties" "^7.13.0" + "@babel/plugin-transform-destructuring" "^7.13.17" + "@babel/plugin-transform-dotall-regex" "^7.12.13" + "@babel/plugin-transform-duplicate-keys" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator" "^7.12.13" + "@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.14.2" + "@babel/plugin-transform-modules-commonjs" "^7.14.0" + "@babel/plugin-transform-modules-systemjs" "^7.13.8" + "@babel/plugin-transform-modules-umd" "^7.14.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" + "@babel/plugin-transform-new-target" "^7.12.13" + "@babel/plugin-transform-object-super" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.14.2" + "@babel/plugin-transform-property-literals" "^7.12.13" + "@babel/plugin-transform-regenerator" "^7.13.15" + "@babel/plugin-transform-reserved-words" "^7.12.13" + "@babel/plugin-transform-shorthand-properties" "^7.12.13" + "@babel/plugin-transform-spread" "^7.13.0" + "@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.4" + "@babel/types" "^7.14.2" + babel-plugin-polyfill-corejs2 "^0.2.0" + babel-plugin-polyfill-corejs3 "^0.2.0" + babel-plugin-polyfill-regenerator "^0.2.0" + core-js-compat "^3.9.0" + semver "^6.3.0" + "@babel/preset-flow@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.12.1.tgz#1a81d376c5a9549e75352a3888f8c273455ae940" @@ -1385,7 +1974,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-flow-strip-types" "^7.12.1" -"@babel/preset-modules@^0.1.3": +"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== @@ -1409,19 +1998,7 @@ "@babel/plugin-transform-react-jsx-source" "^7.12.1" "@babel/plugin-transform-react-pure-annotations" "^7.12.1" -"@babel/preset-react@7.9.1": - version "7.9.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" - integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-react-display-name" "^7.8.3" - "@babel/plugin-transform-react-jsx" "^7.9.1" - "@babel/plugin-transform-react-jsx-development" "^7.9.0" - "@babel/plugin-transform-react-jsx-self" "^7.9.0" - "@babel/plugin-transform-react-jsx-source" "^7.9.0" - -"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.12.1": +"@babel/preset-react@^7.12.1": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.7.tgz#36d61d83223b07b6ac4ec55cf016abb0f70be83b" integrity sha512-wKeTdnGUP5AEYCYQIMeXMMwU7j+2opxrG0WzuZfxuuW9nhKvvALBjl67653CWamZJVefuJGI219G591RSldrqQ== @@ -1434,6 +2011,18 @@ "@babel/plugin-transform-react-jsx-source" "^7.12.1" "@babel/plugin-transform-react-pure-annotations" "^7.12.1" +"@babel/preset-react@^7.12.5": + version "7.13.13" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.13.13.tgz#fa6895a96c50763fe693f9148568458d5a839761" + integrity sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-react-display-name" "^7.12.13" + "@babel/plugin-transform-react-jsx" "^7.13.12" + "@babel/plugin-transform-react-jsx-development" "^7.12.17" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + "@babel/preset-typescript@7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b" @@ -1442,14 +2031,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-typescript" "^7.12.1" -"@babel/preset-typescript@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" - integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-typescript" "^7.9.0" - "@babel/preset-typescript@^7.12.1": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3" @@ -1478,14 +2059,6 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime-corejs3@^7.12.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz#ffee91da0eb4c6dae080774e94ba606368e414f4" - integrity sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - "@babel/runtime@7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" @@ -1493,14 +2066,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" - integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@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== @@ -1523,7 +2089,16 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" -"@babel/template@^7.3.3", "@babel/template@^7.4.0", "@babel/template@^7.8.6": +"@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/template@^7.3.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== @@ -1532,7 +2107,7 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3": +"@babel/traverse@^7.1.0": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== @@ -1577,7 +2152,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": +"@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.5.tgz#78a0c68c8e8a35e4cacfd31db8bb303d5606f095" integrity sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA== @@ -1592,7 +2167,21 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" + integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.2" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.14.2" + "@babel/types" "^7.14.2" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== @@ -1619,7 +2208,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@babel/types@^7.12.5", "@babel/types@^7.3.3", "@babel/types@^7.7.0", "@babel/types@^7.9.0": +"@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" + integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + to-fast-properties "^2.0.0" + +"@babel/types@^7.12.5", "@babel/types@^7.3.3", "@babel/types@^7.7.0": version "7.12.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" integrity sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA== @@ -1774,6 +2371,21 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" + integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@evocateur/libnpmaccess@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" @@ -1863,7 +2475,7 @@ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== -"@hapi/joi@^15.0.0": +"@hapi/joi@^15.1.0": version "15.1.1" resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== @@ -1901,15 +2513,6 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== - dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" - "@jest/console@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" @@ -1922,41 +2525,7 @@ jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" - -"@jest/core@^26.6.3": +"@jest/core@^26.6.0", "@jest/core@^26.6.3": version "26.6.3" resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== @@ -1997,17 +2566,7 @@ dependencies: "@jest/types" "^26.6.2" -"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== - dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - -"@jest/environment@^26.6.2": +"@jest/environment@^26.6.0", "@jest/environment@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== @@ -2017,15 +2576,6 @@ "@types/node" "*" jest-mock "^26.6.2" -"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - "@jest/fake-timers@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" @@ -2047,33 +2597,6 @@ "@jest/types" "^26.6.2" expect "^26.6.2" -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" - source-map "^0.6.0" - string-length "^2.0.0" - "@jest/reporters@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" @@ -2106,15 +2629,6 @@ optionalDependencies: node-notifier "^8.0.0" -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - 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" @@ -2124,16 +2638,7 @@ graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== - dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/istanbul-lib-coverage" "^2.0.0" - -"@jest/test-result@^26.6.2": +"@jest/test-result@^26.6.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" integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== @@ -2143,16 +2648,6 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== - dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - "@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" @@ -2164,28 +2659,6 @@ jest-runner "^26.6.3" jest-runtime "^26.6.3" -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" - pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" - "@jest/transform@^26.0.0", "@jest/transform@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" @@ -2207,16 +2680,7 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^24.3.0", "@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - -"@jest/types@^26.5.2", "@jest/types@^26.6.2": +"@jest/types@^26.5.2", "@jest/types@^26.6.0", "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== @@ -3106,7 +3570,7 @@ dependencies: "@types/node" ">= 8" -"@pmmmwh/react-refresh-webpack-plugin@^0.4.2": +"@pmmmwh/react-refresh-webpack-plugin@0.4.3", "@pmmmwh/react-refresh-webpack-plugin@^0.4.2": version "0.4.3" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== @@ -3138,6 +3602,34 @@ resolved "https://registry.yarnpkg.com/@rescript/react/-/react-0.10.3.tgz#a2a8bed6b017940ec26c2154764b350f50348889" integrity sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw== +"@rollup/plugin-node-resolve@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" + integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== + dependencies: + "@rollup/pluginutils" "^3.0.8" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.14.2" + +"@rollup/plugin-replace@^2.3.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@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== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sindresorhus/is@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" @@ -3731,108 +4223,116 @@ resolve-from "^5.0.0" store2 "^2.7.1" -"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" - integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== +"@surma/rollup-plugin-off-main-thread@^1.1.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" + integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== + dependencies: + ejs "^2.6.1" + magic-string "^0.25.0" -"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" - integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== -"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" - integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== -"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" - integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== -"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" - integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== -"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" - integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== -"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" - integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== -"@svgr/babel-plugin-transform-svg-component@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" - integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== - -"@svgr/babel-preset@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" - integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" - "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" - "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" - "@svgr/babel-plugin-transform-svg-component" "^4.2.0" - -"@svgr/core@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" - integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== - dependencies: - "@svgr/plugin-jsx" "^4.3.3" - camelcase "^5.3.1" - cosmiconfig "^5.2.1" +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== -"@svgr/hast-util-to-babel-ast@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" - integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== dependencies: - "@babel/types" "^7.4.4" + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" -"@svgr/plugin-jsx@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" - integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== dependencies: - "@babel/core" "^7.4.5" - "@svgr/babel-preset" "^4.3.3" - "@svgr/hast-util-to-babel-ast" "^4.3.2" - svg-parser "^2.0.0" + "@babel/types" "^7.12.6" -"@svgr/plugin-svgo@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" - integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== dependencies: - cosmiconfig "^5.2.1" - merge-deep "^3.0.2" + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" svgo "^1.2.2" -"@svgr/webpack@4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" - integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== - dependencies: - "@babel/core" "^7.4.5" - "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.4.5" - "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.3" - "@svgr/plugin-jsx" "^4.3.3" - "@svgr/plugin-svgo" "^4.3.1" - loader-utils "^1.2.3" +"@svgr/webpack@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" "@szmarczak/http-timer@^4.0.5": version "4.0.5" @@ -3894,7 +4394,7 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.0": +"@types/babel__core@^7.0.0": version "7.1.12" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== @@ -3968,10 +4468,23 @@ dependencies: "@types/node" "*" -"@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/eslint@^7.2.6": + version "7.2.11" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.11.tgz#180b58f5bb7d7376e39d22496e2b08901aa52fd2" + integrity sha512-WYhv//5K8kQtsSc9F1Kn2vHzhYor6KpwPbARH7hwYe3C3ETD0EVx/3P5qQybUoaBEuUa9f/02JjBiXFWalYUmw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.47" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" + integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*": version "4.17.13" @@ -4051,14 +4564,6 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - "@types/istanbul-reports@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" @@ -4074,6 +4579,11 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" +"@types/json-schema@*": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" @@ -4233,6 +4743,13 @@ dependencies: "@types/react" "*" +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + "@types/responselike@*", "@types/responselike@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" @@ -4253,11 +4770,6 @@ resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" @@ -4330,13 +4842,6 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== -"@types/yargs@^13.0.0": - version "13.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" - integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^15.0.0": version "15.0.10" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.10.tgz#0fe3c8173a0d5c3e780b389050140c3f5ea6ea74" @@ -4344,14 +4849,18 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.10.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== +"@typescript-eslint/eslint-plugin@^4.5.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.24.0.tgz#03801ffc25b2af9d08f3dc9bccfc0b7ce3780d0f" + integrity sha512-qbCgkPM7DWTsYQGjx9RTuQGswi+bEt0isqDBeo+CKV0953zqI0Tp7CZ7Fi9ipgFA6mcQqF4NOVNwS/f2r6xShw== dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/experimental-utils" "4.24.0" + "@typescript-eslint/scope-manager" "4.24.0" + debug "^4.1.1" functional-red-black-tree "^1.0.1" + lodash "^4.17.15" regexpp "^3.0.0" + semver "^7.3.2" tsutils "^3.17.1" "@typescript-eslint/eslint-plugin@^4.6.1": @@ -4367,13 +4876,15 @@ 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== +"@typescript-eslint/experimental-utils@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.24.0.tgz#c23ead9de44b99c3a5fd925c33a106b00165e172" + integrity sha512-IwTT2VNDKH1h8RZseMH4CcYBz6lTvRoOLDuuqNZZoThvfHEhOiZPQCow+5El3PtyxJ1iDr6UXZwYtE3yZQjhcw== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" + "@typescript-eslint/scope-manager" "4.24.0" + "@typescript-eslint/types" "4.24.0" + "@typescript-eslint/typescript-estree" "4.24.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" @@ -4389,6 +4900,17 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" +"@typescript-eslint/experimental-utils@^3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + "@typescript-eslint/experimental-utils@^4.0.1": version "4.5.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.5.0.tgz#547fe1158609143ce60645383aa1d6f83ada28df" @@ -4401,15 +4923,15 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.10.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== +"@typescript-eslint/parser@^4.5.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.24.0.tgz#2e5f1cc78ffefe43bfac7e5659309a92b09a51bd" + integrity sha512-dj1ZIh/4QKeECLb2f/QjRwMmDArcwc2WorWPRlB8UNTZlY1KpTVsbX7e3ZZdphfRw29aTFUSNuGB8w9X5sS97w== 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/scope-manager" "4.24.0" + "@typescript-eslint/types" "4.24.0" + "@typescript-eslint/typescript-estree" "4.24.0" + debug "^4.1.1" "@typescript-eslint/parser@^4.6.1": version "4.6.1" @@ -4421,6 +4943,14 @@ "@typescript-eslint/typescript-estree" "4.6.1" debug "^4.1.1" +"@typescript-eslint/scope-manager@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.24.0.tgz#38088216f0eaf235fa30ed8cabf6948ec734f359" + integrity sha512-9+WYJGDnuC9VtYLqBhcSuM7du75fyCS/ypC8c5g7Sdw7pGL4NDTbeH38eJPfzIydCHZDoOgjloxSAA3+4l/zsA== + dependencies: + "@typescript-eslint/types" "4.24.0" + "@typescript-eslint/visitor-keys" "4.24.0" + "@typescript-eslint/scope-manager@4.5.0": version "4.5.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.5.0.tgz#8dfd53c3256d4357e7d66c2fc8956835f4d239be" @@ -4437,6 +4967,16 @@ "@typescript-eslint/types" "4.6.1" "@typescript-eslint/visitor-keys" "4.6.1" +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/types@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.24.0.tgz#6d0cca2048cbda4e265e0c4db9c2a62aaad8228c" + integrity sha512-tkZUBgDQKdvfs8L47LaqxojKDE+mIUmOzdz7r+u+U54l3GDkTpEbQ1Jp3cNqqAU9vMUCBA1fitsIhm7yN0vx9Q== + "@typescript-eslint/types@4.5.0": version "4.5.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.5.0.tgz#98256e07bad1c8d15d0c9627ebec82fd971bb3c3" @@ -4447,19 +4987,33 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.6.1.tgz#d3ad7478f53f22e7339dc006ab61aac131231552" integrity sha512-k2ZCHhJ96YZyPIsykickez+OMHkz06xppVLfJ+DY90i532/Cx2Z+HiRMH8YZQo7a4zVd/TwNBuRCdXlGK4yo8w== -"@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== +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" 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.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.24.0.tgz#b49249679a98014d8b03e8d4b70864b950e3c90f" + integrity sha512-kBDitL/by/HK7g8CYLT7aKpAwlR8doshfWz8d71j97n5kUa5caHWvY0RvEUEanL/EqBJoANev8Xc/mQ6LLwXGA== + dependencies: + "@typescript-eslint/types" "4.24.0" + "@typescript-eslint/visitor-keys" "4.24.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + semver "^7.3.2" + tsutils "^3.17.1" + "@typescript-eslint/typescript-estree@4.5.0": version "4.5.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.5.0.tgz#d50cf91ae3a89878401111031eb6fb6d03554f64" @@ -4488,6 +5042,21 @@ semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/visitor-keys@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.24.0.tgz#a8fafdc76cad4e04a681a945fbbac4e35e98e297" + integrity sha512-4ox1sjmGHIxjEDBnMCtWFFhErXtKA1Ec0sBpuz0fqf3P+g3JFGyTxxbF06byw0FRsPnnbq44cKivH7Ks1/0s6g== + dependencies: + "@typescript-eslint/types" "4.24.0" + eslint-visitor-keys "^2.0.0" + "@typescript-eslint/visitor-keys@4.5.0": version "4.5.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.5.0.tgz#b59f26213ac597efe87f6b13cf2aabee70542af0" @@ -4504,15 +5073,6 @@ "@typescript-eslint/types" "4.6.1" eslint-visitor-keys "^2.0.0" -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -4522,43 +5082,21 @@ "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - "@webassemblyjs/floating-point-hex-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - "@webassemblyjs/helper-api-error@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - "@webassemblyjs/helper-code-frame@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" @@ -4566,24 +5104,11 @@ dependencies: "@webassemblyjs/wast-printer" "1.9.0" -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - "@webassemblyjs/helper-fsm@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - "@webassemblyjs/helper-module-context@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" @@ -4591,26 +5116,11 @@ dependencies: "@webassemblyjs/ast" "1.9.0" -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - "@webassemblyjs/helper-wasm-bytecode@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" @@ -4619,14 +5129,7 @@ "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" + "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/ieee754@1.9.0": version "1.9.0" @@ -4635,13 +5138,6 @@ dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - "@webassemblyjs/leb128@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" @@ -4649,30 +5145,11 @@ dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - "@webassemblyjs/utf8@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - "@webassemblyjs/wasm-edit@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" @@ -4687,17 +5164,6 @@ "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wast-printer" "1.9.0" -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" @@ -4709,16 +5175,6 @@ "@webassemblyjs/leb128" "1.9.0" "@webassemblyjs/utf8" "1.9.0" -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" @@ -4729,18 +5185,6 @@ "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" @@ -4753,18 +5197,6 @@ "@webassemblyjs/leb128" "1.9.0" "@webassemblyjs/utf8" "1.9.0" -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - "@webassemblyjs/wast-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" @@ -4777,15 +5209,6 @@ "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" @@ -4851,7 +5274,7 @@ JSONStream@^1.0.4, JSONStream@^1.3.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.0, abab@^2.0.3: +abab@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== @@ -4869,14 +5292,6 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^4.1.0, 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== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -4885,27 +5300,17 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-jsx@^5.1.0, acorn-jsx@^5.2.0: +acorn-jsx@^5.1.0, acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - acorn-walk@^7.0.0, acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^5.5.3: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1, acorn@^6.4.1: +acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== @@ -5020,6 +5425,16 @@ ajv@^6.10.0, ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b" + integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -5049,7 +5464,7 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -5076,7 +5491,7 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.0.0, ansi-regex@^4.1.0: +ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== @@ -5178,14 +5593,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= - dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" - aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -5224,11 +5631,6 @@ array-differ@^2.0.3: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -5388,7 +5790,7 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-types-flow@0.0.7, ast-types-flow@^0.0.7: +ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= @@ -5410,6 +5812,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -5480,7 +5887,7 @@ axe-core@^4.0.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.0.2.tgz#c7cf7378378a51fcd272d3c09668002a4990b1cb" integrity sha512-arU1h31OGFu+LPrOLGZ7nB45v940NMDMEJeNmbutu57P+UFDVnkZg3e+J1I2HJRZ9hT7gO8J91dn/PMrAiKakA== -axobject-query@^2.0.2, axobject-query@^2.2.0: +axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== @@ -5494,7 +5901,7 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" -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== @@ -5548,20 +5955,7 @@ babel-helper-to-multiple-sequence-expressions@^0.5.0: resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d" integrity sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA== -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== - dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" - -babel-jest@^26.6.3: +babel-jest@^26.6.0, babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== @@ -5639,16 +6033,6 @@ babel-plugin-extract-import-names@1.6.21: dependencies: "@babel/helper-plugin-utils" "7.10.4" -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" - babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" @@ -5660,13 +6044,6 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== - dependencies: - "@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" @@ -5762,11 +6139,35 @@ babel-plugin-minify-type-constructors@^0.4.3: dependencies: babel-helper-is-void-0 "^0.4.3" -babel-plugin-named-asset-import@^0.3.1, babel-plugin-named-asset-import@^0.3.6: +babel-plugin-named-asset-import@^0.3.1, babel-plugin-named-asset-import@^0.3.7: version "0.3.7" resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== +babel-plugin-polyfill-corejs2@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.1.tgz#ae2cf6d6f1aa7c0edcf04a25180e8856a6d1184f" + integrity sha512-hXGSPbr6IbjeMyGew+3uGIAkRjBFSOJ9FLDZNOfHuyJZCcoia4nd/72J0bSgvfytcVfUcP/dxEVcUhVJuQRtSw== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.2.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.1.tgz#786f40218040030f0edecfd48e6e59f1ee9bef53" + integrity sha512-WZCqF3DLUhdTD/P381MDJfuP18hdCZ+iqJ+wHtzhWENpsiof284JJ1tMQg1CE+hfCWyG48F7e5gDMk2c3Laz7w== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.1" + core-js-compat "^3.9.1" + +babel-plugin-polyfill-regenerator@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.1.tgz#ca9595d7d5f3afefec2d83126148b90db751a091" + integrity sha512-T3bYyL3Sll2EtC94v3f+fA8M28q7YPTOZdB++SRHjvYZTvtd+WorMUq3tDTD4Q7Kjk1LG0gGromslKjcO5p2TA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.1" + babel-plugin-react-docgen@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.0.tgz#4f425692f0ca06c73a1462274d370a3ac0637b46" @@ -5885,14 +6286,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@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" - 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" @@ -5951,27 +6344,6 @@ babel-preset-react-app@^10.0.0: babel-plugin-macros "2.8.0" babel-plugin-transform-react-remove-prop-types "0.4.24" -babel-preset-react-app@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" - integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== - dependencies: - "@babel/core" "7.9.0" - "@babel/plugin-proposal-class-properties" "7.8.3" - "@babel/plugin-proposal-decorators" "7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" - "@babel/plugin-proposal-numeric-separator" "7.8.3" - "@babel/plugin-proposal-optional-chaining" "7.9.0" - "@babel/plugin-transform-flow-strip-types" "7.9.0" - "@babel/plugin-transform-react-display-name" "7.8.3" - "@babel/plugin-transform-runtime" "7.9.0" - "@babel/preset-env" "7.9.0" - "@babel/preset-react" "7.9.1" - "@babel/preset-typescript" "7.9.0" - "@babel/runtime" "7.9.0" - babel-plugin-macros "2.8.0" - babel-plugin-transform-react-remove-prop-types "0.4.24" - babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -6042,6 +6414,16 @@ better-opn@^2.0.0: dependencies: open "^7.0.3" +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -6180,13 +6562,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" @@ -6268,15 +6643,16 @@ browserslist@4.14.2: escalade "^3.0.2" node-releases "^1.1.61" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: - version "4.14.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.6.tgz#97702a9c212e0c6b6afefad913d3a1538e348457" - integrity sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A== +browserslist@^4.0.0, browserslist@^4.16.6, browserslist@^4.6.2, browserslist@^4.6.4: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== dependencies: - caniuse-lite "^1.0.30001154" - electron-to-chromium "^1.3.585" + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" escalade "^3.1.1" - node-releases "^1.1.65" + node-releases "^1.1.71" browserslist@^4.12.0, browserslist@^4.14.7: version "4.14.7" @@ -6289,6 +6665,16 @@ browserslist@^4.12.0, browserslist@^4.14.7: escalade "^3.1.1" node-releases "^1.1.66" +browserslist@^4.14.5: + version "4.14.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.6.tgz#97702a9c212e0c6b6afefad913d3a1538e348457" + integrity sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A== + dependencies: + caniuse-lite "^1.0.30001154" + electron-to-chromium "^1.3.585" + escalade "^3.1.1" + node-releases "^1.1.65" + bs-fetch@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/bs-fetch/-/bs-fetch-0.6.2.tgz#37d982e9f79b9bc44c23e87ae78ccbee1f869adf" @@ -6337,6 +6723,11 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -6388,30 +6779,6 @@ cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - cacache@^15.0.5: version "15.0.5" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" @@ -6476,6 +6843,14 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.0" +call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -6559,7 +6934,7 @@ camelcase@^4.0.0, camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -camelcase@^6.0.0: +camelcase@^6.0.0, camelcase@^6.1.0, camelcase@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== @@ -6574,16 +6949,21 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001154: - version "1.0.30001156" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001156.tgz#75c20937b6012fe2b02ab58b30d475bf0718de97" - integrity sha512-z7qztybA2eFZTB6Z3yvaQBIoJpQtsewRD74adw2UbRWwsRq3jIPvgrQGawBMbfafekQaD21FWuXNcywtTDGGCw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001219: + version "1.0.30001228" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" + integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157: version "1.0.30001161" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001161.tgz#64f7ffe79ee780b8c92843ff34feb36cea4651e0" integrity sha512-JharrCDxOqPLBULF9/SPa6yMcBRTjZARJ6sc3cuKrPfyIk64JN6kuMINWqA99Xc8uElMFcROliwtz0n9pYej+g== +caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001154: + version "1.0.30001156" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001156.tgz#75c20937b6012fe2b02ab58b30d475bf0718de97" + integrity sha512-z7qztybA2eFZTB6Z3yvaQBIoJpQtsewRD74adw2UbRWwsRq3jIPvgrQGawBMbfafekQaD21FWuXNcywtTDGGCw== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -6676,6 +7056,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +check-types@^11.1.1: + version "11.1.2" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" + integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== + chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -6851,17 +7236,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" - integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= - dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" - clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -6945,9 +7319,9 @@ color-name@^1.0.0, color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-string@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" - integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + version "1.5.5" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" + integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -6965,6 +7339,11 @@ colorette@^1.2.1: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + colors@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" @@ -7000,7 +7379,7 @@ command-line-usage@^6.1.0: table-layout "^1.0.0" typical "^5.2.0" -commander@^2.11.0, commander@^2.19.0, commander@^2.20.0: +commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -7136,7 +7515,7 @@ config-chain@^1.1.11: ini "^1.3.4" proto-list "~1.2.1" -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== @@ -7320,6 +7699,14 @@ core-js-compat@^3.6.2, core-js-compat@^3.7.0: browserslist "^4.14.7" semver "7.0.0" +core-js-compat@^3.9.0, core-js-compat@^3.9.1: + version "3.12.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.12.1.tgz#2c302c4708505fa7072b0adb5156d26f7801a18b" + integrity sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ== + dependencies: + browserslist "^4.16.6" + semver "7.0.0" + core-js-pure@^3.0.0: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" @@ -7336,26 +7723,21 @@ core-js@^1.0.0: integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= core-js@^2.4.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.0.1, core-js@^3.0.4, core-js@^3.6.5: version "3.8.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.0.tgz#0fc2d4941cadf80538b030648bb64d230b4da0ce" integrity sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA== -core-js@^3.5.0: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== - 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" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.0.0, cosmiconfig@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -7376,6 +7758,17 @@ cosmiconfig@^6.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" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cp-file@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" @@ -7449,7 +7842,7 @@ create-react-context@0.3.0: gud "^1.0.0" warning "^4.0.3" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@6.0.5, cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -7504,6 +7897,11 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" @@ -7532,23 +7930,23 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" - integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== +css-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== dependencies: - camelcase "^5.3.1" + camelcase "^6.0.0" cssesc "^3.0.0" icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.23" + loader-utils "^2.0.0" + postcss "^7.0.32" postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.1" + postcss-modules-local-by-default "^3.0.3" + postcss-modules-scope "^2.2.0" postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.2" - schema-utils "^2.6.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.1" + semver "^7.3.2" css-loader@^3.5.3: version "3.6.0" @@ -7610,9 +8008,9 @@ css-tree@1.0.0-alpha.37: source-map "^0.6.1" css-tree@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" - integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: mdn-data "2.0.14" source-map "^0.6.1" @@ -7666,10 +8064,10 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== dependencies: css-declaration-sorter "^4.0.1" cssnano-util-raw-cache "^4.0.1" @@ -7699,7 +8097,7 @@ cssnano-preset-default@^4.0.7: postcss-ordered-values "^4.1.2" postcss-reduce-initial "^4.0.3" postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" + postcss-svgo "^4.0.3" postcss-unique-selectors "^4.0.1" cssnano-util-get-arguments@^4.0.0: @@ -7725,12 +8123,12 @@ cssnano-util-same-parent@^4.0.0: integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + version "4.1.11" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== dependencies: cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" + cssnano-preset-default "^4.0.8" is-resolvable "^1.0.0" postcss "^7.0.0" @@ -7741,22 +8139,15 @@ csso@^4.0.2: dependencies: css-tree "^1.1.2" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4, cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - 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== -cssstyle@^1.0.0, cssstyle@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.2.0: version "2.3.0" @@ -7795,7 +8186,7 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" -damerau-levenshtein@^1.0.4, damerau-levenshtein@^1.0.6: +damerau-levenshtein@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== @@ -7814,15 +8205,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.0.0, data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -7856,14 +8238,14 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: +debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -8068,20 +8450,15 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== detect-port-alt@1.1.6: version "1.1.6" @@ -8107,11 +8484,6 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" -diff-sequences@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== - diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" @@ -8235,13 +8607,6 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -8361,6 +8726,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + ejs@^3.1.2: version "3.1.5" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b" @@ -8383,6 +8753,11 @@ electron-to-chromium@^1.3.585: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.589.tgz#bd26183ed8697dde6ac19acbc16a3bf33b1f8220" integrity sha512-rQItBTFnol20HaaLm26UgSUduX7iGerwW7pEYX17MB1tI6LzFajiLV7iZ7LVcUcsN/7HrZUoCLrBauChy/IqEg== +electron-to-chromium@^1.3.723: + version "1.3.735" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.735.tgz#fa1a8660f2790662291cb2136f0e446a444cdfdc" + integrity sha512-cp7MWzC3NseUJV2FJFgaiesdrS+A8ZUjX5fLAxdRlcaPDkaPGFplX930S5vf84yqDp4LjuLdKouWuVOTwUfqHQ== + element-resize-detector@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.1.tgz#b0305194447a4863155e58f13323a0aef30851d1" @@ -8428,7 +8803,7 @@ emittery@^0.7.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= -emoji-regex@^7.0.1, emoji-regex@^7.0.2: +emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== @@ -8490,7 +8865,7 @@ endent@^2.0.1: fast-json-parse "^1.0.3" objectorarray "^1.0.4" -enhanced-resolve@^4.1.0, enhanced-resolve@^4.3.0: +enhanced-resolve@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== @@ -8552,7 +8927,7 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.1.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: version "1.17.7" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== @@ -8569,6 +8944,28 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es- string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" +es-abstract@^1.17.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" + es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: version "1.18.0-next.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" @@ -8683,7 +9080,12 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.0, escodegen@^1.12.0, escodegen@^1.14.1, escodegen@^1.9.1: +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^1.12.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== @@ -8702,13 +9104,6 @@ eslint-config-prettier@^6.15.0: dependencies: get-stdin "^6.0.0" -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: version "6.0.0" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" @@ -8716,7 +9111,7 @@ eslint-config-react-app@^6.0.0: dependencies: confusing-browser-globals "^1.0.10" -eslint-import-resolver-node@^0.3.2, eslint-import-resolver-node@^0.3.4: +eslint-import-resolver-node@^0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== @@ -8724,17 +9119,6 @@ eslint-import-resolver-node@^0.3.2, eslint-import-resolver-node@^0.3.4: debug "^2.6.9" resolve "^1.13.1" -eslint-loader@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" - integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== - dependencies: - fs-extra "^8.1.0" - loader-fs-cache "^1.0.2" - loader-utils "^1.2.3" - object-hash "^2.0.1" - schema-utils "^2.6.1" - eslint-loader@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-4.0.2.tgz#386a1e21bcb613b3cf2d252a3b708023ccfb41ec" @@ -8746,7 +9130,7 @@ eslint-loader@^4.0.2: object-hash "^2.0.3" schema-utils "^2.6.5" -eslint-module-utils@^2.4.1, eslint-module-utils@^2.6.0: +eslint-module-utils@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== @@ -8754,13 +9138,6 @@ eslint-module-utils@^2.4.1, eslint-module-utils@^2.6.0: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-flowtype@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" - integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== - dependencies: - lodash "^4.17.15" - 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" @@ -8769,24 +9146,6 @@ eslint-plugin-flowtype@^5.2.0: lodash "^4.17.15" string-natural-compare "^3.0.1" -eslint-plugin-import@2.20.1: - version "2.20.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== - dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.0" - read-pkg-up "^2.0.0" - resolve "^1.12.0" - eslint-plugin-import@^2.22.1: version "2.22.1" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" @@ -8813,22 +9172,7 @@ eslint-plugin-jest@^24.1.0: dependencies: "@typescript-eslint/experimental-utils" "^4.0.1" -eslint-plugin-jsx-a11y@6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" - integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== - dependencies: - "@babel/runtime" "^7.4.5" - aria-query "^3.0.0" - array-includes "^3.0.3" - ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" - has "^1.0.3" - jsx-ast-utils "^2.2.1" - -eslint-plugin-jsx-a11y@^6.4.1: +eslint-plugin-jsx-a11y@^6.3.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== @@ -8852,34 +9196,11 @@ eslint-plugin-prettier@^3.1.4: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-react-hooks@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" - integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== - 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@7.19.0: - version "7.19.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" - integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== - dependencies: - array-includes "^3.1.1" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.15.1" - semver "^6.3.0" - string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" - 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" @@ -8897,6 +9218,13 @@ eslint-plugin-react@^7.21.5: resolve "^1.18.1" string.prototype.matchall "^4.0.2" +eslint-plugin-testing-library@^3.9.2: + version "3.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz#609ec2b0369da7cf2e6d9edff5da153cc31d87bd" + integrity sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA== + dependencies: + "@typescript-eslint/experimental-utils" "^3.10.1" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -8913,13 +9241,6 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -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" @@ -8937,46 +9258,60 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint-webpack-plugin@^2.5.2: + version "2.5.4" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz#473b84932f1a8e2c2b8e66a402d0497bf440b986" + integrity sha512-7rYh0m76KyKSDE+B+2PUQrlNS4HJ51t3WKpkJg6vo2jFMbEPTG99cBV0Dm7LXSHucN4WGCG65wQcRiTFrj7iWw== dependencies: - "@babel/code-frame" "^7.0.0" + "@types/eslint" "^7.2.6" + arrify "^2.0.1" + jest-worker "^26.6.2" + micromatch "^4.0.2" + normalize-path "^3.0.0" + schema-utils "^3.0.0" + +eslint@^7.11.0: + version "7.27.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.27.0.tgz#665a1506d8f95655c9274d84bd78f7166b07e9c7" + integrity sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.1" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" 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" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^12.1.0" + globals "^13.6.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" + levn "^0.4.1" + lodash.merge "^4.6.2" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" 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" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -9023,15 +9358,6 @@ eslint@^7.13.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -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" @@ -9041,18 +9367,34 @@ espree@^7.3.0: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.3.0" +espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" 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.2.0: 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== dependencies: estraverse "^5.1.0" +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -9070,6 +9412,16 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -9096,9 +9448,9 @@ events@^3.0.0: integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + version "1.1.0" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" + integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== dependencies: original "^1.0.0" @@ -9202,19 +9554,7 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== - dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" - -expect@^26.6.2: +expect@^26.6.0, expect@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== @@ -9327,7 +9667,7 @@ fast-deep-equal@^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: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -9366,7 +9706,7 @@ fast-json-parse@^1.0.3: resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -9397,14 +9737,7 @@ fault@^1.0.0: dependencies: format "^0.2.0" -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: +faye-websocket@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== @@ -9457,13 +9790,20 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" + flat-cache "^3.0.4" + +file-loader@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" + integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" file-loader@^6.0.0: version "6.2.0" @@ -9534,15 +9874,6 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -9618,11 +9949,24 @@ flat-cache@^2.0.1: 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" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + 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.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + flatten@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" @@ -9637,27 +9981,15 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" - integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== - -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + version "1.14.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.3: - 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" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -9749,15 +10081,6 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -9786,6 +10109,16 @@ fs-extra@^9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" +fs-extra@^9.0.1: + 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" @@ -9815,11 +10148,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - fsevents@^1.2.7: version "1.2.13" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" @@ -9833,6 +10161,11 @@ fsevents@^2.1.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.2.1.tgz#1fb02ded2036a8ac288d507a65962bd87b97628d" integrity sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA== +fsevents@^2.1.3: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" @@ -9887,7 +10220,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== @@ -9911,6 +10244,15 @@ get-intrinsic@^1.0.0, get-intrinsic@^1.0.1: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -10076,7 +10418,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -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: +glob@^7.0.0, 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== @@ -10088,6 +10430,18 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.0.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-modules@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -10124,6 +10478,13 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globals@^13.6.0: + version "13.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" + integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== + dependencies: + type-fest "^0.20.2" + globalthis@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.1.tgz#40116f5d9c071f9e8fb0037654df1ab3a83b7ef9" @@ -10264,9 +10625,9 @@ hard-rejection@^2.1.0: integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== harmony-reflect@^1.4.6: - version "1.6.1" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" - integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + version "1.6.2" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== has-ansi@^2.0.0: version "2.0.0" @@ -10275,6 +10636,11 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -10297,6 +10663,11 @@ has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -10456,6 +10827,11 @@ hoist-non-react-statics@^3.3.0: dependencies: react-is "^16.7.0" +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" @@ -10481,18 +10857,6 @@ hsla-regex@^1.0.0: resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -10500,11 +10864,16 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-entities@^1.2.0, html-entities@^1.2.1, html-entities@^1.3.1: +html-entities@^1.2.0, html-entities@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== +html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -10533,19 +10902,7 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@4.0.0-beta.11: - version "4.0.0-beta.11" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" - integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== - dependencies: - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" - -html-webpack-plugin@^4.2.1: +html-webpack-plugin@4.5.0, html-webpack-plugin@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== @@ -10620,9 +10977,9 @@ http-errors@~1.7.2: toidentifier "1.0.0" http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== http-proxy-agent@^2.1.0: version "2.1.0" @@ -10763,6 +11120,11 @@ immer@7.0.9: resolved "https://registry.yarnpkg.com/immer/-/immer-7.0.9.tgz#28e7552c21d39dd76feccd2b800b7bc86ee4a62e" integrity sha512-Vs/gxoM4DqNAYR7pugIxi0Xc8XAun/uy7AQu4fLLqaTBHxjOP9pJ266Q9MWA/ly4z6rAFZbvViOtihxUZ7O28A== +immer@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" + integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== + import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -10980,7 +11342,7 @@ interpret@^2.0.0, interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: +invariant@^2.2.3, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -11054,6 +11416,11 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -11068,7 +11435,14 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.0.2, is-buffer@^1.1.5: +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" + +is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -11083,6 +11457,11 @@ is-callable@^1.1.4, is-callable@^1.2.2: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== +is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -11116,6 +11495,13 @@ is-core-module@^2.1.0: dependencies: has "^1.0.3" +is-core-module@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -11261,11 +11647,26 @@ is-map@^2.0.1: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + is-negative-zero@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -11327,7 +11728,7 @@ is-plain-object@3.0.1: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -11344,7 +11745,15 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= -is-regex@^1.0.4, is-regex@^1.1.1: +is-regex@^1.0.4, is-regex@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.2" + +is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== @@ -11393,13 +11802,6 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -11501,29 +11903,11 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" @@ -11534,15 +11918,6 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== - dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" - istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -11552,17 +11927,6 @@ istanbul-lib-report@^3.0.0: make-dir "^3.0.0" supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" - source-map "^0.6.1" - istanbul-lib-source-maps@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" @@ -11572,13 +11936,6 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== - dependencies: - html-escaper "^2.0.0" - istanbul-reports@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" @@ -11610,15 +11967,6 @@ jake@^10.6.1: filelist "^1.0.1" minimatch "^3.0.4" -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== - dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.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" @@ -11628,26 +11976,34 @@ jest-changed-files@^26.6.2: execa "^4.0.0" throat "^5.0.0" -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== +jest-circus@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705" + integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - exit "^0.1.2" - import-local "^2.0.0" - is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.0" + "@jest/test-result" "^26.6.0" + "@jest/types" "^26.6.0" + "@types/babel__traverse" "^7.0.4" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^26.6.0" + is-generator-fn "^2.0.0" + jest-each "^26.6.0" + jest-matcher-utils "^26.6.0" + jest-message-util "^26.6.0" + jest-runner "^26.6.0" + jest-runtime "^26.6.0" + jest-snapshot "^26.6.0" + jest-util "^26.6.0" + pretty-format "^26.6.0" + stack-utils "^2.0.2" + throat "^5.0.0" -jest-cli@^26.6.3: +jest-cli@^26.6.0, jest-cli@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== @@ -11666,29 +12022,6 @@ jest-cli@^26.6.3: prompts "^2.0.1" yargs "^15.4.1" -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" - jest-config@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" @@ -11713,16 +12046,6 @@ jest-config@^26.6.3: micromatch "^4.0.2" pretty-format "^26.6.2" -jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.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" @@ -11733,13 +12056,6 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-docblock@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" - integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== - dependencies: - detect-newline "^2.1.0" - jest-docblock@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" @@ -11747,18 +12063,7 @@ jest-docblock@^26.0.0: dependencies: detect-newline "^3.0.0" -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== - dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - -jest-each@^26.6.2: +jest-each@^26.6.0, jest-each@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== @@ -11769,30 +12074,6 @@ jest-each@^26.6.2: jest-util "^26.6.2" pretty-format "^26.6.2" -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== - dependencies: - "@jest/environment" "^24.3.0" - "@jest/fake-timers" "^24.3.0" - "@jest/types" "^24.3.0" - jest-mock "^24.0.0" - jest-util "^24.0.0" - jsdom "^14.1.0" - -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.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" @@ -11806,17 +12087,6 @@ jest-environment-jsdom@^26.6.2: jest-util "^26.6.2" jsdom "^16.4.0" -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.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" @@ -11829,35 +12099,11 @@ jest-environment-node@^26.6.2: jest-mock "^26.6.2" jest-util "^26.6.2" -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== - jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== - dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - 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" @@ -11879,28 +12125,6 @@ jest-haste-map@^26.6.2: optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^24.9.0" - is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.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" @@ -11925,14 +12149,6 @@ jest-jasmine2@^26.6.3: pretty-format "^26.6.2" throat "^5.0.0" -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== - dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.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" @@ -11941,17 +12157,7 @@ jest-leak-detector@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== - dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-matcher-utils@^26.6.2: +jest-matcher-utils@^26.6.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" integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== @@ -11961,21 +12167,7 @@ jest-matcher-utils@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - -jest-message-util@^26.6.2: +jest-message-util@^26.6.0, jest-message-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== @@ -11990,13 +12182,6 @@ jest-message-util@^26.6.2: slash "^3.0.0" stack-utils "^2.0.2" -jest-mock@^24.0.0, jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== - dependencies: - "@jest/types" "^24.9.0" - jest-mock@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" @@ -12005,30 +12190,16 @@ 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== -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: - version "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@^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@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== - dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" - 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" @@ -12038,16 +12209,19 @@ jest-resolve-dependencies@^26.6.3: jest-regex-util "^26.0.0" jest-snapshot "^26.6.2" -jest-resolve@24.9.0, jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== +jest-resolve@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1" + integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== dependencies: - "@jest/types" "^24.9.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + "@jest/types" "^26.6.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.0" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" jest-resolve@26.6.2, jest-resolve@^26.6.2: version "26.6.2" @@ -12063,32 +12237,7 @@ jest-resolve@26.6.2, jest-resolve@^26.6.2: resolve "^1.18.1" slash "^3.0.0" -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runner@^26.6.3: +jest-runner@^26.6.0, jest-runner@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== @@ -12114,36 +12263,7 @@ jest-runner@^26.6.3: source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" - -jest-runtime@^26.6.3: +jest-runtime@^26.6.0, jest-runtime@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== @@ -12176,11 +12296,6 @@ jest-runtime@^26.6.3: strip-bom "^4.0.0" yargs "^15.4.1" -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - jest-serializer@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" @@ -12189,26 +12304,7 @@ jest-serializer@^26.6.2: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" - -jest-snapshot@^26.6.2: +jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== @@ -12230,25 +12326,7 @@ jest-snapshot@^26.6.2: pretty-format "^26.6.2" semver "^7.3.2" -jest-util@^24.0.0, jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== - dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - -jest-util@^26.1.0, jest-util@^26.6.2: +jest-util@^26.1.0, jest-util@^26.6.0, jest-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== @@ -12260,18 +12338,6 @@ jest-util@^26.1.0, jest-util@^26.6.2: is-ci "^2.0.0" micromatch "^4.0.2" -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== - dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" - leven "^3.1.0" - pretty-format "^24.9.0" - jest-validate@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" @@ -12284,19 +12350,6 @@ jest-validate@^26.6.2: leven "^3.1.0" pretty-format "^26.6.2" -jest-watch-typeahead@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" - integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.1" - jest-regex-util "^24.9.0" - jest-watcher "^24.3.0" - slash "^3.0.0" - string-length "^3.1.0" - strip-ansi "^5.0.0" - 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" @@ -12310,19 +12363,6 @@ jest-watch-typeahead@0.6.1: string-length "^4.0.1" strip-ansi "^6.0.0" -jest-watcher@^24.3.0, jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== - dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.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" @@ -12336,7 +12376,7 @@ jest-watcher@^26.3.0, jest-watcher@^26.6.2: jest-util "^26.6.2" string-length "^4.0.1" -jest-worker@^24.6.0, jest-worker@^24.9.0: +jest-worker@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== @@ -12344,15 +12384,7 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest-worker@^25.4.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.2.1, jest-worker@^26.6.2: +jest-worker@^26.2.1, jest-worker@^26.5.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== @@ -12361,13 +12393,14 @@ jest-worker@^26.2.1, jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== +jest@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25" + integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" + "@jest/core" "^26.6.0" + import-local "^3.0.2" + jest-cli "^26.6.0" jest@26.6.3: version "26.6.3" @@ -12406,70 +12439,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.0.0" - -jsdom@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" - integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== - dependencies: - abab "^2.0.0" - acorn "^6.0.4" - acorn-globals "^4.3.0" - array-equal "^1.0.0" - cssom "^0.3.4" - cssstyle "^1.1.1" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.0" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.1.3" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.5" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^2.5.0" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^6.1.2" - xml-name-validator "^3.0.0" - jsdom@^16.4.0: version "16.4.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" @@ -12532,6 +12501,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -12542,19 +12516,12 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json3@^3.3.2: +json3@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== @@ -12596,11 +12563,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -12616,14 +12578,6 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: - version "2.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" - integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== - dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" - "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz#642f1d7b88aa6d7eb9d8f2210e166478444fa891" @@ -12649,13 +12603,6 @@ killable@^1.0.1: resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -12692,6 +12639,11 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +klona@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" + integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + language-subtag-registry@~0.3.2: version "0.3.21" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" @@ -12712,16 +12664,6 @@ last-call-webpack-plugin@^3.0.0: lodash "^4.17.5" webpack-sources "^1.1.0" -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - lazy-universal-dotenv@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38" @@ -12733,11 +12675,6 @@ lazy-universal-dotenv@^3.0.1: dotenv "^8.0.0" dotenv-expand "^5.1.0" -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - lerna@^3.20.2: version "3.22.1" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62" @@ -12767,14 +12704,15 @@ 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== -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - leven "^3.1.0" + prelude-ls "^1.2.1" + type-check "~0.4.0" -levn@^0.3.0, 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= @@ -12782,14 +12720,6 @@ levn@^0.3.0, levn@~0.3.0: 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" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -12837,14 +12767,6 @@ load-json-file@^5.3.0: strip-bom "^3.0.0" type-fest "^0.3.0" -loader-fs-cache@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" - integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "^0.5.1" - loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -12915,6 +12837,11 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -12930,6 +12857,11 @@ lodash.memoize@4.x, 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: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" @@ -12940,7 +12872,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.0.2, lodash.template@^4.4.0, lodash.template@^4.5.0: +lodash.template@^4.0.2, lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== @@ -12955,12 +12887,22 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.0.1, 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.5, lodash@^4.2.1: +"lodash@>=3.5 <5", lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -12973,9 +12915,9 @@ log-symbols@^2.1.0: chalk "^2.0.1" loglevel@^1.6.8: - version "1.7.0" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" - integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== loglevelnext@^1.0.1: version "1.0.5" @@ -13052,6 +12994,13 @@ macos-release@^2.2.0: resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac" integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg== +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -13103,11 +13052,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -13298,15 +13242,6 @@ meow@^7.0.0: type-fest "^0.13.1" yargs-parser "^18.1.3" -merge-deep@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" - integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== - dependencies: - arr-union "^3.1.0" - clone-deep "^0.2.4" - kind-of "^3.0.2" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -13372,6 +13307,11 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.47.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== + "mime-db@>= 1.43.0 < 2": version "1.45.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" @@ -13389,13 +13329,20 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: mime-db "1.44.0" +mime-types@~2.1.17: + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== + dependencies: + mime-db "1.47.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -13438,10 +13385,10 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-css-extract-plugin@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" - integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== +mini-css-extract-plugin@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" + integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== dependencies: loader-utils "^1.1.0" normalize-url "1.9.1" @@ -13562,14 +13509,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - mkdirp-promise@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" @@ -13668,6 +13607,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -13702,7 +13646,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -13830,17 +13774,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@^5.4.2: - version "5.4.3" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" - integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - node-notifier@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" @@ -13863,6 +13796,11 @@ node-releases@^1.1.65: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.65.tgz#52d9579176bd60f23eba05c4438583f341944b81" integrity sha512-YpzJOe2WFIW0V4ZkJQd/DGR/zdVwc/pI4Nl1CZrBO19FdRcSTmsuhdttw9rsTzzJLrNcSloLiBbEYx1C4f6gpA== +node-releases@^1.1.71: + version "1.1.72" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" + integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== + nopt@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" @@ -14013,7 +13951,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7, nwsapi@^2.1.3, nwsapi@^2.2.0: +nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== @@ -14037,7 +13975,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^2.0.1, object-hash@^2.0.3: +object-hash@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== @@ -14047,12 +13985,17 @@ object-inspect@^1.8.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.9.0: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + object-is@^1.0.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" - integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" object-keys@^1.0.12, object-keys@^1.1.1: @@ -14067,7 +14010,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.1: +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -14087,7 +14030,7 @@ object.entries@^1.1.0: es-abstract "^1.18.0-next.1" has "^1.0.3" -object.entries@^1.1.1, object.entries@^1.1.2: +object.entries@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== @@ -14215,15 +14158,15 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimize-css-assets-webpack-plugin@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" - integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== +optimize-css-assets-webpack-plugin@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== dependencies: 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== @@ -14302,13 +14245,6 @@ p-cancelable@^2.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" - p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -14340,7 +14276,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.3.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -14549,16 +14485,6 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - parse5@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" @@ -14698,6 +14624,11 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.2.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -14732,13 +14663,6 @@ pirates@^4.0.0, pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -14767,11 +14691,6 @@ pkg-up@3.1.0, pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - pnp-webpack-plugin@1.6.4, pnp-webpack-plugin@^1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" @@ -14960,14 +14879,7 @@ postcss-env-function@^2.0.2: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-flexbugs-fixes@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" - integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== - dependencies: - postcss "^7.0.0" - -postcss-flexbugs-fixes@^4.1.0: +postcss-flexbugs-fixes@4.2.1, postcss-flexbugs-fixes@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== @@ -15011,11 +14923,10 @@ postcss-image-set-function@^3.0.1: postcss-values-parser "^2.0.0" postcss-initial@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" - integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== dependencies: - lodash.template "^4.5.0" postcss "^7.0.2" postcss-lab-function@^2.0.1: @@ -15128,7 +15039,7 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@^3.0.2: +postcss-modules-local-by-default@^3.0.2, postcss-modules-local-by-default@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== @@ -15138,7 +15049,7 @@ postcss-modules-local-by-default@^3.0.2: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^2.1.1, postcss-modules-scope@^2.2.0: +postcss-modules-scope@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== @@ -15362,12 +15273,12 @@ postcss-replace-overflow-wrap@^3.0.0: dependencies: postcss "^7.0.2" -postcss-safe-parser@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" - integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== +postcss-safe-parser@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" + integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== dependencies: - postcss "^7.0.0" + postcss "^8.1.0" postcss-selector-matches@^4.0.0: version "4.0.0" @@ -15378,9 +15289,9 @@ postcss-selector-matches@^4.0.0: postcss "^7.0.2" postcss-selector-not@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" - integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== dependencies: balanced-match "^1.0.0" postcss "^7.0.2" @@ -15413,12 +15324,11 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: uniq "^1.0.1" util-deprecate "^1.0.2" -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== dependencies: - is-svg "^3.0.0" postcss "^7.0.0" postcss-value-parser "^3.0.0" svgo "^1.0.0" @@ -15460,7 +15370,7 @@ postcss@7.0.21: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== @@ -15469,6 +15379,15 @@ postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, po source-map "^0.6.1" supports-color "^6.1.0" +postcss@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f" + integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map-js "^0.6.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -15501,10 +15420,10 @@ prettier@~2.0.5: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== -pretty-bytes@^5.1.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" - integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== +pretty-bytes@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== pretty-error@^2.1.1: version "2.1.2" @@ -15514,17 +15433,7 @@ pretty-error@^2.1.1: lodash "^4.17.20" renderkid "^2.0.4" -pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-format@^26.0.0, pretty-format@^26.6.2: +pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== @@ -15616,13 +15525,21 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -promise@^8.0.3, promise@^8.1.0: +promise@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== dependencies: asap "~2.0.6" +prompts@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + prompts@^2.0.1: version "2.3.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" @@ -15869,18 +15786,6 @@ rc@^1.0.1, rc@^1.1.6: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-app-polyfill@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" - integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== - dependencies: - core-js "^3.5.0" - object-assign "^4.1.1" - promise "^8.0.3" - raf "^3.4.1" - regenerator-runtime "^0.13.3" - whatwg-fetch "^3.0.0" - react-app-polyfill@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" @@ -15906,7 +15811,7 @@ react-color@^2.17.0: reactcss "^1.2.0" tinycolor2 "^1.4.1" -react-dev-utils@^10.0.0, react-dev-utils@^10.2.1: +react-dev-utils@^10.0.0: version "10.2.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== @@ -15966,6 +15871,36 @@ react-dev-utils@^11.0.0: strip-ansi "6.0.0" text-table "0.2.0" +react-dev-utils@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" + integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== + dependencies: + "@babel/code-frame" "7.10.4" + address "1.1.2" + browserslist "4.14.2" + chalk "2.4.2" + cross-spawn "7.0.3" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.1.0" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "4.1.6" + global-modules "2.0.0" + globby "11.0.1" + gzip-size "5.1.1" + immer "8.0.1" + is-root "2.1.0" + loader-utils "2.0.0" + open "^7.0.2" + pkg-up "3.1.0" + prompts "2.4.0" + react-error-overlay "^6.0.9" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + react-docgen-typescript-loader@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/react-docgen-typescript-loader/-/react-docgen-typescript-loader-3.7.2.tgz#45cb2305652c0602767242a8700ad1ebd66bbbbd" @@ -16056,6 +15991,11 @@ react-error-overlay@^6.0.7, react-error-overlay@^6.0.8: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.8.tgz#474ed11d04fc6bda3af643447d85e9127ed6b5de" integrity sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw== +react-error-overlay@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + react-fast-compare@^3.0.1, react-fast-compare@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" @@ -16088,7 +16028,7 @@ react-inspector@^5.0.1: is-dom "^1.0.0" prop-types "^15.0.0" -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: +react-is@^16.12.0, 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== @@ -16125,65 +16065,71 @@ react-refresh@^0.8.3: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== -react-scripts@3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.4.tgz#eef024ed5c566374005e3f509877350ba99d08a7" - integrity sha512-7J7GZyF/QvZkKAZLneiOIhHozvOMHey7hO9cdO9u68jjhGZlI8hDdOm6UyuHofn6Ajc9Uji5I6Psm/nKNuWdyw== - dependencies: - "@babel/core" "7.9.0" - "@svgr/webpack" "4.3.3" - "@typescript-eslint/eslint-plugin" "^2.10.0" - "@typescript-eslint/parser" "^2.10.0" - babel-eslint "10.1.0" - babel-jest "^24.9.0" +react-scripts@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345" + integrity sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A== + dependencies: + "@babel/core" "7.12.3" + "@pmmmwh/react-refresh-webpack-plugin" "0.4.3" + "@svgr/webpack" "5.5.0" + "@typescript-eslint/eslint-plugin" "^4.5.0" + "@typescript-eslint/parser" "^4.5.0" + babel-eslint "^10.1.0" + babel-jest "^26.6.0" babel-loader "8.1.0" - babel-plugin-named-asset-import "^0.3.6" - babel-preset-react-app "^9.1.2" - camelcase "^5.3.1" + babel-plugin-named-asset-import "^0.3.7" + babel-preset-react-app "^10.0.0" + bfj "^7.0.2" + camelcase "^6.1.0" case-sensitive-paths-webpack-plugin "2.3.0" - css-loader "3.4.2" + css-loader "4.3.0" dotenv "8.2.0" dotenv-expand "5.1.0" - eslint "^6.6.0" - eslint-config-react-app "^5.2.1" - eslint-loader "3.0.3" - eslint-plugin-flowtype "4.6.0" - eslint-plugin-import "2.20.1" - eslint-plugin-jsx-a11y "6.2.3" - eslint-plugin-react "7.19.0" - eslint-plugin-react-hooks "^1.6.1" - file-loader "4.3.0" - fs-extra "^8.1.0" - html-webpack-plugin "4.0.0-beta.11" + eslint "^7.11.0" + eslint-config-react-app "^6.0.0" + eslint-plugin-flowtype "^5.2.0" + eslint-plugin-import "^2.22.1" + eslint-plugin-jest "^24.1.0" + eslint-plugin-jsx-a11y "^6.3.1" + eslint-plugin-react "^7.21.5" + eslint-plugin-react-hooks "^4.2.0" + eslint-plugin-testing-library "^3.9.2" + eslint-webpack-plugin "^2.5.2" + file-loader "6.1.1" + fs-extra "^9.0.1" + html-webpack-plugin "4.5.0" identity-obj-proxy "3.0.0" - jest "24.9.0" - jest-environment-jsdom-fourteen "1.0.1" - jest-resolve "24.9.0" - jest-watch-typeahead "0.4.2" - mini-css-extract-plugin "0.9.0" - optimize-css-assets-webpack-plugin "5.0.3" + jest "26.6.0" + jest-circus "26.6.0" + jest-resolve "26.6.0" + jest-watch-typeahead "0.6.1" + mini-css-extract-plugin "0.11.3" + optimize-css-assets-webpack-plugin "5.0.4" pnp-webpack-plugin "1.6.4" - postcss-flexbugs-fixes "4.1.0" + postcss-flexbugs-fixes "4.2.1" postcss-loader "3.0.0" postcss-normalize "8.0.1" postcss-preset-env "6.7.0" - postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.6" - react-dev-utils "^10.2.1" - resolve "1.15.0" - resolve-url-loader "3.1.2" - sass-loader "8.0.2" - semver "6.3.0" - style-loader "0.23.1" - terser-webpack-plugin "2.3.8" - ts-pnp "1.1.6" - url-loader "2.3.0" - webpack "4.42.0" - webpack-dev-server "3.11.0" + postcss-safe-parser "5.0.2" + prompts "2.4.0" + react-app-polyfill "^2.0.0" + react-dev-utils "^11.0.3" + react-refresh "^0.8.3" + resolve "1.18.1" + resolve-url-loader "^3.1.2" + sass-loader "^10.0.5" + semver "7.3.2" + style-loader "1.3.0" + terser-webpack-plugin "4.2.3" + ts-pnp "1.2.0" + url-loader "4.1.1" + webpack "4.44.2" + webpack-dev-server "3.11.1" webpack-manifest-plugin "2.2.0" - workbox-webpack-plugin "4.3.1" + workbox-webpack-plugin "5.1.4" optionalDependencies: - fsevents "2.1.2" + fsevents "^2.1.3" react-sizeme@^2.6.7: version "2.6.12" @@ -16281,14 +16227,6 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -16399,13 +16337,6 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - recast@^0.14.7: version "0.14.7" resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d" @@ -16492,7 +16423,7 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -16517,7 +16448,15 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: +regexp.prototype.flags@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexp.prototype.flags@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== @@ -16525,11 +16464,6 @@ regexp.prototype.flags@^1.2.0, 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" @@ -16692,7 +16626,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.5, request-promise-native@^1.0.8: +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== @@ -16701,7 +16635,7 @@ request-promise-native@^1.0.5, request-promise-native@^1.0.8: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.0, request@^2.88.2: +request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -16732,6 +16666,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -16781,10 +16720,10 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url-loader@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" - integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== +resolve-url-loader@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.3.tgz#49ec68340f67d8d2ab6b401948d5def3ab2d0367" + integrity sha512-WbDSNFiKPPLem1ln+EVTE+bFUBdTTytfQZWbmghroaFNFaAVmGq0Saqw6F/306CwgPXsGwXVxbODE+3xAo/YbA== dependencies: adjust-sourcemap-loader "3.0.0" camelcase "5.3.1" @@ -16802,16 +16741,12 @@ 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.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" - integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== +resolve@1.18.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.9.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" + integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== dependencies: + is-core-module "^2.0.0" path-parse "^1.0.6" resolve@^1.1.6, resolve@^1.12.0, resolve@^1.3.2: @@ -16829,12 +16764,12 @@ resolve@^1.10.0, resolve@^1.13.1, resolve@^1.8.1: dependencies: path-parse "^1.0.6" -resolve@^1.15.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.9.0: - version "1.18.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== +resolve@^1.14.2: + 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.0.0" + is-core-module "^2.2.0" path-parse "^1.0.6" responselike@^2.0.0: @@ -16910,7 +16845,7 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -16932,6 +16867,41 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-terser@^5.3.1: + 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-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.31.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" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -17008,29 +16978,22 @@ sanitize.css@^10.0.0: resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== -sass-loader@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" - integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== +sass-loader@^10.0.5: + version "10.2.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.0.tgz#3d64c1590f911013b3fa48a0b22a83d5e1494716" + integrity sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw== dependencies: - clone-deep "^4.0.1" - loader-utils "^1.2.3" - neo-async "^2.6.1" - schema-utils "^2.6.1" - semver "^6.3.0" + klona "^2.0.4" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" -sax@^1.2.4, sax@~1.2.4: +sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - saxes@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" @@ -17055,7 +17018,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0, schema-utils@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -17083,10 +17046,10 @@ select@^1.1.2: resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= -selfsigned@^1.10.7: - version "1.10.8" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" - integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== +selfsigned@^1.10.8: + version "1.10.11" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" + integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== dependencies: node-forge "^0.10.0" @@ -17095,21 +17058,21 @@ selfsigned@^1.10.7: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.x, semver@^7.2.1, semver@^7.3.2: +semver@7.3.2, semver@7.x, semver@^7.2.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +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== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -17136,6 +17099,13 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serve-favicon@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" @@ -17237,16 +17207,6 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -17322,7 +17282,7 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^1.0.4: +sisteransi@^1.0.4, sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -17351,6 +17311,15 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -17391,26 +17360,26 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== +sockjs-client@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6" + integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ== dependencies: - debug "^3.2.5" + debug "^3.2.6" eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.5.1" -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== dependencies: - faye-websocket "^0.10.0" + faye-websocket "^0.11.3" uuid "^3.4.0" - websocket-driver "0.6.5" + websocket-driver "^0.7.4" socks-proxy-agent@^4.0.0: version "4.0.2" @@ -17447,6 +17416,11 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -17466,7 +17440,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.6, source-map-support@~0.5.12: +source-map-support@^0.5.16, source-map-support@^0.5.17, 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== @@ -17489,11 +17463,16 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -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== +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" @@ -17601,14 +17580,6 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - ssri@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" @@ -17621,11 +17592,6 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== - stack-utils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" @@ -17703,22 +17669,6 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - string-length@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" @@ -17818,6 +17768,14 @@ string.prototype.trimend@^1.0.1: call-bind "^1.0.0" define-properties "^1.1.3" +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string.prototype.trimstart@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" @@ -17826,6 +17784,14 @@ string.prototype.trimstart@^1.0.1: call-bind "^1.0.0" define-properties "^1.1.3" +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -17931,7 +17897,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -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== @@ -17950,15 +17916,7 @@ strong-log-transformer@^2.0.0: minimist "^1.2.0" through "^2.3.4" -style-loader@0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - -style-loader@^1.2.1: +style-loader@1.3.0, style-loader@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== @@ -18016,7 +17974,7 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -svg-parser@^2.0.0: +svg-parser@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== @@ -18040,7 +17998,7 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-tree@^3.2.2, symbol-tree@^3.2.4: +symbol-tree@^3.2.4: version "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== @@ -18075,6 +18033,18 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -18143,6 +18113,15 @@ temp@^0.9.0: dependencies: rimraf "~2.6.2" +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -18163,19 +18142,19 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" - integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== +terser-webpack-plugin@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== dependencies: - cacache "^13.0.1" + cacache "^15.0.5" find-cache-dir "^3.3.1" - jest-worker "^25.4.0" - p-limit "^2.3.0" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" source-map "^0.6.1" - terser "^4.6.12" + terser "^5.3.4" webpack-sources "^1.4.3" terser-webpack-plugin@^1.4.3: @@ -18208,7 +18187,7 @@ terser-webpack-plugin@^3.0.0: terser "^4.8.0" webpack-sources "^1.4.3" -terser@^4.1.2, terser@^4.6.12, terser@^4.6.3, terser@^4.8.0: +terser@^4.1.2, terser@^4.6.2, terser@^4.6.3, terser@^4.8.0: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -18217,15 +18196,14 @@ terser@^4.1.2, terser@^4.6.12, terser@^4.6.3, terser@^4.8.0: source-map "~0.6.1" source-map-support "~0.5.12" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== +terser@^5.3.4: + version "5.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" test-exclude@^6.0.0: version "6.0.0" @@ -18260,11 +18238,6 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= - throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" @@ -18387,7 +18360,7 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -18458,6 +18431,11 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + ts-dedent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.0.0.tgz#47c5eb23d9096f3237cc413bc82d387d36dbe690" @@ -18497,12 +18475,7 @@ ts-node@^9.0.0: source-map-support "^0.5.17" yn "3.1.1" -ts-pnp@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" - integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== - -ts-pnp@^1.1.6: +ts-pnp@1.2.0, ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== @@ -18585,7 +18558,12 @@ type-fest@^0.13.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== -type-fest@^0.3.0: +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.3.0, type-fest@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== @@ -18660,6 +18638,16 @@ umask@^1.1.0: resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= +unbox-primitive@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + unfetch@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -18742,6 +18730,13 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + unist-builder@2.0.3, unist-builder@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" @@ -18845,7 +18840,7 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1, upath@^1.2.0: +upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -18870,16 +18865,7 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== - dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" - -url-loader@^4.0.0: +url-loader@4.1.1, url-loader@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== @@ -18888,10 +18874,10 @@ url-loader@^4.0.0: mime-types "^2.1.27" schema-utils "^3.0.0" -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== +url-parse@^1.4.3, url-parse@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" @@ -18948,7 +18934,7 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== @@ -19074,22 +19060,13 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - w3c-xmlserializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" @@ -19111,24 +19088,13 @@ warning@^4.0.2, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack-chokidar2@^2.0.0, watchpack-chokidar2@^2.0.1: +watchpack-chokidar2@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== dependencies: chokidar "^2.1.8" -watchpack@^1.6.0: - version "1.7.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" - integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.0" - watchpack@^1.7.4: version "1.7.5" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" @@ -19193,7 +19159,7 @@ webpack-cli@^4.2.0: v8-compile-cache "^2.2.0" webpack-merge "^4.2.2" -webpack-dev-middleware@^3.7.0, webpack-dev-middleware@^3.7.2: +webpack-dev-middleware@^3.7.0: version "3.7.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== @@ -19204,10 +19170,21 @@ webpack-dev-middleware@^3.7.0, webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.1: + version "3.11.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" + integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -19229,11 +19206,11 @@ webpack-dev-server@3.11.0: p-retry "^3.0.1" portfinder "^1.0.26" schema-utils "^1.0.0" - selfsigned "^1.10.7" + selfsigned "^1.10.8" semver "^6.3.0" serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" + sockjs "^0.3.21" + sockjs-client "^1.5.0" spdy "^4.0.2" strip-ansi "^3.0.1" supports-color "^6.1.0" @@ -19293,7 +19270,7 @@ webpack-merge@^4.2.2: dependencies: lodash "^4.17.15" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -19308,36 +19285,7 @@ webpack-virtual-modules@^0.2.2: dependencies: debug "^3.0.0" -webpack@4.42.0: - version "4.42.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" - integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.1" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" - webpack-sources "^1.4.1" - -webpack@^4.44.2: +webpack@4.44.2, webpack@^4.44.2: version "4.44.2" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== @@ -19366,14 +19314,7 @@ webpack@^4.44.2: watchpack "^1.7.4" webpack-sources "^1.4.1" -websocket-driver@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= - dependencies: - websocket-extensions ">=0.1.1" - -websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -19387,14 +19328,14 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: +whatwg-fetch@>=0.10.0: version "3.4.1" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== @@ -19404,20 +19345,11 @@ whatwg-fetch@^3.4.1: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868" integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" @@ -19436,12 +19368,23 @@ whatwg-url@^8.0.0: tr46 "^2.0.2" webidl-conversions "^6.1.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -19501,140 +19444,158 @@ wordwrapjs@^4.0.0: reduce-flatten "^2.0.0" typical "^5.0.0" -workbox-background-sync@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" - integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== +workbox-background-sync@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" + integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-broadcast-update@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" - integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== +workbox-broadcast-update@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" + integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-build@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" - integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== +workbox-build@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" + integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== dependencies: - "@babel/runtime" "^7.3.4" - "@hapi/joi" "^15.0.0" + "@babel/core" "^7.8.4" + "@babel/preset-env" "^7.8.4" + "@babel/runtime" "^7.8.4" + "@hapi/joi" "^15.1.0" + "@rollup/plugin-node-resolve" "^7.1.1" + "@rollup/plugin-replace" "^2.3.1" + "@surma/rollup-plugin-off-main-thread" "^1.1.1" common-tags "^1.8.0" - fs-extra "^4.0.2" - glob "^7.1.3" - lodash.template "^4.4.0" - pretty-bytes "^5.1.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^8.1.0" + glob "^7.1.6" + lodash.template "^4.5.0" + pretty-bytes "^5.3.0" + rollup "^1.31.1" + rollup-plugin-babel "^4.3.3" + rollup-plugin-terser "^5.3.1" + source-map "^0.7.3" + source-map-url "^0.4.0" stringify-object "^3.3.0" strip-comments "^1.0.2" - workbox-background-sync "^4.3.1" - workbox-broadcast-update "^4.3.1" - workbox-cacheable-response "^4.3.1" - workbox-core "^4.3.1" - workbox-expiration "^4.3.1" - workbox-google-analytics "^4.3.1" - workbox-navigation-preload "^4.3.1" - workbox-precaching "^4.3.1" - workbox-range-requests "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - workbox-streams "^4.3.1" - workbox-sw "^4.3.1" - workbox-window "^4.3.1" - -workbox-cacheable-response@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" - integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== - dependencies: - workbox-core "^4.3.1" - -workbox-core@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" - integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== - -workbox-expiration@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" - integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== - dependencies: - workbox-core "^4.3.1" - -workbox-google-analytics@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" - integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== - dependencies: - workbox-background-sync "^4.3.1" - workbox-core "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - -workbox-navigation-preload@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" - integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== - dependencies: - workbox-core "^4.3.1" - -workbox-precaching@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" - integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== - dependencies: - workbox-core "^4.3.1" - -workbox-range-requests@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" - integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== - dependencies: - workbox-core "^4.3.1" - -workbox-routing@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" - integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== - dependencies: - workbox-core "^4.3.1" - -workbox-strategies@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" - integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== - dependencies: - workbox-core "^4.3.1" - -workbox-streams@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" - integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== - dependencies: - workbox-core "^4.3.1" - -workbox-sw@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" - integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== - -workbox-webpack-plugin@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" - integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== + tempy "^0.3.0" + upath "^1.2.0" + workbox-background-sync "^5.1.4" + workbox-broadcast-update "^5.1.4" + workbox-cacheable-response "^5.1.4" + workbox-core "^5.1.4" + workbox-expiration "^5.1.4" + workbox-google-analytics "^5.1.4" + workbox-navigation-preload "^5.1.4" + workbox-precaching "^5.1.4" + workbox-range-requests "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + workbox-streams "^5.1.4" + workbox-sw "^5.1.4" + workbox-window "^5.1.4" + +workbox-cacheable-response@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" + integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== + dependencies: + workbox-core "^5.1.4" + +workbox-core@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" + integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== + +workbox-expiration@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" + integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== + dependencies: + workbox-core "^5.1.4" + +workbox-google-analytics@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" + integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== + dependencies: + workbox-background-sync "^5.1.4" + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + +workbox-navigation-preload@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" + integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== + dependencies: + workbox-core "^5.1.4" + +workbox-precaching@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" + integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== + dependencies: + workbox-core "^5.1.4" + +workbox-range-requests@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" + integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== + dependencies: + workbox-core "^5.1.4" + +workbox-routing@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" + integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== + dependencies: + workbox-core "^5.1.4" + +workbox-strategies@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" + integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-streams@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" + integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-sw@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" + integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== + +workbox-webpack-plugin@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" + integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== dependencies: - "@babel/runtime" "^7.0.0" - json-stable-stringify "^1.0.1" - workbox-build "^4.3.1" + "@babel/runtime" "^7.5.5" + fast-json-stable-stringify "^2.0.0" + source-map-url "^0.4.0" + upath "^1.1.2" + webpack-sources "^1.3.0" + workbox-build "^5.1.4" -workbox-window@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" - integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== +workbox-window@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" + integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" worker-farm@^1.7.0: version "1.7.0" @@ -19673,15 +19634,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" @@ -19740,14 +19692,7 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - -ws@^6.1.2, ws@^6.2.1: +ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== @@ -19764,18 +19709,11 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.1.1, xmlchars@^2.2.0: +xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xregexp@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.0.tgz#29660f5d6567cd2ef981dd4a50cb05d22c10719d" - integrity sha512-83y4aa8o8o4NZe+L+46wpa+F1cWR/wCGOWI3tzqUso0w3/KAvXy0+Di7Oe/cbNMixDR4Jmi7NEybWU6ps25Wkg== - dependencies: - "@babel/runtime-corejs3" "^7.12.1" - xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -19801,6 +19739,11 @@ 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: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yaml@^1.7.2: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" From 38fa13f104c28db467069e2a9a067cb812aab6b7 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 19:37:58 +0200 Subject: [PATCH 52/62] Add some tests --- .../dockerlist-client/src/DockerList.test.js | 117 ++++-------------- .../src/__snapshots__/DockerList.test.js.snap | 98 +++++++++++++++ 2 files changed, 119 insertions(+), 96 deletions(-) create mode 100644 packages/dockerlist-client/src/__snapshots__/DockerList.test.js.snap diff --git a/packages/dockerlist-client/src/DockerList.test.js b/packages/dockerlist-client/src/DockerList.test.js index 40bbab7..fc0f40a 100644 --- a/packages/dockerlist-client/src/DockerList.test.js +++ b/packages/dockerlist-client/src/DockerList.test.js @@ -1,11 +1,6 @@ -import React, { Component } from "react"; -import { render, screen, waitFor, wait } from "@testing-library/react"; +import React from "react"; +import { render, screen, waitFor } from "@testing-library/react"; import { DockerListMod } from "./DockerList.bs"; -import { json } from "express"; -// import "./DockerList.bs.js"; - -// eslint-disable-next-line @typescript-eslint/no-var-requires -// const { DockerListMod } = require("./DockerList.bs"); // TODO convert to typescript? // TODO convert to bs-jest? @@ -14,15 +9,15 @@ const DockerList = DockerListMod.make; jest.mock("./DockerList.module.css", () => ""); -const FOO = { +const MOCK_DOCKERLIST_RESPONSE = { status: "received", containers: [ { Id: "2757091519a2e227b40e6fae4f92b7f4c8b7b189037bda0bc3152ce2be96af9d", Names: ["/determined_edison"], - State: "exited", - Status: "Exited (1) 5 months ago", + State: "running", + Status: "Up 2 days", }, { Id: @@ -41,102 +36,32 @@ const FOO = { ], }; -// function getDockerList(url, onError) { -// var __x = fetch(url + "/api/dockerlist"); -// return handleResponse(__x.then(function (prim) { -// return prim.text(); -// }), onError, "error in getDockerList"); - -// global.fetch = jest.fn().mockResolvedValue({ -// then: (fn) => { -// // fn(); -// jest.fn().mockResolvedValue(JSON.stringify(FOO)); -// }, -// }); - global.fetch = jest.fn().mockResolvedValue({ - text: () => Promise.resolve(JSON.stringify(FOO)), + text: () => Promise.resolve(JSON.stringify(MOCK_DOCKERLIST_RESPONSE)), }); -// global.fetch = jest.fn().mockResolvedValue({ -// text: () => jest.fn().mockResolvedValue(FOO), -// }); - describe("DockerList client", () => { - it("trivial test", () => { - expect(true).toBeTruthy(); - }); - - // it("trivial render", () => { - // render(); - // screen.debug(); - // }); - - it("trivial render", async () => { + it("renders buttons for each docker container", async () => { render(); - await waitFor(() => { screen.getByText("determined_edison"); }); - screen.debug(); + expect(screen.getAllByRole("button").length).toBe(3); }); -}); - -// In this case use `require`, see below. import StreamPlayer from "./StreamPlayer"; -// let mockEmit = () => { -// /* no-op */ -// }; + it("can stop running container", async () => { + const { container } = render(); -// // Example of naive mock: -// // jest.mock("react-elm-components", () => "mock-react-elm-components"); - -// // Example of FC mock: -// // jest.mock("react-elm-components", () => (props) => { -// // // Do not destructure `props.ports` to keep destinct from inner `ports` argument -// // console.log("props.ports", props.ports); -// // // ports(); -// // const foo = (fn) => { -// // mockEmit = fn; -// // }; -// // const ports = { setPlayPauseStatusPort: { subscribe: foo } }; -// // // triggerPorts = -// // props.ports(ports); -// // return

; -// // }); - -// const playSpy = jest.fn(); -// const pauseSpy = jest.fn(); - -// window.HTMLMediaElement.prototype.play = playSpy; -// window.HTMLMediaElement.prototype.pause = pauseSpy; - -// class MockReactElmComponent extends Component { -// render() { -// // Do not destructure `props.ports` to keep destinct from inner `ports` argument -// const foo = (fn) => { -// mockEmit = fn; -// }; -// const ports = { setPlayPauseStatusPort: { subscribe: foo } }; -// this.props.ports(ports); -// return ( -//

-//

-// ); -// } -// } - -// With ref: -// jest.mock("react-elm-components", () => MockReactElmComponent); + await waitFor(() => { + screen.getByText("determined_edison"); + }); -// eslint-disable-next-line @typescript-eslint/no-var-requires -// const StreamPlayer = require("./StreamPlayer").default; + expect( + screen.getByRole("button", { + name: /determined_edison up 2 days/i, + }) + ).toMatchSnapshot(); -// jest.mock("./Elm/Audio.elm", () => ({ -// Elm: { -// Elm: { -// Audio: "mock-elm-audio", -// }, -// }, -// })); + expect(container).toMatchSnapshot(); + }); +}); diff --git a/packages/dockerlist-client/src/__snapshots__/DockerList.test.js.snap b/packages/dockerlist-client/src/__snapshots__/DockerList.test.js.snap new file mode 100644 index 0000000..d8cd343 --- /dev/null +++ b/packages/dockerlist-client/src/__snapshots__/DockerList.test.js.snap @@ -0,0 +1,98 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DockerList client can stop running container 1`] = ` + +`; + +exports[`DockerList client can stop running container 2`] = ` +
+
+
+ + +

+ Do you want to stop determined_edison? +

+
+ + +
+
+ + +

+ Do you want to start tinycors? +

+
+ + +
+
+ + +

+ Do you want to start hello_world? +

+
+ + +
+
+
+
+
+`; From 15db5f7fddb04fd278a5be34413a2fb1aad8f781 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 19:40:06 +0200 Subject: [PATCH 53/62] Convert test to ts --- .../src/{DockerList.test.js => DockerList.test.tsx} | 1 - .../{DockerList.test.js.snap => DockerList.test.tsx.snap} | 0 2 files changed, 1 deletion(-) rename packages/dockerlist-client/src/{DockerList.test.js => DockerList.test.tsx} (98%) rename packages/dockerlist-client/src/__snapshots__/{DockerList.test.js.snap => DockerList.test.tsx.snap} (100%) diff --git a/packages/dockerlist-client/src/DockerList.test.js b/packages/dockerlist-client/src/DockerList.test.tsx similarity index 98% rename from packages/dockerlist-client/src/DockerList.test.js rename to packages/dockerlist-client/src/DockerList.test.tsx index fc0f40a..53d7fed 100644 --- a/packages/dockerlist-client/src/DockerList.test.js +++ b/packages/dockerlist-client/src/DockerList.test.tsx @@ -2,7 +2,6 @@ import React from "react"; import { render, screen, waitFor } from "@testing-library/react"; import { DockerListMod } from "./DockerList.bs"; -// TODO convert to typescript? // TODO convert to bs-jest? const DockerList = DockerListMod.make; diff --git a/packages/dockerlist-client/src/__snapshots__/DockerList.test.js.snap b/packages/dockerlist-client/src/__snapshots__/DockerList.test.tsx.snap similarity index 100% rename from packages/dockerlist-client/src/__snapshots__/DockerList.test.js.snap rename to packages/dockerlist-client/src/__snapshots__/DockerList.test.tsx.snap From 0cb571b929247c49441826ebc0c60fe9e8ac2f2a Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 19:47:19 +0200 Subject: [PATCH 54/62] Upgrade testing-library --- package.json | 8 +++--- yarn.lock | 75 ++++++++++++++++++++-------------------------------- 2 files changed, 33 insertions(+), 50 deletions(-) diff --git a/package.json b/package.json index 635b4ab..808dde6 100644 --- a/package.json +++ b/package.json @@ -14,10 +14,10 @@ "@storybook/react": "^6.0.28", "@storybook/source-loader": "^6.0.28", "@storybook/theming": "^6.0.28", - "@testing-library/dom": "^7.26.5", - "@testing-library/jest-dom": "^5.11.5", - "@testing-library/react": "^11.1.1", - "@testing-library/user-event": "^12.2.0", + "@testing-library/dom": "^7.31.0", + "@testing-library/jest-dom": "^5.12.0", + "@testing-library/react": "^11.2.7", + "@testing-library/user-event": "^13.1.9", "@types/express": "^4.17.8", "@types/jest": "^26.0.15", "@typescript-eslint/eslint-plugin": "^4.6.1", diff --git a/yarn.lock b/yarn.lock index 0ba4219..8d54785 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2066,20 +2066,13 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@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.10.3": - version "7.11.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" - integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/template@^7.10.4", "@babel/template@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" @@ -2680,7 +2673,7 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^26.5.2", "@jest/types@^26.6.0", "@jest/types@^26.6.2": +"@jest/types@^26.6.0", "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== @@ -4341,24 +4334,24 @@ dependencies: defer-to-connect "^2.0.0" -"@testing-library/dom@^7.26.4", "@testing-library/dom@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.26.5.tgz#804a74fc893bf6da1a7970dbca7b94c2bbfe983d" - integrity sha512-2v/fv0s4keQjJIcD4bjfJMFtvxz5icartxUWdIZVNJR539WD9oxVrvIAPw+3Ydg4RLgxt0rvQx3L9cAjCci0Kg== +"@testing-library/dom@^7.28.1", "@testing-library/dom@^7.31.0": + version "7.31.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.0.tgz#938451abd3ca27e1b69bb395d4a40759fd7f5b3b" + integrity sha512-0X7ACg4YvTRDFMIuTOEj6B4NpN7i3F/4j5igOcTI5NC5J+N4TribNdErCHOZF1LBWhhcyfwxelVwvoYNMUXTOA== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.10.3" + "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" aria-query "^4.2.2" chalk "^4.1.0" - dom-accessibility-api "^0.5.1" + dom-accessibility-api "^0.5.4" lz-string "^1.4.4" - pretty-format "^26.4.2" + pretty-format "^26.6.2" -"@testing-library/jest-dom@^5.11.5": - version "5.11.5" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.5.tgz#44010f37f4b1e15f9d433963b515db0b05182fc8" - integrity sha512-XI+ClHR864i6p2kRCEyhvpVejuer+ObVUF4cjCvRSF88eOMIfqw7RoS9+qoRhyigGswMfT64L6Nt0Ufotxbwtg== +"@testing-library/jest-dom@^5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.12.0.tgz#6a5d340b092c44b7bce17a4791b47d9bc2c61443" + integrity sha512-N9Y82b2Z3j6wzIoAqajlKVF1Zt7sOH0pPee0sUHXHc5cv2Fdn23r+vpWm0MBBoGJtPOly5+Bdx1lnc3CD+A+ow== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" @@ -4369,20 +4362,20 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@^11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.1.1.tgz#226d8dc7491b702fcaac2d7d88d42892e655893a" - integrity sha512-DT/P2opE9o4NWCd/oIL73b6VF/Xk9AY8iYSstKfz9cXw0XYPQ5IhA/cuYfoN9nU+mAynW8DpAVfEWdM6e7zF6g== +"@testing-library/react@^11.2.7": + version "11.2.7" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" + integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== dependencies: - "@babel/runtime" "^7.12.1" - "@testing-library/dom" "^7.26.4" + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^7.28.1" -"@testing-library/user-event@^12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.2.0.tgz#fbb0710f93d68a28b9407e2380eb152354c944a7" - integrity sha512-Vnmm1ZvJ+JSQ7+lGIWMIdGbdLFQBAeWEAZJjw6dZwKWMwVTOBXMFbAxUCewQEVM0xfD4sGrYS/Hxec311WknGw== +"@testing-library/user-event@^13.1.9": + version "13.1.9" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.1.9.tgz#29e49a42659ac3c1023565ff56819e0153a82e99" + integrity sha512-NZr0zL2TMOs2qk+dNlqrAdbaRW5dAmYwd1yuQ4r7HpkVEOj0MWuUjDWwKhcLd/atdBy8ZSMHSKp+kXSQe47ezg== dependencies: - "@babel/runtime" "^7.10.2" + "@babel/runtime" "^7.12.5" "@types/anymatch@*": version "1.3.1" @@ -8567,10 +8560,10 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.3.tgz#0ea493c924d4070dfbf531c4aaca3d7a2c601aab" - integrity sha512-yfqzAi1GFxK6EoJIZKgxqJyK6j/OjEFEUi2qkNThD/kUhoCFSG1izq31B5xuxzbJBGw9/67uPtkPMYAzWL7L7Q== +dom-accessibility-api@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166" + integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ== dom-converter@^0.2: version "0.2.0" @@ -15443,16 +15436,6 @@ pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^26.4.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.5.2.tgz#5d896acfdaa09210683d34b6dc0e6e21423cd3e1" - integrity sha512-VizyV669eqESlkOikKJI8Ryxl/kPpbdLwNdPs2GrbQs18MpySB5S0Yo0N7zkg2xTRiFq4CFw8ct5Vg4a0xP0og== - dependencies: - "@jest/types" "^26.5.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" @@ -16028,7 +16011,7 @@ react-inspector@^5.0.1: is-dom "^1.0.0" prop-types "^15.0.0" -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1: +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== From 2247d2b9abdff163bfc9a6d7855cc3cb72501648 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 20:06:53 +0200 Subject: [PATCH 55/62] Upgrade storybook --- package.json | 28 +- packages/dockerlist-client/.bsb.lock | 2 +- packages/dockerlist-client/README.md | 2 - yarn.lock | 2401 ++++++++++++-------------- 4 files changed, 1159 insertions(+), 1274 deletions(-) diff --git a/package.json b/package.json index 808dde6..5881a77 100644 --- a/package.json +++ b/package.json @@ -2,18 +2,18 @@ "name": "root", "private": true, "devDependencies": { - "@babel/core": "^7.12.3", - "@storybook/addon-actions": "^6.0.28", - "@storybook/addon-controls": "^6.0.28", - "@storybook/addon-essentials": "^6.0.28", - "@storybook/addon-links": "^6.0.28", - "@storybook/addon-storysource": "^6.0.28", - "@storybook/addons": "^6.0.28", - "@storybook/node-logger": "^6.0.28", - "@storybook/preset-create-react-app": "^3.1.4", - "@storybook/react": "^6.0.28", - "@storybook/source-loader": "^6.0.28", - "@storybook/theming": "^6.0.28", + "@babel/core": "^7.14.3", + "@storybook/addon-actions": "^6.2.9", + "@storybook/addon-controls": "^6.2.9", + "@storybook/addon-essentials": "^6.2.9", + "@storybook/addon-links": "^6.2.9", + "@storybook/addon-storysource": "^6.2.9", + "@storybook/addons": "^6.2.9", + "@storybook/node-logger": "^6.2.9", + "@storybook/preset-create-react-app": "^3.1.7", + "@storybook/react": "^6.2.9", + "@storybook/source-loader": "^6.2.9", + "@storybook/theming": "^6.2.9", "@testing-library/dom": "^7.31.0", "@testing-library/jest-dom": "^5.12.0", "@testing-library/react": "^11.2.7", @@ -23,7 +23,9 @@ "@typescript-eslint/eslint-plugin": "^4.6.1", "@typescript-eslint/parser": "^4.6.1", "babel-eslint": "^10.1.0", - "babel-loader": "^8.1.0", + "babel-loader": "^8.2.2", + "babel-plugin-polyfill-corejs2": "^0.2.1", + "babel-plugin-polyfill-regenerator": "^0.2.1", "babel-preset-react-app": "^10.0.0", "concurrently": "^5.3.0", "elm": "^0.19.1-3", diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock index 143384b..b608b71 100644 --- a/packages/dockerlist-client/.bsb.lock +++ b/packages/dockerlist-client/.bsb.lock @@ -1 +1 @@ -359131 \ No newline at end of file +388122 \ No newline at end of file diff --git a/packages/dockerlist-client/README.md b/packages/dockerlist-client/README.md index 5f50a61..f27b97c 100644 --- a/packages/dockerlist-client/README.md +++ b/packages/dockerlist-client/README.md @@ -29,8 +29,6 @@ See https://github.com/mdvanes/homeremote/issues/9 ## TODO -- Error handling, callback for snackbar -- Add unit test - Fix building, exclude "dist" from the build? - Add DockerList to the Example app - For now XHR works in Rescript, but Fetch only works in Reason files. Mainly decoding the JSON fails, even with "@glennsl/bs-json" diff --git a/yarn.lock b/yarn.lock index 8d54785..f40d92b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16,14 +16,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/code-frame@^7.12.13": +"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== @@ -50,28 +43,6 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== -"@babel/core@7.11.6": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" - integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.6" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.5" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.5" - "@babel/types" "^7.11.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - "@babel/core@7.12.3", "@babel/core@^7.12.3": version "7.12.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" @@ -94,7 +65,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.12.1", "@babel/core@^7.7.5": +"@babel/core@7.12.9", "@babel/core@^7.1.0", "@babel/core@^7.7.5": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== @@ -116,7 +87,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.8.4": +"@babel/core@^7.12.10", "@babel/core@^7.14.3", "@babel/core@^7.8.4": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== @@ -137,7 +108,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6", "@babel/generator@^7.12.5": +"@babel/generator@^7.11.5", "@babel/generator@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== @@ -155,7 +126,7 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.14.2", "@babel/generator@^7.14.3": +"@babel/generator@^7.12.11", "@babel/generator@^7.14.2", "@babel/generator@^7.14.3": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== @@ -194,7 +165,7 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-builder-react-jsx-experimental@^7.12.1", "@babel/helper-builder-react-jsx-experimental@^7.12.4": +"@babel/helper-builder-react-jsx-experimental@^7.12.1": version "7.12.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48" integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og== @@ -252,7 +223,7 @@ "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" -"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.3": +"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.2", "@babel/helper-create-class-features-plugin@^7.14.3": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.3.tgz#832111bcf4f57ca57a4c5b1a000fc125abc6554a" integrity sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ== @@ -290,6 +261,20 @@ "@babel/types" "^7.10.5" lodash "^4.17.19" +"@babel/helper-define-polyfill-provider@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" + integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-define-polyfill-provider@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.1.tgz#e6f5f4a6edc3722152c21359190de67fc6cf664d" @@ -400,7 +385,7 @@ dependencies: "@babel/types" "^7.13.12" -"@babel/helper-module-transforms@^7.11.0", "@babel/helper-module-transforms@^7.12.1": +"@babel/helper-module-transforms@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== @@ -573,15 +558,6 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helpers@^7.10.4", "@babel/helpers@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" - integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.5" - "@babel/types" "^7.12.5" - "@babel/helpers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" @@ -591,6 +567,15 @@ "@babel/traverse" "^7.12.1" "@babel/types" "^7.12.1" +"@babel/helpers@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + "@babel/helpers@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" @@ -600,7 +585,7 @@ "@babel/traverse" "^7.14.0" "@babel/types" "^7.14.0" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.8.3": +"@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== @@ -633,7 +618,7 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== -"@babel/parser@^7.12.13", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3": +"@babel/parser@^7.12.11", "@babel/parser@^7.12.13", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== @@ -695,7 +680,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-class-static-block" "^7.12.13" -"@babel/plugin-proposal-decorators@7.12.1", "@babel/plugin-proposal-decorators@^7.12.1": +"@babel/plugin-proposal-decorators@7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== @@ -704,6 +689,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-decorators" "^7.12.1" +"@babel/plugin-proposal-decorators@^7.12.12": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.2.tgz#e68c3c5e4a6a08834456568256fc3e71b93590cf" + integrity sha512-LauAqDd/VjQDtae58QgBcEOE42NNP+jB2OE+XeC3KBI/E+BhhRjtr5viCIrj1hmu1YvrguLipIPRJZmS5yUcFw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.2" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-decorators" "^7.12.13" + "@babel/plugin-proposal-dynamic-import@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" @@ -816,16 +810,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" - integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.12.1": +"@babel/plugin-proposal-object-rest-spread@7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== @@ -972,6 +957,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-decorators@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" + integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== + 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" @@ -1014,14 +1006,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" - integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-jsx@^7.12.1": +"@babel/plugin-syntax-jsx@7.12.1", "@babel/plugin-syntax-jsx@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== @@ -1112,6 +1097,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" @@ -1165,7 +1157,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.14.2": +"@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz#761cb12ab5a88d640ad4af4aa81f820e6b5fdf5c" integrity sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg== @@ -1459,7 +1451,7 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-replace-supers" "^7.12.13" -"@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.12.1": +"@babel/plugin-transform-parameters@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== @@ -1524,15 +1516,6 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.12.17" -"@babel/plugin-transform-react-jsx-development@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.7.tgz#4c2a647de79c7e2b16bfe4540677ba3121e82a08" - integrity sha512-Rs3ETtMtR3VLXFeYRChle5SsP/P9Jp/6dsewBQfokDSzKJThlsuFcnzLTDRALiUmTC48ej19YD9uN1mupEeEDg== - dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.12.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" - "@babel/plugin-transform-react-jsx-self@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" @@ -1557,7 +1540,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.12.1" -"@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": +"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.3.tgz#0e26597805cf0862da735f264550933c38babb66" integrity sha512-uuxuoUNVhdgYzERiHHFkE4dWoJx+UFVyuAl0aqN8P2/AKFHwqgUC5w2+4/PjpKXJsFgBlYAFXlUmDQ3k3DUkXw== @@ -1568,16 +1551,6 @@ "@babel/plugin-syntax-jsx" "^7.12.13" "@babel/types" "^7.14.2" -"@babel/plugin-transform-react-jsx@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.7.tgz#8b14d45f6eccd41b7f924bcb65c021e9f0a06f7f" - integrity sha512-YFlTi6MEsclFAPIDNZYiCRbneg1MFGao9pPG9uD5htwE0vDbPaMUMeYd6itWjw7K4kro4UbdQf3ljmFl9y48dQ== - dependencies: - "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.12.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" - "@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" @@ -1713,6 +1686,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-typescript" "^7.12.1" +"@babel/plugin-transform-typescript@^7.13.0": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.3.tgz#44f67f725a60cccee33d9d6fee5e4f338258f34f" + integrity sha512-G5Bb5pY6tJRTC4ag1visSgiDoGgJ1u1fMUgmc2ijLkcIdzP83Q1qyZX4ggFQ/SkR+PNOatkaYC+nKcTlpsX4ag== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.3" + "@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" @@ -1887,7 +1869,7 @@ core-js-compat "^3.7.0" semver "^5.5.0" -"@babel/preset-env@^7.8.4": +"@babel/preset-env@^7.12.11", "@babel/preset-env@^7.8.4": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.2.tgz#e80612965da73579c84ad2f963c2359c71524ed5" integrity sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ== @@ -1998,20 +1980,7 @@ "@babel/plugin-transform-react-jsx-source" "^7.12.1" "@babel/plugin-transform-react-pure-annotations" "^7.12.1" -"@babel/preset-react@^7.12.1": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.7.tgz#36d61d83223b07b6ac4ec55cf016abb0f70be83b" - integrity sha512-wKeTdnGUP5AEYCYQIMeXMMwU7j+2opxrG0WzuZfxuuW9nhKvvALBjl67653CWamZJVefuJGI219G591RSldrqQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.12.1" - "@babel/plugin-transform-react-jsx" "^7.12.7" - "@babel/plugin-transform-react-jsx-development" "^7.12.7" - "@babel/plugin-transform-react-jsx-self" "^7.12.1" - "@babel/plugin-transform-react-jsx-source" "^7.12.1" - "@babel/plugin-transform-react-pure-annotations" "^7.12.1" - -"@babel/preset-react@^7.12.5": +"@babel/preset-react@^7.12.10", "@babel/preset-react@^7.12.5": version "7.13.13" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.13.13.tgz#fa6895a96c50763fe693f9148568458d5a839761" integrity sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA== @@ -2031,14 +2000,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-typescript" "^7.12.1" -"@babel/preset-typescript@^7.12.1": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3" - integrity sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw== +"@babel/preset-typescript@^7.12.7": + 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.10.4" - "@babel/helper-validator-option" "^7.12.1" - "@babel/plugin-transform-typescript" "^7.12.1" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-typescript" "^7.13.0" "@babel/register@^7.12.1": version "7.12.1" @@ -2073,6 +2042,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.13.10", "@babel/runtime@^7.13.17": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" + integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.10.4", "@babel/template@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" @@ -2115,7 +2091,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5", "@babel/traverse@^7.12.9": +"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.9": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f" integrity sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw== @@ -2320,7 +2296,7 @@ "@emotion/serialize" "^0.11.15" "@emotion/utils" "0.11.3" -"@emotion/styled@^10.0.23": +"@emotion/styled@^10.0.27": version "10.0.27" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q== @@ -2485,11 +2461,6 @@ dependencies: "@hapi/hoek" "^8.3.0" -"@icons/material@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" - integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -2652,7 +2623,7 @@ jest-runner "^26.6.3" jest-runtime "^26.6.3" -"@jest/transform@^26.0.0", "@jest/transform@^26.6.2": +"@jest/transform@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== @@ -3369,33 +3340,33 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" -"@mdx-js/loader@^1.6.19": - version "1.6.21" - resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.21.tgz#e5b2b5c48d182e495d36104b0c7a5da96964a2dd" - integrity sha512-4xNtT7oal4PrLSpZE+75nj9XMwYwc5BuoHmer1GDmer2Hhg8DCLxskk4lWpXnMv+IUg7MboK0EAtZ2fk0szt3A== +"@mdx-js/loader@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.22.tgz#d9e8fe7f8185ff13c9c8639c048b123e30d322c4" + integrity sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q== dependencies: - "@mdx-js/mdx" "1.6.21" - "@mdx-js/react" "1.6.21" + "@mdx-js/mdx" "1.6.22" + "@mdx-js/react" "1.6.22" loader-utils "2.0.0" -"@mdx-js/mdx@1.6.21", "@mdx-js/mdx@^1.6.19": - version "1.6.21" - resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.21.tgz#d3651b4802db7bdc399270c0ffa9e2aa99dd4b00" - integrity sha512-z35VI6qDw9eAzR/obtgHbYVUdb/Pm+oUnlP1lLR94Oe05Xs2H7vlAgpuFBCLH5g/egzAc2wZCyoVydr25CsF+A== +"@mdx-js/mdx@1.6.22", "@mdx-js/mdx@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" + integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== dependencies: - "@babel/core" "7.11.6" - "@babel/plugin-syntax-jsx" "7.10.4" + "@babel/core" "7.12.9" + "@babel/plugin-syntax-jsx" "7.12.1" "@babel/plugin-syntax-object-rest-spread" "7.8.3" - "@mdx-js/util" "1.6.21" - babel-plugin-apply-mdx-type-prop "1.6.21" - babel-plugin-extract-import-names "1.6.21" + "@mdx-js/util" "1.6.22" + babel-plugin-apply-mdx-type-prop "1.6.22" + babel-plugin-extract-import-names "1.6.22" camelcase-css "2.0.1" - detab "2.0.3" + detab "2.0.4" hast-util-raw "6.0.1" lodash.uniq "4.5.0" - mdast-util-to-hast "9.1.2" + mdast-util-to-hast "10.0.1" remark-footnotes "2.0.0" - remark-mdx "1.6.21" + remark-mdx "1.6.22" remark-parse "8.0.3" remark-squeeze-paragraphs "4.0.0" style-to-object "0.3.0" @@ -3403,15 +3374,15 @@ unist-builder "2.0.3" unist-util-visit "2.0.3" -"@mdx-js/react@1.6.21", "@mdx-js/react@^1.6.19": - version "1.6.21" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.21.tgz#86d962471a5e160c59a6b32054aa55c0c7ca404e" - integrity sha512-CgSNT9sq2LAlhEbVlPg7DwUQkypz+CWaWGcJbkgmp9WCAy6vW33CQ44UbKPiH3wet9o+UbXeQOqzZd041va83g== +"@mdx-js/react@1.6.22", "@mdx-js/react@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" + integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== -"@mdx-js/util@1.6.21": - version "1.6.21" - resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.21.tgz#25f97a0a1b76e78c16ae5d98c6c73e1be8d89e39" - integrity sha512-6sANhqfEHu6gdHZSrzDjN18Y48mIon8f2Os6J+IFmMHN0IhNG/0PUIIsI07kA1sZ9t6vgZNBloVmcDa5WOSe6A== +"@mdx-js/util@1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" + integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" @@ -3563,7 +3534,7 @@ dependencies: "@types/node" ">= 8" -"@pmmmwh/react-refresh-webpack-plugin@0.4.3", "@pmmmwh/react-refresh-webpack-plugin@^0.4.2": +"@pmmmwh/react-refresh-webpack-plugin@0.4.3", "@pmmmwh/react-refresh-webpack-plugin@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== @@ -3575,12 +3546,17 @@ schema-utils "^2.6.5" source-map "^0.7.3" -"@popperjs/core@^2.4.4", "@popperjs/core@^2.5.4": +"@popperjs/core@^2.5.4": version "2.5.4" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.5.4.tgz#de25b5da9f727985a3757fd59b5d028aba75841a" integrity sha512-ZpKr+WTb8zsajqgDkvCEWgp6d5eJT6Q63Ng2neTbzBO76Lbe91vX/iVIW9dikq+Fs3yEo+ls4cxeXABD2LtcbQ== -"@reach/router@^1.3.3": +"@popperjs/core@^2.6.0": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" + integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q== + +"@reach/router@^1.3.4": version "1.3.4" resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA== @@ -3642,425 +3618,544 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@storybook/addon-actions@6.1.9", "@storybook/addon-actions@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.1.9.tgz#b6d185b8e4e73691acc428b59e4d331195d64a40" - integrity sha512-vYqwuaBHrjRbbuyf4WBc5uDhrSejVEEiCabuu4g00R3dN7P5Ne/tbSw9EkYbbrRKxlEhdkk83DU1/J/+mCY5jw== - dependencies: - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/client-api" "6.1.9" - "@storybook/components" "6.1.9" - "@storybook/core-events" "6.1.9" - "@storybook/theming" "6.1.9" - core-js "^3.0.1" - fast-deep-equal "^3.1.1" - global "^4.3.2" - lodash "^4.17.15" - polished "^3.4.4" +"@storybook/addon-actions@6.2.9", "@storybook/addon-actions@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.2.9.tgz#688413ac77410690755a5da3c277bfa0ff1a10b0" + integrity sha512-CkUYSMt+fvuHfWvtDzlhhaeQBCWlUo99xdL88JTsTml05P43bIHZNIRv2QJ8DwhHuxdIPeHKLmz9y/ymOagOnw== + dependencies: + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/client-api" "6.2.9" + "@storybook/components" "6.2.9" + "@storybook/core-events" "6.2.9" + "@storybook/theming" "6.2.9" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.20" + polished "^4.0.5" prop-types "^15.7.2" - react-inspector "^5.0.1" + react-inspector "^5.1.0" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" util-deprecate "^1.0.2" - uuid "^8.0.0" - -"@storybook/addon-backgrounds@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.1.9.tgz#4e9647001b2f396f56428218480f541e3a8a0e60" - integrity sha512-0/nnbnWZqo4NjyHFxcCHkcU+t8uUdk///9jSXRs4swmOLIFRaftEc/ZJ2rScu1Sc7y0CQdbk1Jjyx5/2cHBQtw== - dependencies: - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/components" "6.1.9" - "@storybook/core-events" "6.1.9" - "@storybook/theming" "6.1.9" - core-js "^3.0.1" - global "^4.3.2" + uuid-browser "^3.1.0" + +"@storybook/addon-backgrounds@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.2.9.tgz#4f75aa58b262f461d9f8713d65d11407f4e53537" + integrity sha512-oPSdeoUuvaXshY5sQRagbYXpr6ZEVUuLhGYBnZTlvm19QMeNCXQE+rdlgzcgyafq4mc1FI/udE2MpJ1dhfS6pQ== + dependencies: + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/components" "6.2.9" + "@storybook/core-events" "6.2.9" + "@storybook/theming" "6.2.9" + core-js "^3.8.2" + global "^4.4.0" memoizerific "^1.11.3" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/addon-controls@6.1.9", "@storybook/addon-controls@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.1.9.tgz#d7663d4c95db49163c372989f04264b11a4fa5cf" - integrity sha512-ctMXTcouqrPlNpQ0w3q6wjg16s1DL9VJtw1WvkySwezOE0ytfeC8M4nsbsKJnuY+dCadHKGn392DC1qVidY7Hg== - dependencies: - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/client-api" "6.1.9" - "@storybook/components" "6.1.9" - "@storybook/node-logger" "6.1.9" - "@storybook/theming" "6.1.9" - core-js "^3.0.1" +"@storybook/addon-controls@6.2.9", "@storybook/addon-controls@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.2.9.tgz#eeec14b2946f1fb5326115f2205ed72c7f44ccea" + integrity sha512-NvXAJ7I5U4CLxv4wL3/Ne9rehJlgnSmQlLIG/z6dg5zm7JIb48LT4IY6GzjlUP5LkjmO9KJ8gJC249uRt2iPBQ== + dependencies: + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/client-api" "6.2.9" + "@storybook/components" "6.2.9" + "@storybook/node-logger" "6.2.9" + "@storybook/theming" "6.2.9" + core-js "^3.8.2" ts-dedent "^2.0.0" -"@storybook/addon-docs@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.1.9.tgz#41cf82cece4abcf7640a1b7c2be6a7d5908c4678" - integrity sha512-5pwt2WU/yD4cnHU2KOpzU4t7A9FoePhZ15WOajtuV+W/hekNQSOGgNASQZbVOOldl954ireNIjZHtvthpI0tvQ== +"@storybook/addon-docs@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.2.9.tgz#61271e54ff4ea490409e4873ed022e62577366c1" + integrity sha512-qOtwgiqI3LMqT0eXYNV6ykp7qSu0LQGeXxy3wOBGuDDqAizfgnAjomYEWGFcyKp5ahV7HCRCjxbixAklFPUmyw== dependencies: - "@babel/core" "^7.12.1" - "@babel/generator" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/plugin-transform-react-jsx" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@jest/transform" "^26.0.0" - "@mdx-js/loader" "^1.6.19" - "@mdx-js/mdx" "^1.6.19" - "@mdx-js/react" "^1.6.19" - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/client-api" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/components" "6.1.9" - "@storybook/core" "6.1.9" - "@storybook/core-events" "6.1.9" + "@babel/core" "^7.12.10" + "@babel/generator" "^7.12.11" + "@babel/parser" "^7.12.11" + "@babel/plugin-transform-react-jsx" "^7.12.12" + "@babel/preset-env" "^7.12.11" + "@jest/transform" "^26.6.2" + "@mdx-js/loader" "^1.6.22" + "@mdx-js/mdx" "^1.6.22" + "@mdx-js/react" "^1.6.22" + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/builder-webpack4" "6.2.9" + "@storybook/client-api" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/components" "6.2.9" + "@storybook/core" "6.2.9" + "@storybook/core-events" "6.2.9" "@storybook/csf" "0.0.1" - "@storybook/node-logger" "6.1.9" - "@storybook/postinstall" "6.1.9" - "@storybook/source-loader" "6.1.9" - "@storybook/theming" "6.1.9" - acorn "^7.1.0" - acorn-jsx "^5.1.0" - acorn-walk "^7.0.0" - core-js "^3.0.1" + "@storybook/node-logger" "6.2.9" + "@storybook/postinstall" "6.2.9" + "@storybook/source-loader" "6.2.9" + "@storybook/theming" "6.2.9" + acorn "^7.4.1" + acorn-jsx "^5.3.1" + acorn-walk "^7.2.0" + core-js "^3.8.2" doctrine "^3.0.0" - escodegen "^1.12.0" - fast-deep-equal "^3.1.1" - global "^4.3.2" + escodegen "^2.0.0" + fast-deep-equal "^3.1.3" + global "^4.4.0" html-tags "^3.1.0" js-string-escape "^1.0.1" - lodash "^4.17.15" - prettier "~2.0.5" + loader-utils "^2.0.0" + lodash "^4.17.20" + prettier "~2.2.1" prop-types "^15.7.2" - react-element-to-jsx-string "^14.3.1" + react-element-to-jsx-string "^14.3.2" regenerator-runtime "^0.13.7" - remark-external-links "^6.0.0" + remark-external-links "^8.0.0" remark-slug "^6.0.0" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/addon-essentials@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.1.9.tgz#e689de480ea626a784bc3784b36ceb4c9b366561" - integrity sha512-mw05LsBjWLu79u0lFsd3/kSpU7Dctt0xzcx8hXcaUKsiq7QvqPoKVutFuC8tvgoAVaCmmokLygscbMBOD2hq0w== - dependencies: - "@storybook/addon-actions" "6.1.9" - "@storybook/addon-backgrounds" "6.1.9" - "@storybook/addon-controls" "6.1.9" - "@storybook/addon-docs" "6.1.9" - "@storybook/addon-toolbars" "6.1.9" - "@storybook/addon-viewport" "6.1.9" - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/node-logger" "6.1.9" - core-js "^3.0.1" +"@storybook/addon-essentials@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.2.9.tgz#cd946b024804c4d9bfec4e232b74ffdf936b25ef" + integrity sha512-zXsV4e1TCkHyDwi7hew4h9eJfDW++f2BNKzTif+DAcjPUVFDp7yC17gLjS5IhOjcQk+db0UUlFSx/OrTxhy7Xw== + dependencies: + "@storybook/addon-actions" "6.2.9" + "@storybook/addon-backgrounds" "6.2.9" + "@storybook/addon-controls" "6.2.9" + "@storybook/addon-docs" "6.2.9" + "@storybook/addon-toolbars" "6.2.9" + "@storybook/addon-viewport" "6.2.9" + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/node-logger" "6.2.9" + core-js "^3.8.2" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" -"@storybook/addon-links@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.1.9.tgz#fcd254a7685a09868c27a7162f4d0671eebf9f4b" - integrity sha512-z1ih0lyVr8RMlw0oxXfu7OWjHhyFWasZMivuJ6Q/XGAPS8T/Ohfct9mnNYFYeAtVeUUHI1IUavrOPHzcJnDkkg== +"@storybook/addon-links@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.2.9.tgz#3399d14b0fc587bccdaa602f6294bc8b249c09f0" + integrity sha512-pBiL6EUZI3c9qtCqnGx3RXF46kAxGMdo4xDC2y3mM132W//DzxkzLZRe4ZhxxGwaLzTNlNrypZ6Li6WyIaPZ/w== dependencies: - "@storybook/addons" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/core-events" "6.1.9" + "@storybook/addons" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/core-events" "6.2.9" "@storybook/csf" "0.0.1" - "@storybook/router" "6.1.9" - "@types/qs" "^6.9.0" - core-js "^3.0.1" - global "^4.3.2" + "@storybook/router" "6.2.9" + "@types/qs" "^6.9.5" + core-js "^3.8.2" + global "^4.4.0" prop-types "^15.7.2" - qs "^6.6.0" + qs "^6.10.0" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" -"@storybook/addon-storysource@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-storysource/-/addon-storysource-6.1.9.tgz#9f7c50522b4de4bc90508a3882ba473bec82f435" - integrity sha512-xG3UAHRFfdn7dvoOjlvIHUNWgMPRLy87qjjHgmdW0jWyvGEtT7k10IRGgnozXp64ETy8dAnIyt3kmRUwXj/pkg== - dependencies: - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/components" "6.1.9" - "@storybook/router" "6.1.9" - "@storybook/source-loader" "6.1.9" - "@storybook/theming" "6.1.9" - core-js "^3.0.1" - estraverse "^4.2.0" +"@storybook/addon-storysource@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-storysource/-/addon-storysource-6.2.9.tgz#631a9b6c2e3db42c05055ed5341700687a0b42f9" + integrity sha512-lKQOKbk8akqPN7NNBRn+OsiwYg1BXYExmErCwAT/ejx4ggHJCPTDlrl2ZiEriKZ7WXIfgA4VuN5YriKu5uxdnw== + dependencies: + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/components" "6.2.9" + "@storybook/router" "6.2.9" + "@storybook/source-loader" "6.2.9" + "@storybook/theming" "6.2.9" + core-js "^3.8.2" + estraverse "^5.2.0" loader-utils "^2.0.0" - prettier "~2.0.5" + prettier "~2.2.1" prop-types "^15.7.2" - react-syntax-highlighter "^13.5.0" + react-syntax-highlighter "^13.5.3" regenerator-runtime "^0.13.7" -"@storybook/addon-toolbars@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.1.9.tgz#99c8b48afc24773faf9490753788ee354e97f5d8" - integrity sha512-rXYkVqSahrb6eG6CwyuI2TNzazUBGTsSQK1ywOmLwFK2xs+ybn1jDkkh5UmzuPN7g6ouT3qJfz1H2PMqfGEY8Q== - dependencies: - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/client-api" "6.1.9" - "@storybook/components" "6.1.9" - core-js "^3.0.1" - -"@storybook/addon-viewport@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.1.9.tgz#7160b7598a34b8c19ff7571b781329fe8ad5de8d" - integrity sha512-+raES4+fDc0eCnpF4JW5kYwOTFEGiVmjmhFSrsXXuRXNGrCx4s5t9Bpklwm4YswIgmubB0Fpd0kaQS2LjRz94Q== - dependencies: - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/components" "6.1.9" - "@storybook/core-events" "6.1.9" - "@storybook/theming" "6.1.9" - core-js "^3.0.1" - global "^4.3.2" +"@storybook/addon-toolbars@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.2.9.tgz#29f2f4cba0bfbcff9424958eb573e537f7e2d5af" + integrity sha512-4WjIofN5npBPNZ8v1UhzPeATB9RnAWRH/y1AVS1HB+zl6Ku92o7aOMqVxs8zR1oSSmtkHh/rcUcpATFKjuofdw== + dependencies: + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/client-api" "6.2.9" + "@storybook/components" "6.2.9" + core-js "^3.8.2" + +"@storybook/addon-viewport@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.2.9.tgz#e380de567cea6c24c4e933efa009e80428d5b49e" + integrity sha512-IK2mu5njmfcAT967SJtBOY2B6NPMikySZga9QuaLdSpQxPd3vXKNMVG1CjnduMLeDaAoUlvlJISeEPbYGuE+1A== + dependencies: + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/components" "6.2.9" + "@storybook/core-events" "6.2.9" + "@storybook/theming" "6.2.9" + core-js "^3.8.2" + global "^4.4.0" memoizerific "^1.11.3" prop-types "^15.7.2" regenerator-runtime "^0.13.7" -"@storybook/addons@6.1.9", "@storybook/addons@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.1.9.tgz#78f3cb27b7d934f091f311f89b6ca312d34f12b8" - integrity sha512-NRxdlGLmmSoVwlirVRgKC8xmW9cFkG+Sp5GEd4XkJDaaIg2vKR3RuFU9GuvIOVMxOhhERqhQ07bnDaAMKbFzGw== - dependencies: - "@storybook/api" "6.1.9" - "@storybook/channels" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/core-events" "6.1.9" - "@storybook/router" "6.1.9" - "@storybook/theming" "6.1.9" - core-js "^3.0.1" - global "^4.3.2" +"@storybook/addons@6.2.9", "@storybook/addons@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.2.9.tgz#b7ba2b9f0e15b852c7d6b57d04fb0a493c57477c" + integrity sha512-GnmEKbJwiN1jncN9NSA8CuR1i2XAlasPcl/Zn0jkfV9WitQeczVcJCPw86SGH84AD+tTBCyF2i9UC0KaOV1YBQ== + dependencies: + "@storybook/api" "6.2.9" + "@storybook/channels" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/core-events" "6.2.9" + "@storybook/router" "6.2.9" + "@storybook/theming" "6.2.9" + core-js "^3.8.2" + global "^4.4.0" regenerator-runtime "^0.13.7" -"@storybook/api@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.1.9.tgz#3f9bf00b2b18fa02965079fe775bd713677b30a3" - integrity sha512-S9SXlSiMeI450NIbOnx3UU9TZNyVD7jcBCjfNzhj0PqzRX/IG5Usj+R88Jm6MSIDjtsVjrWRCou+PrCh2xMnlQ== +"@storybook/api@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.2.9.tgz#a9b46569192ad5d8da6435c9d63dc4b0c8463b51" + integrity sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ== dependencies: - "@reach/router" "^1.3.3" - "@storybook/channels" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/core-events" "6.1.9" + "@reach/router" "^1.3.4" + "@storybook/channels" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/core-events" "6.2.9" "@storybook/csf" "0.0.1" - "@storybook/router" "6.1.9" + "@storybook/router" "6.2.9" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.1.9" - "@types/reach__router" "^1.3.5" - core-js "^3.0.1" - fast-deep-equal "^3.1.1" - global "^4.3.2" - lodash "^4.17.15" + "@storybook/theming" "6.2.9" + "@types/reach__router" "^1.3.7" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.20" memoizerific "^1.11.3" + qs "^6.10.0" regenerator-runtime "^0.13.7" - store2 "^2.7.1" - telejson "^5.0.2" + store2 "^2.12.0" + telejson "^5.1.0" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/channel-postmessage@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.1.9.tgz#5d73c67ba94bcf68b14138bba6c5bb0850c72c5e" - integrity sha512-tX7pD9Xrf1WsatpJqtJ6o8MlgxG7jH+oFhNPkGvUbWiolVDQmuDndwM8Hh1kUnOWlyE1AN5hlM7av8MY+9D3NA== - dependencies: - "@storybook/channels" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/core-events" "6.1.9" - core-js "^3.0.1" - global "^4.3.2" - qs "^6.6.0" - telejson "^5.0.2" - -"@storybook/channels@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.1.9.tgz#94f07ff3615b11c07d1902be6b6cd298c0eea55c" - integrity sha512-aV+KsZPuoTtFKSMUkSCyVlVmtVHkSH35dSbyMazjlUD9cOLwkXB1s+LZL/GxxSR6a6uR75V0QWxItfNxaJETMQ== - dependencies: - core-js "^3.0.1" +"@storybook/builder-webpack4@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack4/-/builder-webpack4-6.2.9.tgz#dddff0b1b4590a7ba088ce13e7cc42e482f6455d" + integrity sha512-swECic1huVdj+B+iRJIQ8ds59HuPVE4fmhI+j/nhw0CQCsgAEKqDlOQVYEimW6nZX8GO4WxNm6tiiRzxixejbw== + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-decorators" "^7.12.12" + "@babel/plugin-proposal-export-default-from" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.12" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/preset-env" "^7.12.11" + "@babel/preset-react" "^7.12.10" + "@babel/preset-typescript" "^7.12.7" + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/channel-postmessage" "6.2.9" + "@storybook/channels" "6.2.9" + "@storybook/client-api" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/components" "6.2.9" + "@storybook/core-common" "6.2.9" + "@storybook/core-events" "6.2.9" + "@storybook/node-logger" "6.2.9" + "@storybook/router" "6.2.9" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.2.9" + "@storybook/ui" "6.2.9" + "@types/node" "^14.0.10" + "@types/webpack" "^4.41.26" + autoprefixer "^9.8.6" + babel-loader "^8.2.2" + babel-plugin-macros "^2.8.0" + babel-plugin-polyfill-corejs3 "^0.1.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + core-js "^3.8.2" + css-loader "^3.6.0" + dotenv-webpack "^1.8.0" + file-loader "^6.2.0" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^4.1.6" + fs-extra "^9.0.1" + glob "^7.1.6" + glob-promise "^3.4.0" + global "^4.4.0" + html-webpack-plugin "^4.0.0" + pnp-webpack-plugin "1.6.4" + postcss "^7.0.35" + postcss-flexbugs-fixes "^4.2.1" + postcss-loader "^4.2.0" + raw-loader "^4.0.2" + react-dev-utils "^11.0.3" + stable "^0.1.8" + style-loader "^1.3.0" + terser-webpack-plugin "^3.1.0" + ts-dedent "^2.0.0" + url-loader "^4.1.1" + util-deprecate "^1.0.2" + webpack "4" + webpack-dev-middleware "^3.7.3" + webpack-filter-warnings-plugin "^1.2.1" + webpack-hot-middleware "^2.25.0" + webpack-virtual-modules "^0.2.2" + +"@storybook/channel-postmessage@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.2.9.tgz#ad85573e0a5d6f0cde3504f168d87a73cb0b6269" + integrity sha512-OqV+gLeeCHR0KExsIz0B7gD17Cjd9D+I75qnBsLWM9inWO5kc/WZ5svw8Bvjlcm6snWpvxUaT8L+svuqcPSmww== + dependencies: + "@storybook/channels" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/core-events" "6.2.9" + core-js "^3.8.2" + global "^4.4.0" + qs "^6.10.0" + telejson "^5.1.0" + +"@storybook/channels@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.2.9.tgz#a9fd7f25102cbec15fb56f76abf891b7b214e9de" + integrity sha512-6dC8Fb2ipNyOQXnUZMDeEUaJGH5DMLzyHlGLhVyDtrO5WR6bO8mQdkzf4+5dSKXgCBNX0BSkssXth4pDjn18rg== + dependencies: + core-js "^3.8.2" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-api@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.1.9.tgz#d4a8d38bc657f26e4837831b961e085da1954d51" - integrity sha512-b2DFaGAS5G2ly3UJY5NJNXh/LxgLgSJLbqPL4t48MFW5XjH+rmEWXE9P+ujCaPclH1/y7mZRMprDj3ycDbRo3Q== +"@storybook/client-api@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.2.9.tgz#f0bb44e9b2692adfbf30d7ff751c6dd44bcfe1ce" + integrity sha512-aLvEUVkbvv6Qo/2mF4rFCecdqi2CGOUDdsV1a6EFIVS/9gXFdpirsOwKHo9qNjacGdWPlBYGCUcbrw+DvNaSFA== dependencies: - "@storybook/addons" "6.1.9" - "@storybook/channel-postmessage" "6.1.9" - "@storybook/channels" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/core-events" "6.1.9" + "@storybook/addons" "6.2.9" + "@storybook/channel-postmessage" "6.2.9" + "@storybook/channels" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/core-events" "6.2.9" "@storybook/csf" "0.0.1" - "@types/qs" "^6.9.0" - "@types/webpack-env" "^1.15.3" - core-js "^3.0.1" - global "^4.3.2" - lodash "^4.17.15" + "@types/qs" "^6.9.5" + "@types/webpack-env" "^1.16.0" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.20" memoizerific "^1.11.3" - qs "^6.6.0" + qs "^6.10.0" regenerator-runtime "^0.13.7" stable "^0.1.8" - store2 "^2.7.1" + store2 "^2.12.0" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-logger@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.1.9.tgz#1d61a64000d4691780d75e19b78fd44adfdb5d9c" - integrity sha512-i7Q2ky9+Jwv+wmnlOGxmDOEdmaTIB69OQnnZNWGKufOwoIMjn6QO0VifARyA9W++nNSijjJ5th84tLJALaoCTA== +"@storybook/client-logger@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.2.9.tgz#77c1ea39684ad2a2cf6836051b381fc5b354e132" + integrity sha512-IfOQZuvpjh66qBInQCJOb9S0dTGpzZ/Cxlcvokp+PYt95KztaWN3mPm+HaDQCeRsrWNe0Bpm1zuickcJ6dBOXg== dependencies: - core-js "^3.0.1" - global "^4.3.2" + core-js "^3.8.2" + global "^4.4.0" -"@storybook/components@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.1.9.tgz#f25d18f3a410cc7e9549ddb3c971c40d9108d4d8" - integrity sha512-cYYm3fHo9MW0bbl47lu1ncwulV7V9VEF8FC96uvys07oaCTFWKzQ0z/FD0nCqeK6eEz1+SEqnGwLFmOtqlRXDQ== +"@storybook/components@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.2.9.tgz#7189f9715b05720fe083ae8ad014849f14e98e73" + integrity sha512-hnV1MI2aB2g1sJ7NJphpxi7TwrMZQ/tpCJeHnkjmzyC6ez1MXqcBXGrEEdSXzRfAxjQTOEpu6H1mnns0xMP0Ag== dependencies: - "@popperjs/core" "^2.4.4" - "@storybook/client-logger" "6.1.9" + "@popperjs/core" "^2.6.0" + "@storybook/client-logger" "6.2.9" "@storybook/csf" "0.0.1" - "@storybook/theming" "6.1.9" - "@types/overlayscrollbars" "^1.9.0" - "@types/react-color" "^3.0.1" - "@types/react-syntax-highlighter" "11.0.4" - core-js "^3.0.1" - fast-deep-equal "^3.1.1" - global "^4.3.2" - lodash "^4.17.15" - markdown-to-jsx "^6.11.4" + "@storybook/theming" "6.2.9" + "@types/color-convert" "^2.0.0" + "@types/overlayscrollbars" "^1.12.0" + "@types/react-syntax-highlighter" "11.0.5" + color-convert "^2.0.1" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.20" + markdown-to-jsx "^7.1.0" memoizerific "^1.11.3" - overlayscrollbars "^1.10.2" - polished "^3.4.4" - react-color "^2.17.0" - react-popper-tooltip "^3.1.0" - react-syntax-highlighter "^13.5.0" - react-textarea-autosize "^8.1.1" + overlayscrollbars "^1.13.1" + polished "^4.0.5" + prop-types "^15.7.2" + react-colorful "^5.0.1" + react-popper-tooltip "^3.1.1" + react-syntax-highlighter "^13.5.3" + react-textarea-autosize "^8.3.0" + regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" + util-deprecate "^1.0.2" -"@storybook/core-events@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.1.9.tgz#0a88281837d1aa657a93a9abf7f5aad65b8d68e7" - integrity sha512-oOpqpjCTJCt0U5lnQ16OZU0iKIDh2/MIg4yrnDw+Pt6zGyX3zSvtB+9W8LQFnMwm+cXaNmiizGwt/W+4OiORjQ== +"@storybook/core-client@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-6.2.9.tgz#3f611947e64dee0a297e512ff974087bc52c1877" + integrity sha512-jW841J5lCe1Ub5ZMtzYPgCy/OUddFxxVYeHLZyuNxlH5RoiQQxbDpuFlzuZMYGuIzD6eZw+ANE4w5vW/y5oBfA== dependencies: - core-js "^3.0.1" + "@storybook/addons" "6.2.9" + "@storybook/channel-postmessage" "6.2.9" + "@storybook/client-api" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/core-events" "6.2.9" + "@storybook/csf" "0.0.1" + "@storybook/ui" "6.2.9" + ansi-to-html "^0.6.11" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.20" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + unfetch "^4.2.0" + util-deprecate "^1.0.2" -"@storybook/core@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.1.9.tgz#e6575e294cb4d2d9b57d5976a145cae8f4a88594" - integrity sha512-guz+R6eDX923Cw7NqgS5PrpTmmjDB+m5X1iF9pwKlpPTfzIiT/wTzJm4PwhFoGONNoXrItObX/6hW6OQbX4aOA== +"@storybook/core-common@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-6.2.9.tgz#54f8e005733d39c4cb90eec7c17f9ca4dcbeec5f" + integrity sha512-ve0Qb4EMit8jGibfZBprmaU2i4LtpB4vSMIzD9nB1YeBmw2cGhHubtmayZ0TwcV3fPQhtYH9wwRWuWyzzHyQyw== dependencies: - "@babel/core" "^7.12.3" + "@babel/core" "^7.12.10" "@babel/plugin-proposal-class-properties" "^7.12.1" - "@babel/plugin-proposal-decorators" "^7.12.1" + "@babel/plugin-proposal-decorators" "^7.12.12" "@babel/plugin-proposal-export-default-from" "^7.12.1" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" "@babel/plugin-proposal-object-rest-spread" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" "@babel/plugin-proposal-private-methods" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-transform-arrow-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.12" "@babel/plugin-transform-classes" "^7.12.1" "@babel/plugin-transform-destructuring" "^7.12.1" "@babel/plugin-transform-for-of" "^7.12.1" "@babel/plugin-transform-parameters" "^7.12.1" "@babel/plugin-transform-shorthand-properties" "^7.12.1" "@babel/plugin-transform-spread" "^7.12.1" - "@babel/plugin-transform-template-literals" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.1" - "@babel/preset-typescript" "^7.12.1" + "@babel/preset-env" "^7.12.11" + "@babel/preset-react" "^7.12.10" + "@babel/preset-typescript" "^7.12.7" "@babel/register" "^7.12.1" - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/channel-postmessage" "6.1.9" - "@storybook/channels" "6.1.9" - "@storybook/client-api" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/components" "6.1.9" - "@storybook/core-events" "6.1.9" - "@storybook/csf" "0.0.1" - "@storybook/node-logger" "6.1.9" - "@storybook/router" "6.1.9" + "@storybook/node-logger" "6.2.9" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.1.9" - "@storybook/ui" "6.1.9" "@types/glob-base" "^0.3.0" "@types/micromatch" "^4.0.1" - "@types/node-fetch" "^2.5.4" + "@types/node" "^14.0.10" + "@types/pretty-hrtime" "^1.0.0" + babel-loader "^8.2.2" + babel-plugin-macros "^3.0.1" + babel-plugin-polyfill-corejs3 "^0.1.0" + chalk "^4.1.0" + core-js "^3.8.2" + express "^4.17.1" + file-system-cache "^1.0.5" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.0.4" + glob "^7.1.6" + glob-base "^0.3.0" + interpret "^2.2.0" + json5 "^2.1.3" + lazy-universal-dotenv "^3.0.1" + micromatch "^4.0.2" + pkg-dir "^5.0.0" + pretty-hrtime "^1.0.3" + resolve-from "^5.0.0" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "4" + +"@storybook/core-events@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.2.9.tgz#4f12947cd15d1eb3c4109923657c012feef521cd" + integrity sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ== + dependencies: + core-js "^3.8.2" + +"@storybook/core-server@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-6.2.9.tgz#da8b7f043ff59ee6cd2e8631ba8d0f954fdc265a" + integrity sha512-DzihO73pj1Ro0Y4tq9hjw2mLMUYeSRPrx7CndCOBxcTHCKQ8Kd7Dee3wJ49t5/19V7TW1+4lYR59GAy73FeOAQ== + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/preset-react" "^7.12.10" + "@storybook/addons" "6.2.9" + "@storybook/builder-webpack4" "6.2.9" + "@storybook/core-client" "6.2.9" + "@storybook/core-common" "6.2.9" + "@storybook/node-logger" "6.2.9" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.2.9" + "@storybook/ui" "6.2.9" + "@types/node" "^14.0.10" + "@types/node-fetch" "^2.5.7" + "@types/pretty-hrtime" "^1.0.0" + "@types/webpack" "^4.41.26" airbnb-js-shims "^2.2.1" - ansi-to-html "^0.6.11" - autoprefixer "^9.7.2" - babel-loader "^8.0.6" - babel-plugin-emotion "^10.0.20" - babel-plugin-macros "^2.8.0" - babel-preset-minify "^0.5.0 || 0.6.0-alpha.5" - better-opn "^2.0.0" - boxen "^4.1.0" - case-sensitive-paths-webpack-plugin "^2.2.0" - chalk "^4.0.0" + babel-loader "^8.2.2" + better-opn "^2.1.1" + boxen "^4.2.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + chalk "^4.1.0" cli-table3 "0.6.0" - commander "^5.0.0" - core-js "^3.0.1" + commander "^6.2.1" + core-js "^3.8.2" cpy "^8.1.1" - css-loader "^3.5.3" + css-loader "^3.6.0" detect-port "^1.3.0" - dotenv-webpack "^1.7.0" - ejs "^3.1.2" - express "^4.17.0" - file-loader "^6.0.0" + dotenv-webpack "^1.8.0" + express "^4.17.1" + file-loader "^6.2.0" file-system-cache "^1.0.5" - find-up "^4.1.0" - fork-ts-checker-webpack-plugin "^4.1.4" - fs-extra "^9.0.0" - glob "^7.1.6" - glob-base "^0.3.0" - glob-promise "^3.4.0" - global "^4.3.2" - html-webpack-plugin "^4.2.1" - inquirer "^7.0.0" - interpret "^2.0.0" + find-up "^5.0.0" + fs-extra "^9.0.1" + global "^4.4.0" + html-webpack-plugin "^4.0.0" ip "^1.1.5" - json5 "^2.1.1" - lazy-universal-dotenv "^3.0.1" - micromatch "^4.0.2" - node-fetch "^2.6.0" - pkg-dir "^4.2.0" + node-fetch "^2.6.1" pnp-webpack-plugin "1.6.4" - postcss-flexbugs-fixes "^4.1.0" - postcss-loader "^3.0.0" pretty-hrtime "^1.0.3" - qs "^6.6.0" - raw-loader "^4.0.1" - react-dev-utils "^10.0.0" + prompts "^2.4.0" + read-pkg-up "^7.0.1" regenerator-runtime "^0.13.7" resolve-from "^5.0.0" serve-favicon "^2.5.0" - shelljs "^0.8.4" - stable "^0.1.8" - style-loader "^1.2.1" - telejson "^5.0.2" - terser-webpack-plugin "^3.0.0" + style-loader "^1.3.0" + telejson "^5.1.0" + terser-webpack-plugin "^3.1.0" ts-dedent "^2.0.0" - unfetch "^4.1.0" - url-loader "^4.0.0" + url-loader "^4.1.1" util-deprecate "^1.0.2" - webpack "^4.44.2" - webpack-dev-middleware "^3.7.0" - webpack-filter-warnings-plugin "^1.2.1" - webpack-hot-middleware "^2.25.0" + webpack "4" + webpack-dev-middleware "^3.7.3" webpack-virtual-modules "^0.2.2" +"@storybook/core@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.2.9.tgz#e32e72b3bdb44384f5f0ff93ad1a483acd033b4b" + integrity sha512-pzbyjWvj0t8m0kR2pC9GQne4sZn7Y/zfcbm6/31CL+yhzOQjfJEj3n4ZFUlxikXqQJPg1aWfypfyaeaLL0QyuA== + dependencies: + "@storybook/core-client" "6.2.9" + "@storybook/core-server" "6.2.9" + "@storybook/csf@0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" @@ -4068,74 +4163,81 @@ dependencies: lodash "^4.17.15" -"@storybook/node-logger@6.1.9", "@storybook/node-logger@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.1.9.tgz#c63a61f72209d76eeeffe9d151fec043864b9438" - integrity sha512-2gP9BSBXEOGIcUyzRdIkIJi1UEINUAIyuv9bfKODo4GfujRg7DLz/mpi/FdwmulGg/viXWSXa6ccb6ziIgY9RA== +"@storybook/node-logger@6.2.9", "@storybook/node-logger@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.2.9.tgz#c67d8d7684514b8d00207502e8a9adda0ee750e5" + integrity sha512-ryRBChWZf1A5hOVONErJZosS25IdMweoMVFAUAcj91iC0ynoSA6YL2jmoE71jQchxEXEgkDeRkX9lR/GlqFGZQ== dependencies: "@types/npmlog" "^4.1.2" - chalk "^4.0.0" - core-js "^3.0.1" + chalk "^4.1.0" + core-js "^3.8.2" npmlog "^4.1.2" pretty-hrtime "^1.0.3" -"@storybook/postinstall@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.1.9.tgz#1c62cf46b7b8c50e939c8b14de9e7133368aab45" - integrity sha512-9aL0+ALWHKGJAnC8CdRBE7PlX87sKMEWZkDQJL5uT1eikfgfAmS1AgkpIbFD8mcxstcZmFKRwc1BD4mvwzqtQQ== +"@storybook/postinstall@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.2.9.tgz#3573ca86a27e9628defdd3a2c64721ee9db359ce" + integrity sha512-HjAjXZV+WItonC7lVrfrUsQuRFZNz1g1lE0GgsEK2LdC5rAcD/JwJxjiWREwY+RGxKL9rpWgqyxVQajpIJRjhA== dependencies: - core-js "^3.0.1" + core-js "^3.8.2" -"@storybook/preset-create-react-app@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@storybook/preset-create-react-app/-/preset-create-react-app-3.1.4.tgz#64bb674f69fe860ef1a4909e686775adf6c05fdd" - integrity sha512-VwzGCvv+HnEDXxSwF6ITRIZ4EaMhiMu1Mxrwm+nb49XTT2VME8VTzmbDjrdpZXPXUJrwLYmvqzaBT/qGZoMlgA== +"@storybook/preset-create-react-app@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@storybook/preset-create-react-app/-/preset-create-react-app-3.1.7.tgz#e48df77768bdcc4863e3918c11965c45e4110ac8" + integrity sha512-SR+HGSWCrhHA5sszuIHJYdh2tWNi/zu858WB5RM74OBW4ogo8Bv4/7td4p53eWbdm0zBDbnKcrBmwRrAYqwL9Q== dependencies: + "@pmmmwh/react-refresh-webpack-plugin" "^0.4.3" "@types/babel__core" "^7.1.7" "@types/webpack" "^4.41.13" babel-plugin-react-docgen "^4.1.0" pnp-webpack-plugin "^1.6.4" - react-docgen-typescript-plugin "^0.5.0" + react-docgen-typescript-plugin "^0.6.2" semver "^7.3.2" -"@storybook/react@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.1.9.tgz#063427015b3d0ce582b1b6b7826d40d963d265ce" - integrity sha512-HJWHQE+eCC7sz1vqvgmBMn2sA1uc0ByEj+NeSgyi45jBFI+Ke4a8hxx6k5XA7k9gLznqG8TPGg0z6EdQTJTLkQ== +"@storybook/react@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.2.9.tgz#84f42b3d9a5c8de814f71ae186886076ba377d2c" + integrity sha512-glvw+o/Vek2oapYIXCYDK6gm3cuSnx0XdOpiJVcXk3KLb8JfLbdzGYYp6dcWUbyOBqGcGFRpXIgMmkcwgn+fvQ== dependencies: "@babel/preset-flow" "^7.12.1" - "@babel/preset-react" "^7.12.1" - "@pmmmwh/react-refresh-webpack-plugin" "^0.4.2" - "@storybook/addons" "6.1.9" - "@storybook/core" "6.1.9" - "@storybook/node-logger" "6.1.9" + "@babel/preset-react" "^7.12.10" + "@pmmmwh/react-refresh-webpack-plugin" "^0.4.3" + "@storybook/addons" "6.2.9" + "@storybook/core" "6.2.9" + "@storybook/core-common" "6.2.9" + "@storybook/node-logger" "6.2.9" "@storybook/semver" "^7.3.2" - "@types/webpack-env" "^1.15.3" + "@types/webpack-env" "^1.16.0" babel-plugin-add-react-displayname "^0.0.5" babel-plugin-named-asset-import "^0.3.1" babel-plugin-react-docgen "^4.2.1" - core-js "^3.0.1" - global "^4.3.2" - lodash "^4.17.15" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.20" prop-types "^15.7.2" - react-dev-utils "^10.0.0" + react-dev-utils "^11.0.3" react-docgen-typescript-plugin "^0.6.2" react-refresh "^0.8.3" + read-pkg-up "^7.0.1" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" - webpack "^4.44.2" + webpack "4" -"@storybook/router@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.1.9.tgz#c0b24dc3ab53d58541b81c7abea2f11d7fbbebf6" - integrity sha512-kIlmSFBnqI198oMCncFZR7MxoV5/kP6KS0paFcyu1XE1zO2ovV6eQZ8pPpOjSsD/ISu4Y44uE+ZDNsEehjj6GQ== +"@storybook/router@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.2.9.tgz#547543031dd8330870bb6b473dcf7e51982e841c" + integrity sha512-7Bn1OFoItCl8whXRT8N1qp1Lky7kzXJ3aslWp5E8HcM8rxh4OYXfbaeiyJEJxBTGC5zxgY+tAEXHFjsAviFROg== dependencies: - "@reach/router" "^1.3.3" - "@types/reach__router" "^1.3.5" - core-js "^3.0.1" - global "^4.3.2" + "@reach/router" "^1.3.4" + "@storybook/client-logger" "6.2.9" + "@types/reach__router" "^1.3.7" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.20" memoizerific "^1.11.3" - qs "^6.6.0" + qs "^6.10.0" + ts-dedent "^2.0.0" "@storybook/semver@^7.3.2": version "7.3.2" @@ -4145,76 +4247,74 @@ core-js "^3.6.5" find-up "^4.1.0" -"@storybook/source-loader@6.1.9", "@storybook/source-loader@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.1.9.tgz#10eebf12ecd7baa70e51f368c41b89b4b5084eb1" - integrity sha512-2h3TS1O9qJ0xmOOJrWxY9ODEFK0/RLxEmWcXngWAcH1ZrHAuz6UcEatO2bIgykrorf9xKqqk7/AYyE9KxW668A== +"@storybook/source-loader@6.2.9", "@storybook/source-loader@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.2.9.tgz#ac6b314e48044acad5318d237275b24e684edb9f" + integrity sha512-cx499g7BG2oeXvRFx45r0W0p2gKEy/e88WsUFnqqfMKZBJ8K0R/lx5DI0l1hq+TzSrE6uGe0/uPlaLkJNIro7g== dependencies: - "@storybook/addons" "6.1.9" - "@storybook/client-logger" "6.1.9" + "@storybook/addons" "6.2.9" + "@storybook/client-logger" "6.2.9" "@storybook/csf" "0.0.1" - core-js "^3.0.1" - estraverse "^4.2.0" - global "^4.3.2" + core-js "^3.8.2" + estraverse "^5.2.0" + global "^4.4.0" loader-utils "^2.0.0" - lodash "^4.17.15" - prettier "~2.0.5" + lodash "^4.17.20" + prettier "~2.2.1" regenerator-runtime "^0.13.7" - source-map "^0.7.3" -"@storybook/theming@6.1.9", "@storybook/theming@^6.0.28": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.1.9.tgz#8c584aa623f3d6e33b1e3b3de2ec1f41bdc5d9ab" - integrity sha512-orzMQkyEhAQEi0E9iwmUkzh5yPHoYGBz17t2aydDeT6oGKii6if8Mq2oPVycfVKZ84QO7GFAS9q1nVCRcuD8oA== +"@storybook/theming@6.2.9", "@storybook/theming@^6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.2.9.tgz#16bf40180861f222c7ed1d80abd5d1e3cb315660" + integrity sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA== dependencies: "@emotion/core" "^10.1.1" "@emotion/is-prop-valid" "^0.8.6" - "@emotion/styled" "^10.0.23" - "@storybook/client-logger" "6.1.9" - core-js "^3.0.1" + "@emotion/styled" "^10.0.27" + "@storybook/client-logger" "6.2.9" + core-js "^3.8.2" deep-object-diff "^1.1.0" - emotion-theming "^10.0.19" - global "^4.3.2" + emotion-theming "^10.0.27" + global "^4.4.0" memoizerific "^1.11.3" - polished "^3.4.4" + polished "^4.0.5" resolve-from "^5.0.0" ts-dedent "^2.0.0" -"@storybook/ui@6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.1.9.tgz#1ed3168d9fe5827285c13d8507dd1fd872830542" - integrity sha512-4MK5iTf7kI5DYVeWRiD6lkXdd0S6eiQJu9lvWqMOQJLOH5Bq77g0Ejo+38RTEQpV6we7hCPWWnRXQBjmJ2+19w== +"@storybook/ui@6.2.9": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.2.9.tgz#25cdf7ae2ef38ab337570c2377fda1da999792e7" + integrity sha512-jq2xmw3reIqik/6ibUSbNKGR+Xvr9wkAEwexiOl+5WQ5BeYJpw4dmDmsFQf+SQuWaSEUUPolbzkakRQM778Kdg== dependencies: "@emotion/core" "^10.1.1" - "@storybook/addons" "6.1.9" - "@storybook/api" "6.1.9" - "@storybook/channels" "6.1.9" - "@storybook/client-logger" "6.1.9" - "@storybook/components" "6.1.9" - "@storybook/core-events" "6.1.9" - "@storybook/router" "6.1.9" + "@storybook/addons" "6.2.9" + "@storybook/api" "6.2.9" + "@storybook/channels" "6.2.9" + "@storybook/client-logger" "6.2.9" + "@storybook/components" "6.2.9" + "@storybook/core-events" "6.2.9" + "@storybook/router" "6.2.9" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.1.9" - "@types/markdown-to-jsx" "^6.11.0" - copy-to-clipboard "^3.0.8" - core-js "^3.0.1" - core-js-pure "^3.0.1" - downshift "^6.0.6" - emotion-theming "^10.0.19" + "@storybook/theming" "6.2.9" + "@types/markdown-to-jsx" "^6.11.3" + copy-to-clipboard "^3.3.1" + core-js "^3.8.2" + core-js-pure "^3.8.2" + downshift "^6.0.15" + emotion-theming "^10.0.27" fuse.js "^3.6.1" - global "^4.3.2" - lodash "^4.17.15" + global "^4.4.0" + lodash "^4.17.20" markdown-to-jsx "^6.11.4" memoizerific "^1.11.3" - polished "^3.4.4" - qs "^6.6.0" - react-draggable "^4.0.3" - react-helmet-async "^1.0.2" - react-hotkeys "2.0.0" - react-sizeme "^2.6.7" + polished "^4.0.5" + qs "^6.10.0" + react-draggable "^4.4.3" + react-helmet-async "^1.0.7" + react-sizeme "^3.0.1" regenerator-runtime "^0.13.7" resolve-from "^5.0.0" - store2 "^2.7.1" + store2 "^2.12.0" "@surma/rollup-plugin-off-main-thread@^1.1.1": version "1.4.2" @@ -4454,6 +4554,18 @@ "@types/node" "*" "@types/responselike" "*" +"@types/color-convert@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22" + integrity sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ== + dependencies: + "@types/color-name" "*" + +"@types/color-name@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/connect@*": version "3.4.33" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" @@ -4525,11 +4637,6 @@ dependencies: "@types/unist" "*" -"@types/history@*": - version "4.7.8" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" - integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== - "@types/html-minifier-terser@^5.0.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" @@ -4572,7 +4679,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@*": +"@types/json-schema@*", "@types/json-schema@^7.0.4": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== @@ -4594,7 +4701,7 @@ dependencies: "@types/node" "*" -"@types/markdown-to-jsx@^6.11.0": +"@types/markdown-to-jsx@^6.11.3": version "6.11.3" resolved "https://registry.yarnpkg.com/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.3.tgz#cdd1619308fecbc8be7e6a26f3751260249b020e" integrity sha512-30nFYpceM/ZEvhGiqWjm5quLUxNeld0HCzJEXMZZDpq53FPkS85mTwkWtCXzCqq8s5JYLgM5W392a02xn8Bdaw== @@ -4630,10 +4737,10 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= -"@types/node-fetch@^2.5.4": - version "2.5.7" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" - integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== +"@types/node-fetch@^2.5.7": + version "2.5.10" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.10.tgz#9b4d4a0425562f9fcea70b12cb3fcdd946ca8132" + integrity sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ== dependencies: "@types/node" "*" form-data "^3.0.0" @@ -4648,6 +4755,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.5.tgz#fecad41c041cae7f2404ad4b2d0742fdb628b305" integrity sha512-jVFzDV6NTbrLMxm4xDSIW/gKnk8rQLF9wAzLWIOg+5nU6ACrIMndeBdXci0FGtqJbP9tQvm6V39eshc96TO2wQ== +"@types/node@^14.0.10": + version "14.17.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.0.tgz#3ba770047723b3eeb8dc9fca02cce8a7fb6378da" + integrity sha512-w8VZUN/f7SSbvVReb9SWp6cJFevxb4/nkG65yLAya//98WgocKm5PLDAtSs5CtJJJM+kHmJjO/6mmYW4MHShZA== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -4658,7 +4770,7 @@ resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.2.tgz#d070fe6a6b78755d1092a3dc492d34c3d8f871c4" integrity sha512-4QQmOF5KlwfxJ5IGXFIudkeLCdMABz03RcUXu+LCb24zmln8QW6aDjuGl4d4XPVLf2j+FnjelHTP7dvceAFbhA== -"@types/overlayscrollbars@^1.9.0": +"@types/overlayscrollbars@^1.12.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@types/overlayscrollbars/-/overlayscrollbars-1.12.0.tgz#98456caceca8ad73bd5bb572632a585074e70764" integrity sha512-h/pScHNKi4mb+TrJGDon8Yb06ujFG0mSg12wIO0sWMUF3dQIe2ExRRdNRviaNt9IjxIiOfnRr7FsQAdHwK4sMg== @@ -4678,6 +4790,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.5.tgz#b6ab3bba29e16b821d84e09ecfaded462b816b00" integrity sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ== +"@types/pretty-hrtime@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.0.tgz#c5a2d644a135e988b2932f99737e67b3c62528d0" + integrity sha512-xl+5r2rcrxdLViAYkkiLMYsoUs3qEyrAnHFyEzYysgRxdVp3WbhysxIvJIxZp9FvZ2CYezh0TaHZorivH+voOQ== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -4688,36 +4805,32 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== -"@types/qs@*", "@types/qs@^6.9.0": +"@types/qs@*": version "6.9.5" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ== +"@types/qs@^6.9.5": + version "6.9.6" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" + integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== + "@types/range-parser@*": version "1.2.3" resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/reach__router@^1.3.5": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.6.tgz#413417ce74caab331c70ce6a03a4c825188e4709" - integrity sha512-RHYataCUPQnt+GHoASyRLq6wmZ0n8jWlBW8Lxcwd30NN6vQfbmTeoSDfkgxO0S1lEzArp8OFDsq5KIs7FygjtA== - dependencies: - "@types/history" "*" - "@types/react" "*" - -"@types/react-color@^3.0.1": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/react-color/-/react-color-3.0.4.tgz#c63daf012ad067ac0127bdd86725f079d02082bd" - integrity sha512-EswbYJDF1kkrx93/YU+BbBtb46CCtDMvTiGmcOa/c5PETnwTiSWoseJ1oSWeRl/4rUXkhME9bVURvvPg0W5YQw== +"@types/reach__router@^1.3.7": + version "1.3.7" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.7.tgz#de8ab374259ae7f7499fc1373b9697a5f3cd6428" + integrity sha512-cyBEb8Ef3SJNH5NYEIDGPoMMmYUxROatuxbICusVRQIqZUB85UCt6R2Ok60tKS/TABJsJYaHyNTW3kqbpxlMjg== dependencies: "@types/react" "*" - "@types/reactcss" "*" -"@types/react-syntax-highlighter@11.0.4": - version "11.0.4" - resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz#d86d17697db62f98046874f62fdb3e53a0bbc4cd" - integrity sha512-9GfTo3a0PHwQeTVoqs0g5bS28KkSY48pp5659wA+Dp4MqceDEa8EHBqrllJvvtyusszyJhViUEap0FDvlk/9Zg== +"@types/react-syntax-highlighter@11.0.5": + version "11.0.5" + resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz#0d546261b4021e1f9d85b50401c0a42acb106087" + integrity sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg== dependencies: "@types/react" "*" @@ -4729,13 +4842,6 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/reactcss@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/reactcss/-/reactcss-1.2.3.tgz#af28ae11bbb277978b99d04d1eedfd068ca71834" - integrity sha512-d2gQQ0IL6hXLnoRfVYZukQNWHuVsE75DzFTLPUuyyEhJS8G2VvlE+qfQQ91SJjaMqlURRCNIsX7Jcsw6cEuJlA== - dependencies: - "@types/react" "*" - "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -4773,6 +4879,11 @@ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== +"@types/tapable@^1": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" + integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== + "@types/testing-library__jest-dom@^5.9.1": version "5.9.5" resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz#5bf25c91ad2d7b38f264b12275e5c92a66d849b0" @@ -4792,7 +4903,7 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== -"@types/webpack-env@^1.15.3": +"@types/webpack-env@^1.16.0": version "1.16.0" resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.0.tgz#8c0a9435dfa7b3b1be76562f3070efb3f92637b4" integrity sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== @@ -4818,6 +4929,18 @@ "@types/webpack-sources" "*" source-map "^0.6.0" +"@types/webpack@^4.41.26": + version "4.41.29" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.29.tgz#2e66c1de8223c440366469415c50a47d97625773" + integrity sha512-6pLaORaVNZxiB3FSHbyBiWM7QdazAWda1zvAq4SbZObZqHSDbWLi62iFdblVea6SK9eyBIVp5yHhKt/yNQdR7Q== + dependencies: + "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + anymatch "^3.0.0" + source-map "^0.6.0" + "@types/webpack@^4.41.8": version "4.41.25" resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.25.tgz#4d3b5aecc4e44117b376280fbfd2dc36697968c4" @@ -5293,12 +5416,12 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-jsx@^5.1.0, acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: +acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn-walk@^7.0.0, acorn-walk@^7.1.1: +acorn-walk@^7.1.1, acorn-walk@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== @@ -5308,7 +5431,7 @@ 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.0, acorn@^7.1.1, acorn@^7.4.0, acorn@^7.4.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -5398,7 +5521,7 @@ ajv@6.5.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -5494,11 +5617,6 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -5533,6 +5651,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + anymatch@^3.0.3, anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -5820,11 +5946,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@0.9.x: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= - async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -5852,7 +5973,7 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.6.1, autoprefixer@^9.7.2: +autoprefixer@^9.6.1, autoprefixer@^9.8.6: version "9.8.6" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== @@ -5885,15 +6006,6 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - babel-eslint@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" @@ -5913,41 +6025,6 @@ babel-extract-comments@^1.0.0: dependencies: babylon "^6.18.0" -babel-helper-evaluate-path@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz#a62fa9c4e64ff7ea5cea9353174ef023a900a67c" - integrity sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA== - -babel-helper-flip-expressions@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz#3696736a128ac18bc25254b5f40a22ceb3c1d3fd" - integrity sha1-NpZzahKKwYvCUlS19AoizrPB0/0= - -babel-helper-is-nodes-equiv@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" - integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ= - -babel-helper-is-void-0@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz#7d9c01b4561e7b95dbda0f6eee48f5b60e67313e" - integrity sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4= - -babel-helper-mark-eval-scopes@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz#d244a3bef9844872603ffb46e22ce8acdf551562" - integrity sha1-0kSjvvmESHJgP/tG4izorN9VFWI= - -babel-helper-remove-or-void@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz#a4f03b40077a0ffe88e45d07010dee241ff5ae60" - integrity sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA= - -babel-helper-to-multiple-sequence-expressions@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d" - integrity sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA== - babel-jest@^26.6.0, babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -5962,7 +6039,7 @@ babel-jest@^26.6.0, babel-jest@^26.6.3: graceful-fs "^4.2.4" slash "^3.0.0" -babel-loader@8.1.0, babel-loader@^8.1.0: +babel-loader@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== @@ -5973,7 +6050,7 @@ babel-loader@8.1.0, babel-loader@^8.1.0: pify "^4.0.1" schema-utils "^2.6.5" -babel-loader@^8.0.6: +babel-loader@^8.2.2: version "8.2.2" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== @@ -5988,13 +6065,13 @@ babel-plugin-add-react-displayname@^0.0.5: resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" integrity sha1-M51M3be2X9YtHfnbn+BN4TQSK9U= -babel-plugin-apply-mdx-type-prop@1.6.21: - version "1.6.21" - resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.21.tgz#0c8600c965ca4203e3c026ed971ed5b7e810aeba" - integrity sha512-+vQarmm+g+kePH4CMp2iEN/HOx1oEvZeSKCdKCEZlnJOthXzkpaRAbM3ZNCiKqVr9WuoqPNfoXQ0EVppYpIwfg== +babel-plugin-apply-mdx-type-prop@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" + integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" - "@mdx-js/util" "1.6.21" + "@mdx-js/util" "1.6.22" babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" @@ -6003,7 +6080,7 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-emotion@^10.0.20, babel-plugin-emotion@^10.0.27: +babel-plugin-emotion@^10.0.27: version "10.0.33" resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" integrity sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ== @@ -6019,10 +6096,10 @@ babel-plugin-emotion@^10.0.20, babel-plugin-emotion@^10.0.27: find-root "^1.1.0" source-map "^0.5.7" -babel-plugin-extract-import-names@1.6.21: - version "1.6.21" - resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.21.tgz#94efffee4ea79982491573e5f67d9957ab77596a" - integrity sha512-mCjTry00HB/4xHGunxQNMOGZ7JEGJdEScNh7C1WJBto7nePyn9wCdYAZP61pGC6+z3ETH5btY20mqg0plcxZGA== +babel-plugin-extract-import-names@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" + integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" @@ -6056,88 +6133,21 @@ babel-plugin-macros@2.8.0, babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.8. cosmiconfig "^6.0.0" resolve "^1.12.0" -babel-plugin-minify-builtins@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz#31eb82ed1a0d0efdc31312f93b6e4741ce82c36b" - integrity sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag== - -babel-plugin-minify-constant-folding@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz#f84bc8dbf6a561e5e350ff95ae216b0ad5515b6e" - integrity sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ== - dependencies: - babel-helper-evaluate-path "^0.5.0" - -babel-plugin-minify-dead-code-elimination@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz#1a0c68e44be30de4976ca69ffc535e08be13683f" - integrity sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg== - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-mark-eval-scopes "^0.4.3" - babel-helper-remove-or-void "^0.4.3" - lodash "^4.17.11" - -babel-plugin-minify-flip-comparisons@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz#00ca870cb8f13b45c038b3c1ebc0f227293c965a" - integrity sha1-AMqHDLjxO0XAOLPB68DyJyk8llo= - dependencies: - babel-helper-is-void-0 "^0.4.3" - -babel-plugin-minify-guarded-expressions@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz#818960f64cc08aee9d6c75bec6da974c4d621135" - integrity sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA== - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-flip-expressions "^0.4.3" - -babel-plugin-minify-infinity@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz#dfb876a1b08a06576384ef3f92e653ba607b39ca" - integrity sha1-37h2obCKBldjhO8/kuZTumB7Oco= - -babel-plugin-minify-mangle-names@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz#bcddb507c91d2c99e138bd6b17a19c3c271e3fd3" - integrity sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw== - dependencies: - babel-helper-mark-eval-scopes "^0.4.3" - -babel-plugin-minify-numeric-literals@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz#8e4fd561c79f7801286ff60e8c5fd9deee93c0bc" - integrity sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw= - -babel-plugin-minify-replace@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz#d3e2c9946c9096c070efc96761ce288ec5c3f71c" - integrity sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q== - -babel-plugin-minify-simplify@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz#f21613c8b95af3450a2ca71502fdbd91793c8d6a" - integrity sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A== - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-flip-expressions "^0.4.3" - babel-helper-is-nodes-equiv "^0.0.1" - babel-helper-to-multiple-sequence-expressions "^0.5.0" - -babel-plugin-minify-type-constructors@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz#1bc6f15b87f7ab1085d42b330b717657a2156500" - integrity sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA= +babel-plugin-macros@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: - babel-helper-is-void-0 "^0.4.3" + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" babel-plugin-named-asset-import@^0.3.1, babel-plugin-named-asset-import@^0.3.7: version "0.3.7" resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== -babel-plugin-polyfill-corejs2@^0.2.0: +babel-plugin-polyfill-corejs2@^0.2.0, babel-plugin-polyfill-corejs2@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.1.tgz#ae2cf6d6f1aa7c0edcf04a25180e8856a6d1184f" integrity sha512-hXGSPbr6IbjeMyGew+3uGIAkRjBFSOJ9FLDZNOfHuyJZCcoia4nd/72J0bSgvfytcVfUcP/dxEVcUhVJuQRtSw== @@ -6146,6 +6156,14 @@ babel-plugin-polyfill-corejs2@^0.2.0: "@babel/helper-define-polyfill-provider" "^0.2.1" semver "^6.1.1" +babel-plugin-polyfill-corejs3@^0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" + integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.1.5" + core-js-compat "^3.8.1" + babel-plugin-polyfill-corejs3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.1.tgz#786f40218040030f0edecfd48e6e59f1ee9bef53" @@ -6154,7 +6172,7 @@ babel-plugin-polyfill-corejs3@^0.2.0: "@babel/helper-define-polyfill-provider" "^0.2.1" core-js-compat "^3.9.1" -babel-plugin-polyfill-regenerator@^0.2.0: +babel-plugin-polyfill-regenerator@^0.2.0, babel-plugin-polyfill-regenerator@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.1.tgz#ca9595d7d5f3afefec2d83126148b90db751a091" integrity sha512-T3bYyL3Sll2EtC94v3f+fA8M28q7YPTOZdB++SRHjvYZTvtd+WorMUq3tDTD4Q7Kjk1LG0gGromslKjcO5p2TA== @@ -6189,26 +6207,6 @@ babel-plugin-syntax-object-rest-spread@^6.8.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= -babel-plugin-transform-inline-consecutive-adds@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz#323d47a3ea63a83a7ac3c811ae8e6941faf2b0d1" - integrity sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE= - -babel-plugin-transform-member-expression-literals@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz#37039c9a0c3313a39495faac2ff3a6b5b9d038bf" - integrity sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8= - -babel-plugin-transform-merge-sibling-variables@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz#85b422fc3377b449c9d1cde44087203532401dae" - integrity sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4= - -babel-plugin-transform-minify-booleans@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz#acbb3e56a3555dd23928e4b582d285162dd2b198" - integrity sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg= - babel-plugin-transform-object-rest-spread@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" @@ -6217,50 +6215,11 @@ babel-plugin-transform-object-rest-spread@^6.26.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.26.0" -babel-plugin-transform-property-literals@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz#98c1d21e255736573f93ece54459f6ce24985d39" - integrity sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk= - dependencies: - esutils "^2.0.2" - babel-plugin-transform-react-remove-prop-types@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== -babel-plugin-transform-regexp-constructors@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz#58b7775b63afcf33328fae9a5f88fbd4fb0b4965" - integrity sha1-WLd3W2OvzzMyj66aX4j71PsLSWU= - -babel-plugin-transform-remove-console@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780" - integrity sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A= - -babel-plugin-transform-remove-debugger@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz#42b727631c97978e1eb2d199a7aec84a18339ef2" - integrity sha1-QrcnYxyXl44estGZp67IShgznvI= - -babel-plugin-transform-remove-undefined@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz#80208b31225766c630c97fa2d288952056ea22dd" - integrity sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ== - dependencies: - babel-helper-evaluate-path "^0.5.0" - -babel-plugin-transform-simplify-comparison-operators@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz#f62afe096cab0e1f68a2d753fdf283888471ceb9" - integrity sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk= - -babel-plugin-transform-undefined-to-void@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" - integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA= - babel-preset-current-node-syntax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" @@ -6287,35 +6246,6 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" -"babel-preset-minify@^0.5.0 || 0.6.0-alpha.5": - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz#25f5d0bce36ec818be80338d0e594106e21eaa9f" - integrity sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg== - dependencies: - babel-plugin-minify-builtins "^0.5.0" - babel-plugin-minify-constant-folding "^0.5.0" - babel-plugin-minify-dead-code-elimination "^0.5.1" - babel-plugin-minify-flip-comparisons "^0.4.3" - babel-plugin-minify-guarded-expressions "^0.4.4" - babel-plugin-minify-infinity "^0.4.3" - babel-plugin-minify-mangle-names "^0.5.0" - babel-plugin-minify-numeric-literals "^0.4.3" - babel-plugin-minify-replace "^0.5.0" - babel-plugin-minify-simplify "^0.5.1" - babel-plugin-minify-type-constructors "^0.4.3" - babel-plugin-transform-inline-consecutive-adds "^0.4.3" - babel-plugin-transform-member-expression-literals "^6.9.4" - babel-plugin-transform-merge-sibling-variables "^6.9.4" - babel-plugin-transform-minify-booleans "^6.9.4" - babel-plugin-transform-property-literals "^6.9.4" - babel-plugin-transform-regexp-constructors "^0.4.3" - babel-plugin-transform-remove-console "^6.9.4" - babel-plugin-transform-remove-debugger "^6.9.4" - babel-plugin-transform-remove-undefined "^0.5.0" - babel-plugin-transform-simplify-comparison-operators "^6.9.4" - babel-plugin-transform-undefined-to-void "^6.9.4" - lodash "^4.17.11" - babel-preset-react-app@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz#689b60edc705f8a70ce87f47ab0e560a317d7045" @@ -6400,7 +6330,7 @@ before-after-hook@^2.0.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== -better-opn@^2.0.0: +better-opn@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== @@ -6500,7 +6430,7 @@ boxen@1.3.0: term-size "^1.2.0" widest-line "^2.0.0" -boxen@^4.1.0: +boxen@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== @@ -6616,16 +6546,6 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" - integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== - dependencies: - caniuse-lite "^1.0.30001035" - electron-to-chromium "^1.3.378" - node-releases "^1.1.52" - pkg-up "^3.1.0" - browserslist@4.14.2: version "4.14.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" @@ -6947,7 +6867,7 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== -caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157: +caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157: version "1.0.30001161" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001161.tgz#64f7ffe79ee780b8c92843ff34feb36cea4651e0" integrity sha512-JharrCDxOqPLBULF9/SPa6yMcBRTjZARJ6sc3cuKrPfyIk64JN6kuMINWqA99Xc8uElMFcROliwtz0n9pYej+g== @@ -6964,11 +6884,16 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -case-sensitive-paths-webpack-plugin@2.3.0, case-sensitive-paths-webpack-plugin@^2.2.0: +case-sensitive-paths-webpack-plugin@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== +case-sensitive-paths-webpack-plugin@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -6997,17 +6922,6 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.3. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" @@ -7073,7 +6987,7 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.3.0, chokidar@^3.4.1: +chokidar@^3.4.1: version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== @@ -7088,6 +7002,21 @@ chokidar@^3.3.0, chokidar@^3.4.1: optionalDependencies: fsevents "~2.1.2" +chokidar@^3.4.2: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + chownr@^1.1.1, chownr@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -7382,16 +7311,16 @@ commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - commander@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -7455,10 +7384,10 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" -compute-scroll-into-view@^1.0.14: - version "1.0.16" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz#5b7bf4f7127ea2c19b750353d7ce6776a90ee088" - integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ== +compute-scroll-into-view@^1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" + integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== concat-map@0.0.1: version "0.0.1" @@ -7677,7 +7606,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-to-clipboard@^3.0.8: +copy-to-clipboard@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== @@ -7692,7 +7621,7 @@ core-js-compat@^3.6.2, core-js-compat@^3.7.0: browserslist "^4.14.7" semver "7.0.0" -core-js-compat@^3.9.0, core-js-compat@^3.9.1: +core-js-compat@^3.8.1, core-js-compat@^3.9.0, core-js-compat@^3.9.1: version "3.12.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.12.1.tgz#2c302c4708505fa7072b0adb5156d26f7801a18b" integrity sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ== @@ -7705,10 +7634,10 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== -core-js-pure@^3.0.1: - version "3.8.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.0.tgz#4cdd2eca37d49cda206b66e26204818dba77884a" - integrity sha512-fRjhg3NeouotRoIV0L1FdchA6CK7ZD+lyINyMoz19SyV+ROpC4noS1xItWHFtwZdlqfMfVPJEyEGdfri2bD1pA== +core-js-pure@^3.8.2: + version "3.12.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.12.1.tgz#934da8b9b7221e2a2443dc71dfa5bd77a7ea00b8" + integrity sha512-1cch+qads4JnDSWsvc7d6nzlKAippwjUlf6vykkTLW53VSV+NkE6muGBToAjEA8pG90cSfcud3JgVmW2ds5TaQ== core-js@^1.0.0: version "1.2.7" @@ -7720,11 +7649,16 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.0.1, core-js@^3.0.4, core-js@^3.6.5: +core-js@^3.0.4, core-js@^3.6.5: version "3.8.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.0.tgz#0fc2d4941cadf80538b030648bb64d230b4da0ce" integrity sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA== +core-js@^3.8.2: + version "3.12.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.12.1.tgz#6b5af4ff55616c08a44d386f1f510917ff204112" + integrity sha512-Ne9DKPHTObRuB09Dru5AjwKjY4cJHVGu+y5f7coGn1E9Grkc3p2iBwE9AI/nJzsE29mQF7oq+mhYYRqOMFN1Bw== + 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" @@ -7846,15 +7780,6 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -7941,7 +7866,7 @@ css-loader@4.3.0: schema-utils "^2.7.1" semver "^7.3.2" -css-loader@^3.5.3: +css-loader@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== @@ -8431,10 +8356,10 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detab@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.3.tgz#33e5dd74d230501bd69985a0d2b9a3382699a130" - integrity sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A== +detab@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" + integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== dependencies: repeat-string "^1.5.4" @@ -8496,14 +8421,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" @@ -8664,7 +8581,7 @@ dotenv-expand@5.1.0, dotenv-expand@^5.1.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv-webpack@^1.7.0: +dotenv-webpack@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz#7ca79cef2497dd4079d43e81e0796bc9d0f68a5e" integrity sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg== @@ -8681,15 +8598,15 @@ dotenv@^6.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== -downshift@^6.0.6: - version "6.0.6" - resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.0.6.tgz#82aee8e2e260d7ad99df8a0969bd002dd523abe8" - integrity sha512-tmLab3cXCn6PtZYl9V8r/nB2m+7/nCNrwo0B3kTHo/2lRBHr+1en1VNOQt2wIt0ajanAnxquZ00WPCyxe6cNFQ== +downshift@^6.0.15: + version "6.1.3" + resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.1.3.tgz#e794b7805d24810968f21e81ad6bdd9f3fdc40da" + integrity sha512-RA1MuaNcTbt0j+sVLhSs8R2oZbBXYAtdQP/V+uHhT3DoDteZzJPjlC+LQVm9T07Wpvo84QXaZtUCePLDTDwGXg== dependencies: - "@babel/runtime" "^7.11.2" - compute-scroll-into-view "^1.0.14" + "@babel/runtime" "^7.13.10" + compute-scroll-into-view "^1.0.17" prop-types "^15.7.2" - react-is "^16.13.1" + react-is "^17.0.2" duplexer@^0.1.1: version "0.1.2" @@ -8724,18 +8641,6 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -ejs@^3.1.2: - version "3.1.5" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b" - integrity sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w== - dependencies: - jake "^10.6.1" - -electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.591: - version "1.3.610" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.610.tgz#1254eb394acd220a836ea1f203f8cded4e487052" - integrity sha512-eFDC+yVQpEhtlapk4CYDPfV9ajF9cEof5TBcO49L1ETO+aYogrKWDmYpZyxBScMNe8Bo/gJamH4amQ4yyvXg4g== - electron-to-chromium@^1.3.564: version "1.3.591" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.591.tgz#a18892bf1acb93f7b6e4da402705d564bc235017" @@ -8746,15 +8651,20 @@ electron-to-chromium@^1.3.585: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.589.tgz#bd26183ed8697dde6ac19acbc16a3bf33b1f8220" integrity sha512-rQItBTFnol20HaaLm26UgSUduX7iGerwW7pEYX17MB1tI6LzFajiLV7iZ7LVcUcsN/7HrZUoCLrBauChy/IqEg== +electron-to-chromium@^1.3.591: + version "1.3.610" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.610.tgz#1254eb394acd220a836ea1f203f8cded4e487052" + integrity sha512-eFDC+yVQpEhtlapk4CYDPfV9ajF9cEof5TBcO49L1ETO+aYogrKWDmYpZyxBScMNe8Bo/gJamH4amQ4yyvXg4g== + electron-to-chromium@^1.3.723: version "1.3.735" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.735.tgz#fa1a8660f2790662291cb2136f0e446a444cdfdc" integrity sha512-cp7MWzC3NseUJV2FJFgaiesdrS+A8ZUjX5fLAxdRlcaPDkaPGFplX930S5vf84yqDp4LjuLdKouWuVOTwUfqHQ== -element-resize-detector@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.1.tgz#b0305194447a4863155e58f13323a0aef30851d1" - integrity sha512-BdFsPepnQr9fznNPF9nF4vQ457U/ZJXQDSNF1zBe7yaga8v9AdZf3/NElYxFdUh7SitSGt040QygiTo6dtatIw== +element-resize-detector@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.2.tgz#bf7c3ff915957e4e62e86241ed2f9c86b078892b" + integrity sha512-+LOXRkCJc4I5WhEJxIDjhmE3raF8jtOMBDqSCgZTMz2TX3oXAX5pE2+MDeopJlGdXzP7KzPbBJaUGfNaP9HG4A== dependencies: batch-processor "1.0.0" @@ -8821,7 +8731,7 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -emotion-theming@^10.0.19: +emotion-theming@^10.0.27: version "10.0.27" resolved "https://registry.yarnpkg.com/emotion-theming/-/emotion-theming-10.0.27.tgz#1887baaec15199862c89b1b984b79806f2b9ab10" integrity sha512-MlF1yu/gYh8u+sLUqA0YuA9JX0P4Hb69WlKc/9OLo+WCXuX6sy/KoIa+qJimgmr2dWqnypYKYPX37esjDBbhdw== @@ -8867,6 +8777,15 @@ enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -9068,7 +8987,7 @@ escape-string-regexp@2.0.0, 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== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -9078,7 +8997,7 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.12.0, escodegen@^1.14.1: +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== @@ -9090,6 +9009,18 @@ escodegen@^1.12.0, escodegen@^1.14.1: optionalDependencies: source-map "~0.6.1" +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-config-prettier@^6.15.0: version "6.15.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" @@ -9559,7 +9490,7 @@ expect@^26.6.0, expect@^26.6.2: jest-message-util "^26.6.2" jest-regex-util "^26.0.0" -express@^4.17.0, express@^4.17.1: +express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -9670,7 +9601,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^2.0.2, fast-glob@^2.2.6: +fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== @@ -9798,7 +9729,7 @@ file-loader@6.1.1: loader-utils "^2.0.0" schema-utils "^3.0.0" -file-loader@^6.0.0: +file-loader@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== @@ -9817,20 +9748,8 @@ file-system-cache@^1.0.5: file-uri-to-path@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filelist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" - integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== - dependencies: - minimatch "^3.0.4" - -filesize@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" - integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== filesize@6.1.0: version "6.1.0" @@ -9928,6 +9847,14 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + firstline@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/firstline/-/firstline-1.3.1.tgz#59e84af0fd858fbc6dac0a0ff97fd22a47e58084" @@ -9988,21 +9915,7 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -fork-ts-checker-webpack-plugin@4.1.6, fork-ts-checker-webpack-plugin@^4.1.4: +fork-ts-checker-webpack-plugin@4.1.6, fork-ts-checker-webpack-plugin@^4.1.6: version "4.1.6" resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== @@ -10015,6 +9928,25 @@ fork-ts-checker-webpack-plugin@4.1.6, fork-ts-checker-webpack-plugin@^4.1.4: tapable "^1.0.0" worker-rpc "^0.1.0" +fork-ts-checker-webpack-plugin@^6.0.4: + version "6.2.10" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.10.tgz#800ab1fa523c76011a3413bc4e7815e45b63e826" + integrity sha512-HveFCHWSH2WlYU1tU3PkrupvW8lNFMTfH3Jk0TfC2mtktE9ibHGcifhCsCFvj+kqlDfNIlwmNLiNqR9jnSA7OQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + form-data@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" @@ -10126,6 +10058,11 @@ fs-minipass@^2.0.0: dependencies: minipass "^3.0.0" +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -10154,7 +10091,7 @@ fsevents@^2.1.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.2.1.tgz#1fb02ded2036a8ac288d507a65962bd87b97628d" integrity sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA== -fsevents@^2.1.3: +fsevents@^2.1.3, fsevents@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -10411,10 +10348,10 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, 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== +glob@^7.0.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -10423,10 +10360,10 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +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== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -10451,7 +10388,7 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -global@^4.3.2, global@^4.4.0: +global@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== @@ -10497,19 +10434,6 @@ globby@11.0.1, globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -globby@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -10622,13 +10546,6 @@ harmony-reflect@^1.4.6: resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -10895,7 +10812,7 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@4.5.0, html-webpack-plugin@^4.2.1: +html-webpack-plugin@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== @@ -10910,6 +10827,21 @@ html-webpack-plugin@4.5.0, html-webpack-plugin@^4.2.1: tapable "^1.1.3" util.promisify "1.0.0" +html-webpack-plugin@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" + integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.20" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + htmlparser2@^3.3.0: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" @@ -11088,11 +11020,6 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -11103,11 +11030,6 @@ ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -immer@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" - integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== - immer@7.0.9: version "7.0.9" resolved "https://registry.yarnpkg.com/immer/-/immer-7.0.9.tgz#28e7552c21d39dd76feccd2b800b7bc86ee4a62e" @@ -11251,26 +11173,7 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -inquirer@7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" - integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@7.3.3, inquirer@^7.0.0: +inquirer@7.3.3: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== @@ -11325,12 +11228,7 @@ 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.0.0, interpret@^2.2.0: +interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== @@ -11950,16 +11848,6 @@ iterate-value@^1.0.0: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" -jake@^10.6.1: - version "10.8.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" - integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== - dependencies: - async "0.9.x" - chalk "^2.4.2" - filelist "^1.0.1" - minimatch "^3.0.4" - 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" @@ -12414,11 +12302,6 @@ js-string-escape@^1.0.1: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" @@ -12519,7 +12402,7 @@ json3@^3.3.3: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@2.x, json5@^2.1.1, json5@^2.1.2: +json5@2.x, json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== @@ -12533,6 +12416,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.1.3: + 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@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -12815,10 +12705,12 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash-es@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" - integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" lodash._reinterpolate@^3.0.0: version "3.0.0" @@ -12890,12 +12782,12 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.17.5: +"lodash@>=3.5 <5", lodash@^4.17.21, lodash@^4.17.5: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1: +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -13090,10 +12982,10 @@ markdown-to-jsx@^6.11.4: prop-types "^15.6.2" unquote "^1.1.0" -material-colors@^1.2.1: - version "1.2.6" - resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" - integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== +markdown-to-jsx@^7.1.0: + version "7.1.3" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz#f00bae66c0abe7dd2d274123f84cb6bd2a2c7c6a" + integrity sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w== md5.js@^1.3.4: version "1.3.5" @@ -13111,28 +13003,21 @@ mdast-squeeze-paragraphs@^4.0.0: dependencies: unist-util-remove "^2.0.0" -mdast-util-definitions@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-2.0.1.tgz#2c931d8665a96670639f17f98e32c3afcfee25f3" - integrity sha512-Co+DQ6oZlUzvUR7JCpP249PcexxygiaKk9axJh+eRzHDZJk2julbIdKB4PXHVxdBuLzvJ1Izb+YDpj2deGMOuA== - dependencies: - unist-util-visit "^2.0.0" - -mdast-util-definitions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz#06af6c49865fc63d6d7d30125569e2f7ae3d0a86" - integrity sha512-BAv2iUm/e6IK/b2/t+Fx69EL/AGcq/IG2S+HxHjDJGfLJtd6i9SZUS76aC9cig+IEucsqxKTR0ot3m933R3iuA== +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== dependencies: unist-util-visit "^2.0.0" -mdast-util-to-hast@9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-9.1.2.tgz#10fa5ed9d45bf3755891e5801d0f32e2584a9423" - integrity sha512-OpkFLBC2VnNAb2FNKcKWu9FMbJhQKog+FCT8nuKmQNIKXyT1n3SIskE7uWDep6x+cA20QXlK5AETHQtYmQmxtQ== +mdast-util-to-hast@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" + integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" - mdast-util-definitions "^3.0.0" + mdast-util-definitions "^4.0.0" mdurl "^1.0.0" unist-builder "^2.0.0" unist-util-generated "^1.0.0" @@ -13164,6 +13049,13 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +memfs@^3.1.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.2.tgz#5de461389d596e3f23d48bb7c2afb6161f4df40e" + integrity sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q== + dependencies: + fs-monkey "1.0.3" + memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" @@ -13701,7 +13593,7 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.1: +node-fetch@^2.5.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -13779,7 +13671,7 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^1.1.52, node-releases@^1.1.61, node-releases@^1.1.66: +node-releases@^1.1.61, node-releases@^1.1.66: version "1.1.67" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12" integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg== @@ -14221,10 +14113,10 @@ osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -overlayscrollbars@^1.10.2: - version "1.13.0" - resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.13.0.tgz#1edb436328133b94877b558f77966d5497ca36a7" - integrity sha512-p8oHrMeRAKxXDMPI/EBNITj/zTVHKNnAnM59Im+xnoZUlV07FyTg46wom2286jJlXGGfcPFG/ba5NUiCwWNd4w== +overlayscrollbars@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz#0b840a88737f43a946b9d87875a2f9e421d0338a" + integrity sha512-gIQfzgGgu1wy80EB4/6DaJGHMEGmizq27xHIESrzXq0Y/J0Ay1P3DWk6tuVmEPIZH15zaBlxeEJOqdJKmowHCQ== p-all@^2.1.0: version "2.1.0" @@ -14304,6 +14196,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" @@ -14677,7 +14576,14 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@3.1.0, pkg-up@^3.1.0: +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + +pkg-up@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== @@ -14691,12 +14597,12 @@ pnp-webpack-plugin@1.6.4, pnp-webpack-plugin@^1.6.4: dependencies: ts-pnp "^1.1.6" -polished@^3.4.4: - version "3.6.7" - resolved "https://registry.yarnpkg.com/polished/-/polished-3.6.7.tgz#44cbd0047f3187d83db0c479ef0c7d5583af5fb6" - integrity sha512-b4OViUOihwV0icb9PHmWbR+vPqaSzSAEbgLskvb7ANPATVXGiYv/TQFHQo65S53WU9i5EQ1I03YDOJW7K0bmYg== +polished@^4.0.5: + version "4.1.2" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.1.2.tgz#c04fcc203e287e2d866e9cfcaf102dae1c01a816" + integrity sha512-jq4t3PJUpVRcveC53nnbEX35VyQI05x3tniwp26WFdm1dwaNUBHAi5awa/roBlwQxx1uRhwNSYeAi/aMbfiJCQ== dependencies: - "@babel/runtime" "^7.9.2" + "@babel/runtime" "^7.13.17" portfinder@^1.0.26: version "1.0.28" @@ -14872,7 +14778,7 @@ postcss-env-function@^2.0.2: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-flexbugs-fixes@4.2.1, postcss-flexbugs-fixes@^4.1.0: +postcss-flexbugs-fixes@4.2.1, postcss-flexbugs-fixes@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== @@ -14939,7 +14845,7 @@ postcss-load-config@^2.0.0: cosmiconfig "^5.0.0" import-cwd "^2.0.0" -postcss-loader@3.0.0, postcss-loader@^3.0.0: +postcss-loader@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== @@ -14949,6 +14855,17 @@ postcss-loader@3.0.0, postcss-loader@^3.0.0: postcss-load-config "^2.0.0" schema-utils "^1.0.0" +postcss-loader@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.3.0.tgz#2c4de9657cd4f07af5ab42bd60a673004da1b8cc" + integrity sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.4" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + semver "^7.3.4" + postcss-logical@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" @@ -15363,7 +15280,7 @@ postcss@7.0.21: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== @@ -15408,10 +15325,10 @@ prettier@^2.1.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== -prettier@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" - integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== +prettier@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== pretty-bytes@^5.3.0: version "5.6.0" @@ -15531,6 +15448,14 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.4" +prompts@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" + integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + promzard@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" @@ -15538,7 +15463,7 @@ promzard@^0.3.0: dependencies: read "1" -prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.0.0, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -15656,10 +15581,12 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@^6.6.0: - version "6.9.4" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" - integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== +qs@^6.10.0: + version "6.10.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" + integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + dependencies: + side-channel "^1.0.4" qs@~6.5.2: version "6.5.2" @@ -15751,7 +15678,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -raw-loader@^4.0.1: +raw-loader@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== @@ -15781,48 +15708,10 @@ react-app-polyfill@^2.0.0: regenerator-runtime "^0.13.7" whatwg-fetch "^3.4.1" -react-color@^2.17.0: - version "2.19.3" - resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d" - integrity sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA== - dependencies: - "@icons/material" "^0.2.4" - lodash "^4.17.15" - lodash-es "^4.17.15" - material-colors "^1.2.1" - prop-types "^15.5.10" - reactcss "^1.2.0" - tinycolor2 "^1.4.1" - -react-dev-utils@^10.0.0: - version "10.2.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" - integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== - dependencies: - "@babel/code-frame" "7.8.3" - address "1.1.2" - browserslist "4.10.0" - chalk "2.4.2" - cross-spawn "7.0.1" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.0.1" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "3.1.1" - global-modules "2.0.0" - globby "8.0.2" - gzip-size "5.1.1" - immer "1.10.0" - inquirer "7.0.4" - is-root "2.1.0" - loader-utils "1.2.3" - open "^7.0.2" - pkg-up "3.1.0" - react-error-overlay "^6.0.7" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" +react-colorful@^5.0.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.2.0.tgz#1cd24ca7deff73a70cf34261813a4ed6c45129c2" + integrity sha512-SJXywyc9oew0rOp7xjmtStiJ5N4Mk2RYc/1OptlaEnbuCz9PvILmRotoHfowdmO142HASUSgKdngL4WOHo/TnQ== react-dev-utils@^11.0.0: version "11.0.0" @@ -15893,18 +15782,6 @@ react-docgen-typescript-loader@^3.7.2: loader-utils "^1.2.3" react-docgen-typescript "^1.15.0" -react-docgen-typescript-plugin@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.5.2.tgz#2b294d75ef3145c36303da82be5d447cb67dc0dc" - integrity sha512-NQfWyWLmzUnedkiN2nPDb6Nkm68ik6fqbC3UvgjqYSeZsbKijXUA4bmV6aU7qICOXdop9PevPdjEgJuAN0nNVQ== - dependencies: - debug "^4.1.1" - endent "^2.0.1" - micromatch "^4.0.2" - react-docgen-typescript "^1.20.1" - react-docgen-typescript-loader "^3.7.2" - tslib "^2.0.0" - react-docgen-typescript-plugin@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.6.2.tgz#c83305206c61d5c7e004eaf2dc4661367ddc105d" @@ -15946,7 +15823,7 @@ react-dom@^16.13.1: prop-types "^15.6.2" scheduler "^0.19.1" -react-draggable@^4.0.3: +react-draggable@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.3.tgz#0727f2cae5813e36b0e4962bf11b2f9ef2b406f3" integrity sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w== @@ -15954,7 +15831,7 @@ react-draggable@^4.0.3: classnames "^2.2.5" prop-types "^15.6.0" -react-element-to-jsx-string@^14.3.1: +react-element-to-jsx-string@^14.3.2: version "14.3.2" resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.2.tgz#c0000ed54d1f8b4371731b669613f2d4e0f63d5c" integrity sha512-WZbvG72cjLXAxV7VOuSzuHEaI3RHj10DZu8EcKQpkKcAj7+qAkG5XUeSdX5FXrA0vPrlx0QsnAzZEBJwzV0e+w== @@ -15969,7 +15846,7 @@ react-elm-components@^1.1.0: dependencies: create-react-class "^15.5.3" -react-error-overlay@^6.0.7, react-error-overlay@^6.0.8: +react-error-overlay@^6.0.8: version "6.0.8" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.8.tgz#474ed11d04fc6bda3af643447d85e9127ed6b5de" integrity sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw== @@ -15984,28 +15861,21 @@ react-fast-compare@^3.0.1, react-fast-compare@^3.2.0: resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -react-helmet-async@^1.0.2: - version "1.0.7" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.0.7.tgz#b988fbc3abdc4b704982bb74b9cb4a08fcf062c1" - integrity sha512-By90p5uxAriGukbyejq2poK41DwTxpNWOpOjN8mIyX/BKrCd3+sXZ5pHUZXjHyjR5OYS7PGsOD9dbM61YxfFmA== +react-helmet-async@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.0.9.tgz#5b9ed2059de6b4aab47f769532f9fbcbce16c5ca" + integrity sha512-N+iUlo9WR3/u9qGMmP4jiYfaD6pe9IvDTapZLFJz2D3xlTlCM1Bzy4Ab3g72Nbajo/0ZyW+W9hdz8Hbe4l97pQ== dependencies: - "@babel/runtime" "^7.11.2" + "@babel/runtime" "^7.12.5" invariant "^2.2.4" prop-types "^15.7.2" react-fast-compare "^3.2.0" shallowequal "^1.1.0" -react-hotkeys@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-2.0.0.tgz#a7719c7340cbba888b0e9184f806a9ec0ac2c53f" - integrity sha512-3n3OU8vLX/pfcJrR3xJ1zlww6KS1kEJt0Whxc4FiGV+MJrQ1mYSYI3qS/11d2MJDFm8IhOXMTFQirfu6AVOF6Q== - dependencies: - prop-types "^15.6.1" - -react-inspector@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-5.1.0.tgz#45a325e15f33e595be5356ca2d3ceffb7d6b8c3a" - integrity sha512-JAwswiengIcxi4X/Ssb8nf6suOuQsyit8Fxo04+iPKTnPNY3XIOuagjMZSzpJDDKkYcc/ARlySOYZZv626WUvA== +react-inspector@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-5.1.1.tgz#58476c78fde05d5055646ed8ec02030af42953c8" + integrity sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg== dependencies: "@babel/runtime" "^7.0.0" is-dom "^1.0.0" @@ -16021,12 +15891,17 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== +react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-popper-tooltip@^3.1.0: +react-popper-tooltip@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-3.1.1.tgz#329569eb7b287008f04fcbddb6370452ad3f9eac" integrity sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ== @@ -16114,17 +15989,17 @@ react-scripts@^4.0.3: optionalDependencies: fsevents "^2.1.3" -react-sizeme@^2.6.7: - version "2.6.12" - resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e" - integrity sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw== +react-sizeme@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-3.0.1.tgz#4d12f4244e0e6a0fb97253e7af0314dc7c83a5a0" + integrity sha512-9Hf1NLgSbny1bha77l9HwvwwxQUJxFUqi44Ih+y3evA+PezBpGdCGlnvye6avss2cIgs9PgdYgMnfuzJWn/RUw== dependencies: - element-resize-detector "^1.2.1" + element-resize-detector "^1.2.2" invariant "^2.2.4" shallowequal "^1.1.0" - throttle-debounce "^2.1.0" + throttle-debounce "^3.0.1" -react-syntax-highlighter@^13.5.0: +react-syntax-highlighter@^13.5.3: version "13.5.3" resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz#9712850f883a3e19eb858cf93fad7bb357eea9c6" integrity sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg== @@ -16135,10 +16010,10 @@ react-syntax-highlighter@^13.5.0: prismjs "^1.21.0" refractor "^3.1.0" -react-textarea-autosize@^8.1.1: - version "8.3.0" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.0.tgz#e6e2fd186d9f61bb80ac6e2dcb4c55504f93c2fa" - integrity sha512-3GLWFAan2pbwBeoeNDoqGmSbrShORtgWfaWX0RJDivsUrpShh01saRM5RU/i4Zmf+whpBVEY5cA90Eq8Ub1N3w== +react-textarea-autosize@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.2.tgz#4f9374d357b0a6f6469956726722549124a1b2db" + integrity sha512-JrMWVgQSaExQByP3ggI1eA8zF4mF0+ddVuX7acUeK2V7bmrpjVOY72vmLz2IXFJSAXoY3D80nEzrn0GWajWK3Q== dependencies: "@babel/runtime" "^7.10.2" use-composed-ref "^1.0.0" @@ -16153,13 +16028,6 @@ react@^16.13.1: object-assign "^4.1.1" prop-types "^15.6.2" -reactcss@^1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" - integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== - dependencies: - lodash "^4.0.1" - read-cmd-shim@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" @@ -16330,13 +16198,6 @@ recast@^0.14.7: private "~0.1.5" source-map "~0.6.1" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - rechoir@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" @@ -16496,14 +16357,14 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= -remark-external-links@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-6.1.0.tgz#1a545b3cf896eae00ec1732d90f595f75a329abe" - integrity sha512-dJr+vhe3wuh1+E9jltQ+efRMqtMDOOnfFkhtoArOmhnBcPQX6THttXMkc/H0kdnAvkXTk7f2QdOYm5qo/sGqdw== +remark-external-links@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" + integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== dependencies: extend "^3.0.0" is-absolute-url "^3.0.0" - mdast-util-definitions "^2.0.0" + mdast-util-definitions "^4.0.0" space-separated-tokens "^1.0.0" unist-util-visit "^2.0.0" @@ -16512,16 +16373,16 @@ remark-footnotes@2.0.0: resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== -remark-mdx@1.6.21: - version "1.6.21" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.21.tgz#0c1a7e042e50938ff89ad8dd7e8e219d4b0404ce" - integrity sha512-IGb3l46a6NFi62egT+WXeTT3T8wYTunmPCEGTfDO6oRAfuss9VAb/3InVCKKGXXoiNi0mTuplI0EFusdCLGk3A== +remark-mdx@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" + integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== dependencies: - "@babel/core" "7.11.6" + "@babel/core" "7.12.9" "@babel/helper-plugin-utils" "7.10.4" - "@babel/plugin-proposal-object-rest-spread" "7.11.0" - "@babel/plugin-syntax-jsx" "7.10.4" - "@mdx-js/util" "1.6.21" + "@babel/plugin-proposal-object-rest-spread" "7.12.1" + "@babel/plugin-syntax-jsx" "7.12.1" + "@mdx-js/util" "1.6.22" is-alphabetical "1.0.4" remark-parse "8.0.3" unified "9.2.0" @@ -16732,14 +16593,6 @@ resolve@1.18.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.9.0: is-core-module "^2.0.0" path-parse "^1.0.6" -resolve@^1.1.6, resolve@^1.12.0, resolve@^1.3.2: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - resolve@^1.10.0, resolve@^1.13.1, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -16747,7 +16600,15 @@ resolve@^1.10.0, resolve@^1.13.1, resolve@^1.8.1: dependencies: path-parse "^1.0.6" -resolve@^1.14.2: +resolve@^1.12.0, resolve@^1.3.2: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +resolve@^1.14.2, 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== @@ -16907,7 +16768,7 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.4.0, rxjs@^6.5.2, rxjs@^6.5.3, rxjs@^6.6.0: +rxjs@^6.4.0, rxjs@^6.5.2, rxjs@^6.6.0: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== @@ -16992,6 +16853,15 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -17056,6 +16926,13 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.4: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -17231,15 +17108,6 @@ shell-quote@1.7.2: 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.4: - 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@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -17253,6 +17121,15 @@ side-channel@^1.0.2, side-channel@^1.0.3: es-abstract "^1.18.0-next.0" object-inspect "^1.8.0" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -17270,11 +17147,6 @@ sisteransi@^1.0.4, sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -17610,7 +17482,7 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -store2@^2.7.1: +store2@^2.12.0: version "2.12.0" resolved "https://registry.yarnpkg.com/store2/-/store2-2.12.0.tgz#e1f1b7e1a59b6083b2596a8d067f6ee88fd4d3cf" integrity sha512-7t+/wpKLanLzSnQPX8WAcuLCCeuSHoWdQuh9SB3xD0kNOM38DNf+0Oa+wmvxmYueRzkmh6IcdKFtvTa+ecgPDw== @@ -17899,7 +17771,7 @@ strong-log-transformer@^2.0.0: minimist "^1.2.0" through "^2.3.4" -style-loader@1.3.0, style-loader@^1.2.1: +style-loader@1.3.0, style-loader@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== @@ -17923,11 +17795,6 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -18058,18 +17925,18 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" -telejson@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-5.1.0.tgz#cc04e4c2a355f9eb6af557e37acd6449feb1d146" - integrity sha512-Yy0N2OV0mosmr1SCZEm3Ezhu/oi5Dbao5RqauZu4+VI5I/XtVBHXajRk0txuqbFYtKdzzWGDZFGSif9ovVLjEA== +telejson@^5.1.0: + version "5.3.3" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-5.3.3.tgz#fa8ca84543e336576d8734123876a9f02bf41d2e" + integrity sha512-PjqkJZpzEggA9TBpVtJi1LVptP7tYtXB6rEubwlHap76AMjzvOdKX41CxyaW7ahhzDU1aftXnMCx5kAPDZTQBA== dependencies: "@types/is-function" "^1.0.0" global "^4.4.0" is-function "^1.0.2" - is-regex "^1.1.1" + is-regex "^1.1.2" is-symbol "^1.0.3" isobject "^4.0.0" - lodash "^4.17.20" + lodash "^4.17.21" memoizerific "^1.11.3" temp-dir@^1.0.0: @@ -18155,7 +18022,7 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser-webpack-plugin@^3.0.0: +terser-webpack-plugin@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz#91e6d39571460ed240c0cf69d295bcf30ebf98cb" integrity sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA== @@ -18226,10 +18093,10 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -throttle-debounce@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz#fd31865e66502071e411817e241465b3e9c372e2" - integrity sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ== +throttle-debounce@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" + integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== through2@^2.0.0, through2@^2.0.2: version "2.0.5" @@ -18274,11 +18141,6 @@ tiny-emitter@^2.0.0: resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== -tinycolor2@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" - integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -18631,7 +18493,7 @@ unbox-primitive@^1.0.0: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" -unfetch@^4.1.0: +unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== @@ -18848,7 +18710,7 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@4.1.1, url-loader@^4.0.0: +url-loader@4.1.1, url-loader@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== @@ -18951,12 +18813,17 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= +uuid-browser@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" + integrity sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA= + uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.0.0, uuid@^8.3.0: +uuid@^8.3.0: version "8.3.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== @@ -19142,18 +19009,7 @@ webpack-cli@^4.2.0: v8-compile-cache "^2.2.0" webpack-merge "^4.2.2" -webpack-dev-middleware@^3.7.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-middleware@^3.7.2: +webpack-dev-middleware@^3.7.2, webpack-dev-middleware@^3.7.3: version "3.7.3" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== @@ -19268,6 +19124,35 @@ webpack-virtual-modules@^0.2.2: dependencies: debug "^3.0.0" +webpack@4: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + webpack@4.44.2, webpack@^4.44.2: version "4.44.2" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" From e478e4fd83bb25b876b8f94617f756bd17025f64 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 20:09:09 +0200 Subject: [PATCH 56/62] update docs --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 57d8c8e..41ef12e 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ Server: [/packages/server](/packages/server) * `yarn build` * `yarn validate` * commit changes (lib dirs should eventually be in git ignore) -* optionally: `lerna changed` -* `lerna publish` +* optionally: `yarn lerna changed` +* `yarn lerna publish` * on each push to the main branch, CI builds and publishes storybook, see .github/workflows ## Running From c1d2c2111b1ad8e94663007e197ae812ea3b8456 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 20:10:12 +0200 Subject: [PATCH 57/62] Commit build --- packages/dockerlist-client/.bsb.lock | 1 - packages/example/src/App.js | 2 ++ packages/streamplayer-client/lib/StreamPlayer.js | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 packages/dockerlist-client/.bsb.lock diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock deleted file mode 100644 index b608b71..0000000 --- a/packages/dockerlist-client/.bsb.lock +++ /dev/null @@ -1 +0,0 @@ -388122 \ No newline at end of file diff --git a/packages/example/src/App.js b/packages/example/src/App.js index 9caad66..02b9e16 100644 --- a/packages/example/src/App.js +++ b/packages/example/src/App.js @@ -1,11 +1,13 @@ import React from 'react'; import './App.css'; import StreamPlayer from '@mdworld/homeremote-stream-player'; +import DockerList from '@mdworld/homeremote-dockerlist'; function App() { return (
+
); } diff --git a/packages/streamplayer-client/lib/StreamPlayer.js b/packages/streamplayer-client/lib/StreamPlayer.js index 16a937c..e2474aa 100644 --- a/packages/streamplayer-client/lib/StreamPlayer.js +++ b/packages/streamplayer-client/lib/StreamPlayer.js @@ -1,6 +1,6 @@ -module.exports=function(n){var r={};function t(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return n[e].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=n,t.c=r,t.d=function(n,r,e){t.o(n,r)||Object.defineProperty(n,r,{enumerable:!0,get:e})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,r){if(1&r&&(n=t(n)),8&r)return n;if(4&r&&"object"==typeof n&&n&&n.__esModule)return n;var e=Object.create(null);if(t.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:n}),2&r&&"string"!=typeof n)for(var o in n)t.d(e,o,function(r){return n[r]}.bind(null,o));return e},t.n=function(n){var r=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(r,"a",r),r},t.o=function(n,r){return Object.prototype.hasOwnProperty.call(n,r)},t.p="",t(t.s=3)}([function(n,r){n.exports=require("react")},function(n,r,t){var e=t(0),o=t(9);n.exports=o({initialize:function(n){if(null!==n){var r;if(this.props.src.embed)r=this.props.src.embed(n,this.props.flags);else if(this.props.src.init){var t=document.createElement("div");n.appendChild(t),r=this.props.src.init({node:t,flags:this.props.flags})}r&&void 0!==this.props.ports&&this.props.ports(r.ports)}},shouldComponentUpdate:function(n){return!1},render:function(){return e.createElement("div",{ref:this.initialize})}})},function(n,r){!function(n){"use strict";function r(n,r,t){return t.a=n,t.f=r,t}function t(n){return r(2,n,(function(r){return function(t){return n(r,t)}}))}function e(n){return r(3,n,(function(r){return function(t){return function(e){return n(r,t,e)}}}))}function o(n){return r(4,n,(function(r){return function(t){return function(e){return function(o){return n(r,t,e,o)}}}}))}function u(n){return r(5,n,(function(r){return function(t){return function(e){return function(o){return function(u){return n(r,t,e,o,u)}}}}}))}function i(n){return r(6,n,(function(r){return function(t){return function(e){return function(o){return function(u){return function(i){return n(r,t,e,o,u,i)}}}}}}))}function a(n){return r(7,n,(function(r){return function(t){return function(e){return function(o){return function(u){return function(i){return function(a){return n(r,t,e,o,u,i,a)}}}}}}}))}function c(n){return r(8,n,(function(r){return function(t){return function(e){return function(o){return function(u){return function(i){return function(a){return function(c){return n(r,t,e,o,u,i,a,c)}}}}}}}}))}function f(n){return r(9,n,(function(r){return function(t){return function(e){return function(o){return function(u){return function(i){return function(a){return function(c){return function(f){return n(r,t,e,o,u,i,a,c,f)}}}}}}}}}))}function s(n,r,t){return 2===n.a?n.f(r,t):n(r)(t)}function l(n,r,t,e){return 3===n.a?n.f(r,t,e):n(r)(t)(e)}function d(n,r,t,e,o){return 4===n.a?n.f(r,t,e,o):n(r)(t)(e)(o)}function v(n,r,t,e,o,u){return 5===n.a?n.f(r,t,e,o,u):n(r)(t)(e)(o)(u)}function p(n,r,t,e,o,u,i){return 6===n.a?n.f(r,t,e,o,u,i):n(r)(t)(e)(o)(u)(i)}function b(n,r,t,e,o,u,i,a){return 7===n.a?n.f(r,t,e,o,u,i,a):n(r)(t)(e)(o)(u)(i)(a)}function h(n,r){for(var t,e=[],o=m(n,r,0,e);o&&(t=e.pop());o=m(t.a,t.b,0,e));return o}function m(n,r,t,e){if(n===r)return!0;if("object"!=typeof n||null===n||null===r)return"function"==typeof n&&R(5),!1;if(t>100)return e.push($(n,r)),!0;for(var o in n.$<0&&(n=kr(n),r=kr(r)),n)if(!m(n[o],r[o],t+1,e))return!1;return!0}t(h),t((function(n,r){return!h(n,r)}));function g(n,r,t){if("object"!=typeof n)return n===r?0:n0})),t((function(n,r){return g(n,r)>=0}));var y=t((function(n,r){var t=g(n,r);return t<0?Dr:t?Rr:Ir}));function $(n,r){return{a:n,b:r}}function E(n,r){var t={};for(var e in n)t[e]=n[e];for(var e in r)t[e]=r[e];return t}t(w);function w(n,r){if("string"==typeof n)return n+r;if(!n.b)return r;var t=A(n.a,r);n=n.b;for(var e=t;n.b;n=n.b)e=e.b=A(n.a,r);return t}var N={$:0};function A(n,r){return{$:1,a:n,b:r}}var x=t(A);function j(n){for(var r=N,t=n.length;t--;)r=A(n[t],r);return r}function _(n){for(var r=[];n.b;n=n.b)r.push(n.a);return r}var M=e((function(n,r,t){for(var e=[];r.b&&t.b;r=r.b,t=t.b)e.push(s(n,r.a,t.a));return j(e)}));o((function(n,r,t,e){for(var o=[];r.b&&t.b&&e.b;r=r.b,t=t.b,e=e.b)o.push(l(n,r.a,t.a,e.a));return j(o)})),u((function(n,r,t,e,o){for(var u=[];r.b&&t.b&&e.b&&o.b;r=r.b,t=t.b,e=e.b,o=o.b)u.push(d(n,r.a,t.a,e.a,o.a));return j(u)})),i((function(n,r,t,e,o,u){for(var i=[];r.b&&t.b&&e.b&&o.b&&u.b;r=r.b,t=t.b,e=e.b,o=o.b,u=u.b)i.push(v(n,r.a,t.a,e.a,o.a,u.a));return j(i)})),t((function(n,r){return j(_(r).sort((function(r,t){return g(n(r),n(t))})))})),t((function(n,r){return j(_(r).sort((function(r,t){var e=s(n,r,t);return e===Ir?0:e===Dr?-1:1})))}));var O=e((function(n,r,t){for(var e=new Array(n),o=0;o=0;e--)r=s(n,t[e],r);return r})));t((function(n,r){for(var t=r.length,e=new Array(t),o=0;ot.length&&(o=t.length);for(var u=new Array(e+o),i=0;i"),r}));function R(n){throw new Error("https://github.com/elm/core/blob/1.0.0/hints/"+n+".md")}t((function(n,r){return n+r})),t((function(n,r){return n-r})),t((function(n,r){return n*r})),t((function(n,r){return n/r})),t((function(n,r){return n/r|0})),t(Math.pow),t((function(n,r){return r%n})),t((function(n,r){var t=r%n;return 0===n?R(11):t>0&&n<0||t<0&&n>0?t+n:t})),Math.PI,Math.E,Math.cos,Math.sin,Math.tan,Math.acos,Math.asin,Math.atan,t(Math.atan2);var D=Math.ceil,P=Math.floor,T=(Math.round,Math.sqrt,Math.log);isNaN;t((function(n,r){return n&&r})),t((function(n,r){return n||r})),t((function(n,r){return n!==r})),t((function(n,r){return n+r}));t((function(n,r){return n+r}));t((function(n,r){for(var t=r.length,e=new Array(t),o=0;o-1})),Y=(t((function(n,r){return 0===r.indexOf(n)})),t((function(n,r){return r.length>=n.length&&r.lastIndexOf(n)===r.length-n.length})),t((function(n,r){var t=n.length;if(t<1)return N;for(var e=0,o=[];(e=r.indexOf(n,e))>-1;)o.push(e),e+=t;return j(o)})));function B(n){return{$:2,b:n}}B((function(n){return"number"!=typeof n?tn("an INT",n):-2147483647=r.length)return tn("a LONGER array. Need index "+o+" but only see "+r.length+" entries",r);e=Z(n.b,r[o]);return It(e)?e:Fr(s(Yr,o,e.a));case 8:if("object"!=typeof r||null===r||nn(r))return tn("an OBJECT",r);var u=N;for(var i in r)if(r.hasOwnProperty(i)){e=Z(n.b,r[i]);if(!It(e))return Fr(s(Ur,i,e.a));u=A($(i,e.a),u)}return Br(ft(u));case 9:for(var a=n.f,c=n.g,f=0;f=0&&t.splice(r,1)}}}var Sn;t((function(n,r){return function(t){return n(r(t))}}));var Fn="undefined"!=typeof document?document:{};function Ln(n,r){n.appendChild(r)}o((function(n,r,t,e){var o=e.node;return o.parentNode.replaceChild(Qn(n,(function(){})),o),{}}));function Un(n){return{$:0,a:n}}var Yn=t((function(n,r){return t((function(t,e){for(var o=[],u=0;e.b;e=e.b){var i=e.a;u+=i.b||0,o.push(i)}return u+=o.length,{$:1,c:r,d:Xn(t),e:o,f:n,b:u}}))})),Bn=Yn(void 0);t((function(n,r){return t((function(t,e){for(var o=[],u=0;e.b;e=e.b){var i=e.a;u+=i.b.b||0,o.push(i)}return u+=o.length,{$:2,c:r,d:Xn(t),e:o,f:n,b:u}}))}))(void 0);var qn=t((function(n,r){return{$:4,j:n,k:r,b:1+(r.b||0)}}));function Wn(n,r){return{$:5,l:n,m:r,k:void 0}}t((function(n,r){return Wn([n,r],(function(){return n(r)}))})),e((function(n,r,t){return Wn([n,r,t],(function(){return s(n,r,t)}))})),o((function(n,r,t,e){return Wn([n,r,t,e],(function(){return l(n,r,t,e)}))})),u((function(n,r,t,e,o){return Wn([n,r,t,e,o],(function(){return d(n,r,t,e,o)}))})),i((function(n,r,t,e,o,u){return Wn([n,r,t,e,o,u],(function(){return v(n,r,t,e,o,u)}))})),a((function(n,r,t,e,o,u,i){return Wn([n,r,t,e,o,u,i],(function(){return p(n,r,t,e,o,u,i)}))})),c((function(n,r,t,e,o,u,i,a){return Wn([n,r,t,e,o,u,i,a],(function(){return b(n,r,t,e,o,u,i,a)}))})),f((function(n,r,t,e,o,u,i,a,c){return Wn([n,r,t,e,o,u,i,a,c],(function(){return function(n,r,t,e,o,u,i,a,c){return 8===n.a?n.f(r,t,e,o,u,i,a,c):n(r)(t)(e)(o)(u)(i)(a)(c)}(n,r,t,e,o,u,i,a,c)}))}));var zn=t((function(n,r){return{$:"a0",n:n,o:r}})),Gn=(t((function(n,r){return{$:"a1",n:n,o:r}})),t((function(n,r){return{$:"a2",n:n,o:r}}))),Hn=t((function(n,r){return{$:"a3",n:n,o:r}}));e((function(n,r,t){return{$:"a4",n:r,o:{f:n,o:t}}}));t((function(n,r){return"a0"===r.$?s(zn,r.n,function(n,r){var t=Tt(r);return{$:r.$,a:t?l(Dt,t<3?Vn:Kn,Pt(n),r.a):s(Rt,n,r.a)}}(n,r.o)):r}));var Jn,Vn=t((function(n,r){return $(n(r.a),r.b)})),Kn=t((function(n,r){return{s:n(r.s),V:r.V,R:r.R}}));function Xn(n){for(var r={};n.b;n=n.b){var t=n.a,e=t.$,o=t.n,u=t.o;if("a2"!==e){var i=r[e]||(r[e]={});"a3"===e&&"class"===o?Zn(i,o,u):i[o]=u}else"className"===o?Zn(r,o,u):r[o]=u}return r}function Zn(n,r,t){var e=n[r];n[r]=e?e+" "+t:t}function Qn(n,r){var t=n.$;if(5===t)return Qn(n.k||(n.k=n.m()),r);if(0===t)return Fn.createTextNode(n.a);if(4===t){for(var e=n.k,o=n.j;4===e.$;)"object"!=typeof o?o=[o,e.j]:o.push(e.j),e=e.k;var u={j:o,p:r};return(i=Qn(e,u)).elm_event_node_ref=u,i}if(3===t)return nr(i=n.h(n.g),r,n.d),i;var i=n.f?Fn.createElementNS(n.f,n.c):Fn.createElement(n.c);Sn&&"a"==n.c&&i.addEventListener("click",Sn(i)),nr(i,r,n.d);for(var a=n.e,c=0;c0&&cr(t,1,e,s));case 4:for(var l=n.j,d=r.j,v=!1,p=n.k;4===p.$;)v=!0,"object"!=typeof l?l=[l,p.j]:l.push(p.j),p=p.k;for(var b=r.k;4===b.$;)v=!0,"object"!=typeof d?d=[d,b.j]:d.push(b.j),b=b.k;return v&&l.length!==d.length?void cr(t,0,e,r):((v?function(n,r){for(var t=0;ta?cr(t,6,e,{v:a,i:i-a}):i0||i.length>0||M)&&cr(t,8,e,{w:o,x:i,y:M})}function pr(n,r,t,e,o,u){var i=n[t];if(!i)return i={c:0,z:e,r:o,s:void 0},u.push({r:o,A:i}),void(n[t]=i);if(1===i.c){u.push({r:o,A:i}),i.c=2;var a=[];return fr(i.z,e,a,i.r),i.r=o,void(i.s.s={w:a,A:i})}pr(n,r,t+"_elmW6BL",e,o,u)}function br(n,r,t,e,o){var u=n[t];if(u){if(0===u.c){u.c=2;var i=[];return fr(e,u.z,i,o),void cr(r,9,o,{w:i,A:u})}br(n,r,t+"_elmW6BL",e,o)}else{var a=cr(r,9,o,void 0);n[t]={c:1,z:e,r:o,s:a}}}function hr(n,r,t,e){!function n(r,t,e,o,u,i,a){var c=e[o],f=c.r;for(;f===u;){var s=c.$;if(1===s)hr(r,t.k,c.s,a);else if(8===s){c.t=r,c.u=a,(l=c.s.w).length>0&&n(r,t,l,0,u,i,a)}else if(9===s){c.t=r,c.u=a;var l,d=c.s;if(d)d.A.s=r,(l=d.w).length>0&&n(r,t,l,0,u,i,a)}else c.t=r,c.u=a;if(o++,!(c=e[o])||(f=c.r)>i)return o}var v=t.$;if(4===v){for(var p=t.k;4===p.$;)p=p.k;return n(r,p,e,o,u+1,i,r.elm_event_node_ref)}for(var b=t.e,h=r.childNodes,m=0;mi))return o;u=y}return o}(n,r,t,0,0,r.b,e)}function mr(n,r,t,e){return 0===t.length?n:(hr(n,r,t,e),gr(n,t))}function gr(n,r){for(var t=0;t0){var i=o.substring(0,u),a=o.substring(u+2);r=l(Je,i,(function(n){return Wr(De(n)?a+", "+n.a:a)}),r)}}return r}var Or=e((function(n,r,t){return{$:0,d:n,b:r,a:t}})),Cr=t((function(n,r){return{$:0,d:r.d,b:r.b,a:function(t){return n(r.a(t))}}}));t((function(n,r){return{$:0,a:n,b:r}}));t((function(n,r){return new Blob([r],{type:n})}));t((function(n,r){return fn((function(t){var e=setInterval((function(){dn(r)}),n);return function(){clearInterval(e)}}))}));var Ir=1,Rr=2,Dr=0,Pr=x,Tr=e((function(n,r,t){for(;;){if(-2===t.$)return r;var e=t.b,o=t.c,u=t.d,i=t.e,a=n,c=l(n,e,o,l(Tr,n,r,i));n=a,r=c,t=u}})),kr=function(n){return l(Tr,e((function(n,r,t){return s(Pr,$(n,r),t)})),N,n)},Sr=I,Fr=(e((function(n,r,e){var o=e.c,u=e.d,i=t((function(r,t){if(r.$){var e=r.a;return l(Sr,n,t,e)}var o=r.a;return l(Sr,i,t,o)}));return l(Sr,i,l(Sr,n,r,u),o)})),function(n){return{$:1,a:n}}),Lr=t((function(n,r){return{$:3,a:n,b:r}})),Ur=t((function(n,r){return{$:0,a:n,b:r}})),Yr=t((function(n,r){return{$:1,a:n,b:r}})),Br=function(n){return{$:0,a:n}},qr=function(n){return{$:2,a:n}},Wr=function(n){return{$:0,a:n}},zr={$:1},Gr=L,Hr=un,Jr=function(n){return n+""},Vr=t((function(n,r){return s(S,n,_(r))})),Kr=t((function(n,r){return j(s(k,n,r))})),Xr=function(n){return s(Vr,"\n ",s(Kr,"\n",n))},Zr=e((function(n,r,t){for(;;){if(!t.b)return r;var e=t.a,o=t.b,u=n,i=s(n,e,r);n=u,r=i,t=o}})),Qr=function(n){return l(Zr,t((function(n,r){return r+1})),0,n)},nt=M,rt=e((function(n,r,t){for(;;){if(!(g(n,r)<1))return t;var e=n,o=r-1,u=s(Pr,r,t);n=e,r=o,t=u}})),tt=t((function(n,r){return l(rt,n,r,N)})),et=t((function(n,r){return l(nt,n,s(tt,0,Qr(r)-1),r)})),ot=function(n){var r=n.charCodeAt(0);return 55296<=r&&r<=56319?1024*(r-55296)+n.charCodeAt(1)-56320+65536:r},ut=function(n){var r=ot(n);return 97<=r&&r<=122},it=function(n){var r=ot(n);return r<=90&&65<=r},at=function(n){return ut(n)||it(n)},ct=function(n){return ut(n)||it(n)||function(n){var r=ot(n);return r<=57&&48<=r}(n)},ft=function(n){return l(Zr,Pr,N,n)},st=function(n){var r=n.charCodeAt(0);return isNaN(r)?zr:Wr(55296<=r&&r<=56319?$(n[0]+n[1],n.slice(2)):$(n[0],n.slice(1)))},lt=t((function(n,r){return"\n\n("+Jr(n+1)+") "+Xr(dt(r))})),dt=function(n){return s(vt,n,N)},vt=t((function(n,r){n:for(;;)switch(n.$){case 0:var t=n.a,e=n.b,o=function(){var n=st(t);if(1===n.$)return!1;var r=n.a,e=r.a,o=r.b;return at(e)&&s(Gr,ct,o)}(),u=e,i=s(Pr,o?"."+t:"['"+t+"']",r);n=u,r=i;continue n;case 1:var a=n.a,c=(e=n.b,"["+Jr(a)+"]");u=e,i=s(Pr,c,r);n=u,r=i;continue n;case 2:var f=n.a;if(f.b){if(f.b.b){var l=(r.b?"The Json.Decode.oneOf at json"+s(Vr,"",ft(r)):"Json.Decode.oneOf")+" failed in the following "+Jr(Qr(f))+" ways:";return s(Vr,"\n\n",s(Pr,l,s(et,lt,f)))}n=u=e=f.a,r=i=r;continue n}return"Ran into a Json.Decode.oneOf with no possibilities"+(r.b?" at json"+s(Vr,"",ft(r)):"!");default:var d=n.a,v=n.b;return(l=r.b?"Problem with the value at json"+s(Vr,"",ft(r))+":\n\n ":"Problem with the given value:\n\n")+(Xr(s(Hr,4,v))+"\n\n")+d}})),pt=o((function(n,r,t,e){return{$:0,a:n,b:r,c:t,d:e}})),bt=[],ht=D,mt=t((function(n,r){return T(r)/T(n)})),gt=ht(s(mt,2,32)),yt=d(pt,0,gt,bt,bt),$t=O,Et=(t((function(n,r){return n(r)})),t((function(n,r){return r(n)})),P),wt=function(n){return n.length},Nt=t((function(n,r){return g(n,r)>0?n:r})),At=C,xt=t((function(n,r){for(;;){var t=s(At,32,n),e=t.a,o=t.b,u=s(Pr,{$:0,a:e},r);if(!o.b)return ft(u);n=o,r=u}})),jt=function(n){return n.a},_t=t((function(n,r){for(;;){var t=ht(r/32);if(1===t)return s(At,32,n).a;n=s(xt,n,N),r=t}})),Mt=t((function(n,r){if(r.a){var t=32*r.a,e=Et(s(mt,32,t-1)),o=n?ft(r.e):r.e,u=s(_t,o,r.a);return d(pt,wt(r.c)+t,s(Nt,5,e*gt),u,r.c)}return d(pt,wt(r.c),gt,bt,r.c)})),Ot=u((function(n,r,t,e,o){for(;;){if(r<0)return s(Mt,!1,{e:e,a:t/32|0,c:o});var u={$:1,a:l($t,32,r,n)};n=n,r=r-32,t=t,e=s(Pr,u,e),o=o}})),Ct=t((function(n,r){if(n<=0)return yt;var t=n%32,e=l($t,t,n-t,r);return v(Ot,r,n-t-32,n,N,e)})),It=function(n){return!n.$},Rt=H,Dt=J,Pt=function(n){return{$:0,a:n}},Tt=function(n){switch(n.$){case 0:return 0;case 1:return 1;case 2:return 2;default:return 3}},kt=function(n){return n},St=kt,Ft=i((function(n,r,t,e,o,u){return{aa:u,ad:r,ah:e,aj:t,am:n,an:o}})),Lt=U,Ut=function(n){return n.length},Yt=F,Bt=t((function(n,r){return n<1?r:l(Yt,n,Ut(r),r)})),qt=Y,Wt=function(n){return""===n},zt=t((function(n,r){return n<1?"":l(Yt,0,n,r)})),Gt=function(n){for(var r=0,t=n.charCodeAt(0),e=43==t||45==t?1:0,o=e;o500?l(Zr,n,r,ft(p)):d(Qt,n,r,t+1,p)))))}return s(n,o,s(n,i,s(n,c,r)))}return s(n,o,s(n,i,r))}return s(n,o,r)}return r})),ne=e((function(n,r,t){return d(Qt,n,r,0,t)})),re=t((function(n,r){return l(ne,t((function(r,t){return s(Pr,n(r),t)})),N,r)})),te=sn,ee=t((function(n,r){return s(te,(function(r){return Xt(n(r))}),r)})),oe=e((function(n,r,t){return s(te,(function(r){return s(te,(function(t){return Xt(s(n,r,t))}),t)}),r)})),ue=function(n){return l(ne,oe(Pr),Xt(N),n)},ie=An,ae=t((function(n,r){var t=r;return vn(s(te,ie(n),t))})),ce=e((function(n,r,t){return s(ee,(function(n){return 0}),ue(s(re,ae(n),r)))})),fe=e((function(n,r,t){return Xt(0)})),se=t((function(n,r){return s(ee,n,r)}));En.Task=wn(Zt,ce,fe,se);var le=jn("Task"),de=t((function(n,r){return le(s(ee,n,r))})),ve=Er,pe=function(n){return{$:4,a:n}},be=function(n){return{$:1,a:n}},he=_n,me=X,ge={d:"NPO Radio 2",n:"/api/nowplaying/radio2",F:"https://icecast.omroep.nl/radio2-bb-mp3"},ye=z,$e=W,Ee=s(Rt,(function(n){return{o:n}}),s(ye,"url",$e)),we=function(n){return{$:3,a:n}},Ne=K,Ae=t((function(n,r){return{$:3,a:n,b:r}})),xe=function(n){return{$:0,a:n}},je=t((function(n,r){return{$:4,a:n,b:r}})),_e={$:2},Me=function(n){return{$:1,a:n}},Oe=function(n){return{$:0,a:n}},Ce={$:1},Ie={$:-2},Re=Ie,De=function(n){return!n.$},Pe=xn,Te=y,ke=t((function(n,r){n:for(;;){if(-2===r.$)return zr;var t=r.b,e=r.c,o=r.d,u=r.e;switch(s(Te,n,t)){case 0:n=n,r=o;continue n;case 1:return Wr(e);default:n=n,r=u;continue n}}})),Se=u((function(n,r,t,e,o){return{$:-1,a:n,b:r,c:t,d:e,e:o}})),Fe=u((function(n,r,t,e,o){if(-1!==o.$||o.a){if(-1!==e.$||e.a||-1!==e.d.$||e.d.a)return v(Se,n,r,t,e,o);e.a,b=e.b,h=e.c;var u=e.d,i=(u.a,u.b),a=u.c,c=u.d,f=u.e;g=e.e;return v(Se,0,b,h,v(Se,1,i,a,c,f),v(Se,1,r,t,g,o))}o.a;var s=o.b,l=o.c,d=o.d,p=o.e;if(-1!==e.$||e.a)return v(Se,n,s,l,v(Se,0,r,t,e,d),p);e.a;var b=e.b,h=e.c,m=e.d,g=e.e;return v(Se,0,r,t,v(Se,1,b,h,m,g),v(Se,1,s,l,d,p))})),Le=e((function(n,r,t){if(-2===t.$)return v(Se,0,n,r,Ie,Ie);var e=t.a,o=t.b,u=t.c,i=t.d,a=t.e;switch(s(Te,n,o)){case 0:return v(Fe,e,o,u,l(Le,n,r,i),a);case 1:return v(Se,e,o,r,i,a);default:return v(Fe,e,o,u,i,l(Le,n,r,a))}})),Ue=e((function(n,r,t){var e=l(Le,n,r,t);if(-1!==e.$||e.a)return e;e.a;var o=e.b,u=e.c,i=e.d,a=e.e;return v(Se,1,o,u,i,a)})),Ye=function(n){if(-1===n.$&&-1===n.d.$&&-1===n.e.$){if(-1!==n.e.d.$||n.e.d.a){n.a,o=n.b,u=n.c;var r=n.d,t=(r.a,a=r.b,c=r.c,f=r.d,s=r.e,n.e);t.a,d=t.b,p=t.c,e=t.d,y=t.e;return v(Se,1,o,u,v(Se,0,a,c,f,s),v(Se,0,d,p,e,y))}n.a;var e,o=n.b,u=n.c,i=n.d,a=(i.a,i.b),c=i.c,f=i.d,s=i.e,l=n.e,d=(l.a,l.b),p=l.c,b=((e=l.d).a,e.b),h=e.c,m=e.d,g=e.e,y=l.e;return v(Se,0,b,h,v(Se,1,o,u,v(Se,0,a,c,f,s),m),v(Se,1,d,p,g,y))}return n},Be=function(n){if(-1===n.$&&-1===n.d.$&&-1===n.e.$){if(-1!==n.d.d.$||n.d.d.a){n.a,o=n.b,u=n.c;var r=n.d,t=(r.a,a=r.b,c=r.c,r.d),e=(b=r.e,n.e);e.a,m=e.b,g=e.c,y=e.d,$=e.e;return v(Se,1,o,u,v(Se,0,a,c,t,b),v(Se,0,m,g,y,$))}n.a;var o=n.b,u=n.c,i=n.d,a=(i.a,i.b),c=i.c,f=i.d,s=(f.a,f.b),l=f.c,d=f.d,p=f.e,b=i.e,h=n.e,m=(h.a,h.b),g=h.c,y=h.d,$=h.e;return v(Se,0,a,c,v(Se,1,s,l,d,p),v(Se,1,o,u,b,v(Se,0,m,g,y,$)))}return n},qe=a((function(n,r,t,e,o,u,i){if(-1!==u.$||u.a){n:for(;;){if(-1===i.$&&1===i.a){if(-1===i.d.$){if(1===i.d.a){i.a,i.d.a;return Be(r)}break n}i.a,i.d;return Be(r)}break n}return r}u.a;var a=u.b,c=u.c,f=u.d,s=u.e;return v(Se,t,a,c,f,v(Se,0,e,o,s,i))})),We=function(n){if(-1===n.$&&-1===n.d.$){var r=n.a,t=n.b,e=n.c,o=n.d,u=o.a,i=o.d,a=n.e;if(1===u){if(-1!==i.$||i.a){var c=Ye(n);if(-1===c.$){var f=c.a,s=c.b,l=c.c,d=c.d,p=c.e;return v(Fe,f,s,l,We(d),p)}return Ie}i.a;return v(Se,r,t,e,We(o),a)}return v(Se,r,t,e,We(o),a)}return Ie},ze=t((function(n,r){if(-2===r.$)return Ie;var t=r.a,e=r.b,o=r.c,u=r.d,i=r.e;if(g(n,e)<0){if(-1===u.$&&1===u.a){u.a;var a=u.d;if(-1!==a.$||a.a){var c=Ye(r);if(-1===c.$){var f=c.a,l=c.b,d=c.c,p=c.d,h=c.e;return v(Fe,f,l,d,s(ze,n,p),h)}return Ie}a.a;return v(Se,t,e,o,s(ze,n,u),i)}return v(Se,t,e,o,s(ze,n,u),i)}return s(Ge,n,b(qe,n,r,t,e,o,u,i))})),Ge=t((function(n,r){if(-1===r.$){var t=r.a,e=r.b,o=r.c,u=r.d,i=r.e;if(h(n,e)){var a=function(n){for(;;){if(-1!==n.$||-1!==n.d.$)return n;n=n.d}}(i);if(-1===a.$){var c=a.b,f=a.c;return v(Fe,t,c,f,u,We(i))}return Ie}return v(Fe,t,e,o,u,s(ze,n,i))}return Ie})),He=t((function(n,r){var t=s(ze,n,r);if(-1!==t.$||t.a)return t;t.a;var e=t.b,o=t.c,u=t.d,i=t.e;return v(Se,1,e,o,u,i)})),Je=e((function(n,r,t){var e=r(s(ke,n,t));if(e.$)return s(He,n,t);var o=e.a;return l(Ue,n,o,t)})),Ve=e((function(n,r,t){return r(n(t))})),Ke=t((function(n,r){return l(Or,"",kt,s(Ve,r,n))})),Xe=t((function(n,r){if(r.$){var t=r.a;return Fr(n(t))}var e=r.a;return Br(e)})),Ze=function(n){return{$:4,a:n}},Qe={$:2},no={$:1},ro=t((function(n,r){switch(r.$){case 0:var t=r.a;return Fr({$:0,a:t});case 1:return Fr(no);case 2:return Fr(Qe);case 3:var e=r.a;return Fr(function(n){return{$:3,a:n}}(e.aU));default:var o=r.b;return s(Xe,Ze,n(o))}})),to=t((function(n,r){return s(Ke,n,ro((function(n){return s(Xe,dt,s(Ne,r,n))})))})),eo={$:0},oo=function(n){return{$:1,a:n}},uo=t((function(n,r){return{ap:n,au:r}})),io=Xt(s(uo,Re,N)),ao=function(n){return fn((function(r){var t=n.f;2===t.$&&t.c&&t.c(),n.f=null,r(cn(0))}))},co=vn,fo=e((function(n,r,t){n:for(;;){if(r.b){var e=r.a,o=r.b;if(e.$){var u=e.a;return s(te,(function(r){var e=u.aw;if(1===e.$)return l(fo,n,o,t);var i=e.a;return l(fo,n,o,l(Ue,i,r,t))}),co(l(_r,n,ie(n),u)))}var i=e.a,a=s(ke,i,t);if(1===a.$){n=n,r=o,t=t;continue n}var c=a.a;return s(te,(function(r){return l(fo,n,o,s(He,i,t))}),ao(c))}return Xt(t)}})),so=o((function(n,r,t,e){return s(te,(function(n){return Xt(s(uo,n,t))}),l(fo,n,r,e.ap))})),lo=e((function(n,r,t){var e=n(r);if(e.$)return t;var o=e.a;return s(Pr,o,t)})),vo=t((function(n,r){return l(ne,lo(n),N,r)})),po=o((function(n,r,t,e){var o=e.a,u=e.b;return h(r,o)?Wr(s(ie,n,u(t))):zr})),bo=e((function(n,r,t){var e=r.a,o=r.b;return s(te,(function(n){return Xt(t)}),ue(s(vo,l(po,n,e,o),t.au)))})),ho=t((function(n,r){if(r.$){var t=r.a;return oo({aC:t.aC,aE:t.aE,aI:s(Cr,n,t.aI),ab:t.ab,aN:t.aN,aX:t.aX,aw:t.aw,o:t.o})}var e=r.a;return{$:0,a:e}})),mo=t((function(n,r){return{$:0,a:n,b:r}})),go=t((function(n,r){var t=r.a,e=r.b;return s(mo,t,s(Ve,e,n))}));En.Http=wn(io,so,bo,ho,go);var yo,$o,Eo,wo=jn("Http"),No=(jn("Http"),function(n){return function(n){return wo(oo({aC:!1,aE:n.aE,aI:n.aI,ab:n.ab,aN:n.aN,aX:n.aX,aw:n.aw,o:n.o}))}({aE:eo,aI:n.aI,ab:N,aN:"GET",aX:zr,aw:zr,o:n.o})}),Ao=p(V,u((function(n,r,t,e,o){return{r:n,y:e,d:o,T:t,u:r}})),s(ye,"artist",$e),s(ye,"title",$e),s(ye,"songImageUrl",$e),s(ye,"imageUrl",$e),s(ye,"name",$e)),xo=function(n){return No({aI:s(to,we,Ao),o:n})},jo=he(N),_o=$({O:""},jo),Mo=Mn,Oo=(t((function(n,r){return{$:0,a:n,b:r}})),yo=kt,fn((function(n){n(cn(yo(Date.now())))}))),Co=_n(N),Io=j([ge,{d:"3FM",n:"/api/nowplaying/radio3",F:"https://icecast.omroep.nl/3fm-bb-mp3"},{d:"Sky Radio",n:"",F:"https://19993.live.streamtheworld.com/SKYRADIO.mp3"},{d:"Pinguin Radio",n:"",F:"http://streams.pinguinradio.com/PinguinRadio320.mp3"}]),Ro=function(n){return""!==n.T?n.T:n.y},Do=t((function(n,r){return l(ne,t((function(r,t){return n(r)?s(Pr,r,t):t})),N,r)})),Po=t((function(n,r){return r.$?n:r.a})),To=t((function(n,r){return s(Po,ge,function(n){if(n.b){var r=n.a;n.b;return Wr(r)}return zr}(s(Do,(function(r){return h(r.d,n)}),r)))})),ko=an,So=(Eo=ko,Pn($o="setPlayPauseStatusPort"),En[$o]={e:Tn,u:Eo,a:kn},jn($o)),Fo=t((function(n,r){var t=function(n){return n?"Pause":"Play"}(n);return $(E(r,{O:t}),So(t))})),Lo=t((function(n,r){switch(n.$){case 0:var t=n.a,e=s(To,t,Io);return $(E(r,{w:e}),he(j([s(de,be,Oo),xo(w(r.o,e.n))])));case 1:var o=n.a;return $(E(r,{K:Jr(o)}),jo);case 2:return $(r,xo(w(r.o,r.w.n)));case 3:var u=n.a;if(u.$)return $(E(r,{r:"UNKNOWN",d:r.w.d,u:"UNKNOWN"}),jo);var i=u.a;return $(E(r,{r:i.r,y:Ro(i),d:i.d,u:i.u}),jo);default:var a=n.a,c=s(Fo,a,r.C),f=c.a,l=c.b;return $(E(r,{C:f}),he(j([s(de,be,Oo),s(Mo,pe,l)])))}})),Uo=q,Yo={$:2},Bo=function(n){return{$:0,a:n}},qo=Bn("audio"),Wo=Bn("button"),zo=Bn("option"),Go=Un,Ho=t((function(n,r){return s(Gn,n,ko(r))})),Jo=Ho("value"),Vo=function(n){return s(zo,j([Jo(n.d)]),j([Go(n.d)]))},Ko=Ho("className"),Xo=t((function(n,r){return r})),Zo=an,Qo=t((function(n,r){return s(Gn,n,Zo(r))}))("controls"),nu=Bn("div"),ru=Ho("id"),tu=Bn("img"),eu=qn,ou=zn,uu=t((function(n,r){return s(ou,n,{$:0,a:r})})),iu=function(n){return s(uu,"click",Pt(n))},au=Bn("p"),cu=Bn("select"),fu=function(n){return s(Ho,"src",/^\s*(javascript:|data:text\/html)/i.test(r=n)?"":r);var r},su=s(t((function(n,r){return l(ne,ye,r,n)})),j(["target","value"]),$e),lu=Ho("title"),du=Ho("type"),vu=function(n){return n.b},pu=Hn("d"),bu=Hn("height"),hu=Yn("http://www.w3.org/2000/svg"),mu=hu("path"),gu=hu("svg"),yu=Hn("viewBox"),$u=Hn("width"),Eu=s(gu,j([$u("50"),bu("50"),yu("0 0 357 357")]),j([s(mu,j([pu("M25.5,357h102V0h-102V357z M229.5,0v357h102V0H229.5z")]),N)])),wu=Hn("fill"),Nu=s(gu,j([$u("100"),bu("100"),yu("10 9 30 30")]),j([s(mu,j([pu("M-838-2232H562v3600H-838z"),wu("none")]),N),s(mu,j([pu("M16 10v28l22-14z")]),N),s(mu,j([pu("M0 0h48v48H0z"),wu("none")]),N)])),Au=function(n){return s(nu,j([Ko("controls")]),j([s(Wo,j([(r=j([$("play",!0),$("controls-button",!0),$("active","Play"===n.O)]),Ko(s(Vr," ",s(re,jt,s(Do,vu,r))))),iu(0)]),j([Nu])),s(Wo,j([Ko("pause controls-button"),iu(1)]),j([Eu]))]));var r};!function(r){n.Elm?function n(r,t){for(var e in t)e in r?"init"==e?R(6):n(r[e],t[e]):r[e]=t[e]}(n.Elm,r):n.Elm=r}({Elm:{Audio:{init:ve({aM:function(n){var r=_o,t=r.a,e=r.b,o=s(me,Ee,n);if(o.$)return $({r:"",w:ge,C:t,y:"",d:"",K:"",u:"",o:""},he(j([s(de,be,Oo),xo(ge.n),s(Mo,pe,e)])));var u=o.a;return $({r:"",w:ge,C:t,y:"",d:"",K:"",u:"",o:u.o},he(j([s(de,be,Oo),xo(w(u.o,ge.n)),s(Mo,pe,e)])))},aW:function(n){return Co},aY:Lo,aZ:function(n){return s(nu,j([Ko("card-wrapper aspect-ratio-outer")]),j([s(nu,j([Ko("card aspect-ratio-inner")]),j([s(nu,j([Ko("music-info")]),j([s(nu,j([Ko("music-info-content")]),j([s(nu,j([Ko("channel")]),j([s(cu,j([s(uu,"change",s(Rt,Bo,su))]),s(re,Vo,Io)),s(au,j([Ko("channel-info")]),j([Go(s(Xo,"programme name",n.d))]))])),s(au,j([Ko("title")]),j([Go(n.u)])),s(au,j([Ko("artist")]),j([Go(n.r)])),s(qo,j([ru("homeremote-stream-player-audio-elem"),fu(n.w.F+"?"+s(Xo,"timestamp",n.K)),du("audio/mpeg"),Qo(!0),s(uu,"play",Pt(Yo))]),j([Go("Your browser does not support the audio element.")])),s(eu,pe,Au(n.C))]))])),s(Wo,j([iu(Yo),lu("Get Now Playing"),Ko("get-now-playing")]),j([s(tu,j([fu(n.y)]),N)]))]))]))}})(Uo)(0)}}})}(this)},function(n,r,t){"use strict";t.r(r);var e=t(0),o=t.n(e),u=(t(4),t(1)),i=t.n(u),a=t(2),c=t.n(a),f=function(n){return function(r){r.setPlayPauseStatusPort.subscribe((function(r){var t=n.current.children[0].querySelector("audio");setTimeout((function(){"Play"===r?t.play():t.pause()}),50)}))}};r.default=function(n){var r=n.url,t=Object(e.useRef)(null);return o.a.createElement("div",{ref:t},o.a.createElement(i.a,{src:c.a.Elm.Elm.Audio,flags:{url:r},ports:f(t)}))}},function(n,r,t){var e=t(5);"string"==typeof e&&(e=[[n.i,e,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};t(7)(e,o);e.locals&&(n.exports=e.locals)},function(n,r,t){(r=t(6)(!1)).push([n.i,':root {\n --primary-color: #1a237e;\n --primary-color-dark: #141b62;\n --secondary-text-color: #909093;\n --border-radius: 4px;\n}\n\n.aspect-ratio-outer {\n position: relative;\n}\n\n.aspect-ratio-outer:before {\n display: block;\n content: "";\n width: 100%;\n padding-top: 50%; /* aspect ratio (1 / 2) * 100%; */\n}\n\n.aspect-ratio-outer > .aspect-ratio-inner {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n.card {\n background-color: white;\n border-radius: var(--border-radius);\n box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 6px, rgba(0, 0, 0, 0.12) 0px 1px 4px;\n display: flex;\n font-family: sans-serif;\n overflow: hidden;\n}\n\n.card > .music-info {\n flex: 1;\n}\n\n.card > .music-info .music-info-content {\n padding: 1rem;\n}\n\n.card > .music-info audio {\n display: none;\n}\n\n.card .controls {\n display: flex;\n}\n\n.card .controls > .controls-button {\n cursor: pointer;\n border: none;\n background: transparent;\n flex: 1;\n transition: fill 300ms;\n}\n\n.card .controls > .controls-button:hover {\n fill: #292929;\n transition: fill 500ms;\n}\n\n.card .controls > .controls-button.active {\n fill: var(--primary-color);\n}\n\n.card .controls > .controls-button.active:hover {\n fill: var(--primary-color-dark);\n}\n\n.card .controls > .play {\n fill: #3f3f3f;\n}\n\n.card .controls > .pause {\n fill: #b3b3b3;\n}\n\n.card .controls > .pause:hover {\n fill: #909090;\n}\n\n.card .channel {\n display: flex;\n align-items: center;\n margin-bottom: 0.5rem;\n}\n\nselect {\n border: none;\n background: transparent;\n border-bottom: 1px solid black;\n}\n\n.card .channel .channel-info {\n color: var(--secondary-text-color);\n font-size: 85%;\n margin: 0 0 0 0.3rem;\n max-height: 2rem;\n overflow: hidden;\n}\n\n.card .title {\n font-size: 125%;\n margin: 0;\n}\n\n.card .artist {\n color: var(--secondary-text-color);\n margin: 0 0 0.5rem 0;\n}\n\n.card > .get-now-playing {\n flex: 1;\n border: none;\n cursor: pointer;\n padding: 0;\n display: flex;\n flex-direction: column;\n background: transparent; /* needed for firefox border clipping */\n}\n\n.card > .get-now-playing img {\n border-bottom-right-radius: var(--border-radius);\n border-top-right-radius: var(--border-radius);\n object-fit: cover;\n height: 100%;\n width: 100%;\n}\n',""]),n.exports=r},function(n,r,t){"use strict";n.exports=function(n){var r=[];return r.toString=function(){return this.map((function(r){var t=function(n,r){var t=n[1]||"",e=n[3];if(!e)return t;if(r&&"function"==typeof btoa){var o=(i=e,a=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(c," */")),u=e.sources.map((function(n){return"/*# sourceURL=".concat(e.sourceRoot||"").concat(n," */")}));return[t].concat(u).concat([o]).join("\n")}var i,a,c;return[t].join("\n")}(r,n);return r[2]?"@media ".concat(r[2]," {").concat(t,"}"):t})).join("")},r.i=function(n,t,e){"string"==typeof n&&(n=[[null,n,""]]);var o={};if(e)for(var u=0;u=0&&l.splice(r,1)}function m(n){var r=document.createElement("style");if(void 0===n.attrs.type&&(n.attrs.type="text/css"),void 0===n.attrs.nonce){var e=function(){0;return t.nc}();e&&(n.attrs.nonce=e)}return g(r,n.attrs),b(n,r),r}function g(n,r){Object.keys(r).forEach((function(t){n.setAttribute(t,r[t])}))}function y(n,r){var t,e,o,u;if(r.transform&&n.css){if(!(u="function"==typeof r.transform?r.transform(n.css):r.transform.default(n.css)))return function(){};n.css=u}if(r.singleton){var i=s++;t=f||(f=m(r)),e=w.bind(null,t,i,!1),o=w.bind(null,t,i,!0)}else n.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(t=function(n){var r=document.createElement("link");return void 0===n.attrs.type&&(n.attrs.type="text/css"),n.attrs.rel="stylesheet",g(r,n.attrs),b(n,r),r}(r),e=A.bind(null,t,r),o=function(){h(t),t.href&&URL.revokeObjectURL(t.href)}):(t=m(r),e=N.bind(null,t),o=function(){h(t)});return e(n),function(r){if(r){if(r.css===n.css&&r.media===n.media&&r.sourceMap===n.sourceMap)return;e(n=r)}else o()}}n.exports=function(n,r){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(r=r||{}).attrs="object"==typeof r.attrs?r.attrs:{},r.singleton||"boolean"==typeof r.singleton||(r.singleton=i()),r.insertInto||(r.insertInto="head"),r.insertAt||(r.insertAt="bottom");var t=p(n,r);return v(t,r),function(n){for(var e=[],o=0;o100)return e.push($(n,r)),!0;for(var u in n.$<0&&(n=Fr(n),r=Fr(r)),n)if(!m(n[u],r[u],t+1,e))return!1;return!0}t(h),t((function(n,r){return!h(n,r)}));function g(n,r,t){if("object"!=typeof n)return n===r?0:n0})),t((function(n,r){return g(n,r)>=0}));var y=t((function(n,r){var t=g(n,r);return t<0?Pr:t?Dr:Ir}));function $(n,r){return{a:n,b:r}}function E(n,r){var t={};for(var e in n)t[e]=n[e];for(var e in r)t[e]=r[e];return t}t(w);function w(n,r){if("string"==typeof n)return n+r;if(!n.b)return r;var t=_(n.a,r);n=n.b;for(var e=t;n.b;n=n.b)e=e.b=_(n.a,r);return t}var N={$:0};function _(n,r){return{$:1,a:n,b:r}}var A=t(_);function x(n){for(var r=N,t=n.length;t--;)r=_(n[t],r);return r}function j(n){for(var r=[];n.b;n=n.b)r.push(n.a);return r}var M=e((function(n,r,t){for(var e=[];r.b&&t.b;r=r.b,t=t.b)e.push(s(n,r.a,t.a));return x(e)}));u((function(n,r,t,e){for(var u=[];r.b&&t.b&&e.b;r=r.b,t=t.b,e=e.b)u.push(l(n,r.a,t.a,e.a));return x(u)})),o((function(n,r,t,e,u){for(var o=[];r.b&&t.b&&e.b&&u.b;r=r.b,t=t.b,e=e.b,u=u.b)o.push(d(n,r.a,t.a,e.a,u.a));return x(o)})),i((function(n,r,t,e,u,o){for(var i=[];r.b&&t.b&&e.b&&u.b&&o.b;r=r.b,t=t.b,e=e.b,u=u.b,o=o.b)i.push(v(n,r.a,t.a,e.a,u.a,o.a));return x(i)})),t((function(n,r){return x(j(r).sort((function(r,t){return g(n(r),n(t))})))})),t((function(n,r){return x(j(r).sort((function(r,t){var e=s(n,r,t);return e===Ir?0:e===Pr?-1:1})))}));var C=e((function(n,r,t){for(var e=new Array(n),u=0;u=0;e--)r=s(n,t[e],r);return r})));t((function(n,r){for(var t=r.length,e=new Array(t),u=0;ut.length&&(u=t.length);for(var o=new Array(e+u),i=0;i"),r}));function D(n){throw new Error("https://github.com/elm/core/blob/1.0.0/hints/"+n+".md")}t((function(n,r){return n+r})),t((function(n,r){return n-r})),t((function(n,r){return n*r})),t((function(n,r){return n/r})),t((function(n,r){return n/r|0})),t(Math.pow),t((function(n,r){return r%n})),t((function(n,r){var t=r%n;return 0===n?D(11):t>0&&n<0||t<0&&n>0?t+n:t})),Math.PI,Math.E,Math.cos,Math.sin,Math.tan,Math.acos,Math.asin,Math.atan,t(Math.atan2);var P=Math.ceil,R=Math.floor,T=(Math.round,Math.sqrt,Math.log);isNaN;t((function(n,r){return n&&r})),t((function(n,r){return n||r})),t((function(n,r){return n!==r})),t((function(n,r){return n+r}));t((function(n,r){return n+r}));t((function(n,r){for(var t=r.length,e=new Array(t),u=0;u-1})),U=(t((function(n,r){return 0===r.indexOf(n)})),t((function(n,r){return r.length>=n.length&&r.lastIndexOf(n)===r.length-n.length})),t((function(n,r){var t=n.length;if(t<1)return N;for(var e=0,u=[];(e=r.indexOf(n,e))>-1;)u.push(e),e+=t;return x(u)})));function B(n){return{$:2,b:n}}B((function(n){return"number"!=typeof n?tn("an INT",n):-2147483647=r.length)return tn("a LONGER array. Need index "+u+" but only see "+r.length+" entries",r);e=Z(n.b,r[u]);return It(e)?e:Sr(s(Ur,u,e.a));case 8:if("object"!=typeof r||null===r||nn(r))return tn("an OBJECT",r);var o=N;for(var i in r)if(r.hasOwnProperty(i)){e=Z(n.b,r[i]);if(!It(e))return Sr(s(Lr,i,e.a));o=_($(i,e.a),o)}return Br(ft(o));case 9:for(var a=n.f,c=n.g,f=0;f=0&&t.splice(r,1)}}}var kn;t((function(n,r){return function(t){return n(r(t))}}));var Sn="undefined"!=typeof document?document:{};function Yn(n,r){n.appendChild(r)}u((function(n,r,t,e){var u=e.node;return u.parentNode.replaceChild(Qn(n,(function(){})),u),{}}));function Ln(n){return{$:0,a:n}}var Un=t((function(n,r){return t((function(t,e){for(var u=[],o=0;e.b;e=e.b){var i=e.a;o+=i.b||0,u.push(i)}return o+=u.length,{$:1,c:r,d:Xn(t),e:u,f:n,b:o}}))})),Bn=Un(void 0);t((function(n,r){return t((function(t,e){for(var u=[],o=0;e.b;e=e.b){var i=e.a;o+=i.b.b||0,u.push(i)}return o+=u.length,{$:2,c:r,d:Xn(t),e:u,f:n,b:o}}))}))(void 0);var qn=t((function(n,r){return{$:4,j:n,k:r,b:1+(r.b||0)}}));function Wn(n,r){return{$:5,l:n,m:r,k:void 0}}t((function(n,r){return Wn([n,r],(function(){return n(r)}))})),e((function(n,r,t){return Wn([n,r,t],(function(){return s(n,r,t)}))})),u((function(n,r,t,e){return Wn([n,r,t,e],(function(){return l(n,r,t,e)}))})),o((function(n,r,t,e,u){return Wn([n,r,t,e,u],(function(){return d(n,r,t,e,u)}))})),i((function(n,r,t,e,u,o){return Wn([n,r,t,e,u,o],(function(){return v(n,r,t,e,u,o)}))})),a((function(n,r,t,e,u,o,i){return Wn([n,r,t,e,u,o,i],(function(){return p(n,r,t,e,u,o,i)}))})),c((function(n,r,t,e,u,o,i,a){return Wn([n,r,t,e,u,o,i,a],(function(){return b(n,r,t,e,u,o,i,a)}))})),f((function(n,r,t,e,u,o,i,a,c){return Wn([n,r,t,e,u,o,i,a,c],(function(){return function(n,r,t,e,u,o,i,a,c){return 8===n.a?n.f(r,t,e,u,o,i,a,c):n(r)(t)(e)(u)(o)(i)(a)(c)}(n,r,t,e,u,o,i,a,c)}))}));var zn=t((function(n,r){return{$:"a0",n:n,o:r}})),Hn=(t((function(n,r){return{$:"a1",n:n,o:r}})),t((function(n,r){return{$:"a2",n:n,o:r}}))),Gn=t((function(n,r){return{$:"a3",n:n,o:r}}));e((function(n,r,t){return{$:"a4",n:r,o:{f:n,o:t}}}));t((function(n,r){return"a0"===r.$?s(zn,r.n,function(n,r){var t=Tt(r);return{$:r.$,a:t?l(Pt,t<3?Jn:Kn,Rt(n),r.a):s(Dt,n,r.a)}}(n,r.o)):r}));var Vn,Jn=t((function(n,r){return $(n(r.a),r.b)})),Kn=t((function(n,r){return{s:n(r.s),V:r.V,R:r.R}}));function Xn(n){for(var r={};n.b;n=n.b){var t=n.a,e=t.$,u=t.n,o=t.o;if("a2"!==e){var i=r[e]||(r[e]={});"a3"===e&&"class"===u?Zn(i,u,o):i[u]=o}else"className"===u?Zn(r,u,o):r[u]=o}return r}function Zn(n,r,t){var e=n[r];n[r]=e?e+" "+t:t}function Qn(n,r){var t=n.$;if(5===t)return Qn(n.k||(n.k=n.m()),r);if(0===t)return Sn.createTextNode(n.a);if(4===t){for(var e=n.k,u=n.j;4===e.$;)"object"!=typeof u?u=[u,e.j]:u.push(e.j),e=e.k;var o={j:u,p:r};return(i=Qn(e,o)).elm_event_node_ref=o,i}if(3===t)return nr(i=n.h(n.g),r,n.d),i;var i=n.f?Sn.createElementNS(n.f,n.c):Sn.createElement(n.c);kn&&"a"==n.c&&i.addEventListener("click",kn(i)),nr(i,r,n.d);for(var a=n.e,c=0;c0&&cr(t,1,e,s));case 4:for(var l=n.j,d=r.j,v=!1,p=n.k;4===p.$;)v=!0,"object"!=typeof l?l=[l,p.j]:l.push(p.j),p=p.k;for(var b=r.k;4===b.$;)v=!0,"object"!=typeof d?d=[d,b.j]:d.push(b.j),b=b.k;return v&&l.length!==d.length?void cr(t,0,e,r):((v?function(n,r){for(var t=0;ta?cr(t,6,e,{v:a,i:i-a}):i0||i.length>0||M)&&cr(t,8,e,{w:u,x:i,y:M})}function pr(n,r,t,e,u,o){var i=n[t];if(!i)return i={c:0,z:e,r:u,s:void 0},o.push({r:u,A:i}),void(n[t]=i);if(1===i.c){o.push({r:u,A:i}),i.c=2;var a=[];return fr(i.z,e,a,i.r),i.r=u,void(i.s.s={w:a,A:i})}pr(n,r,t+"_elmW6BL",e,u,o)}function br(n,r,t,e,u){var o=n[t];if(o){if(0===o.c){o.c=2;var i=[];return fr(e,o.z,i,u),void cr(r,9,u,{w:i,A:o})}br(n,r,t+"_elmW6BL",e,u)}else{var a=cr(r,9,u,void 0);n[t]={c:1,z:e,r:u,s:a}}}function hr(n,r,t,e){!function n(r,t,e,u,o,i,a){var c=e[u],f=c.r;for(;f===o;){var s=c.$;if(1===s)hr(r,t.k,c.s,a);else if(8===s){c.t=r,c.u=a,(l=c.s.w).length>0&&n(r,t,l,0,o,i,a)}else if(9===s){c.t=r,c.u=a;var l,d=c.s;if(d)d.A.s=r,(l=d.w).length>0&&n(r,t,l,0,o,i,a)}else c.t=r,c.u=a;if(u++,!(c=e[u])||(f=c.r)>i)return u}var v=t.$;if(4===v){for(var p=t.k;4===p.$;)p=p.k;return n(r,p,e,u,o+1,i,r.elm_event_node_ref)}for(var b=t.e,h=r.childNodes,m=0;mi))return u;o=y}return u}(n,r,t,0,0,r.b,e)}function mr(n,r,t,e){return 0===t.length?n:(hr(n,r,t,e),gr(n,t))}function gr(n,r){for(var t=0;t0){var i=u.substring(0,o),a=u.substring(o+2);r=l(Ve,i,(function(n){return Wr(Pe(n)?a+", "+n.a:a)}),r)}}return r}var Cr=e((function(n,r,t){return{$:0,d:n,b:r,a:t}})),Or=t((function(n,r){return{$:0,d:r.d,b:r.b,a:function(t){return n(r.a(t))}}}));t((function(n,r){return{$:0,a:n,b:r}}));t((function(n,r){return new Blob([r],{type:n})}));t((function(n,r){return fn((function(t){var e=setInterval((function(){dn(r)}),n);return function(){clearInterval(e)}}))}));var Ir=1,Dr=2,Pr=0,Rr=A,Tr=e((function(n,r,t){for(;;){if(-2===t.$)return r;var e=t.b,u=t.c,o=t.d,i=t.e,a=n,c=l(n,e,u,l(Tr,n,r,i));n=a,r=c,t=o}})),Fr=function(n){return l(Tr,e((function(n,r,t){return s(Rr,$(n,r),t)})),N,n)},kr=I,Sr=(e((function(n,r,e){var u=e.c,o=e.d,i=t((function(r,t){if(r.$){var e=r.a;return l(kr,n,t,e)}var u=r.a;return l(kr,i,t,u)}));return l(kr,i,l(kr,n,r,o),u)})),function(n){return{$:1,a:n}}),Yr=t((function(n,r){return{$:3,a:n,b:r}})),Lr=t((function(n,r){return{$:0,a:n,b:r}})),Ur=t((function(n,r){return{$:1,a:n,b:r}})),Br=function(n){return{$:0,a:n}},qr=function(n){return{$:2,a:n}},Wr=function(n){return{$:0,a:n}},zr={$:1},Hr=Y,Gr=on,Vr=function(n){return n+""},Jr=t((function(n,r){return s(k,n,j(r))})),Kr=t((function(n,r){return x(s(F,n,r))})),Xr=function(n){return s(Jr,"\n ",s(Kr,"\n",n))},Zr=e((function(n,r,t){for(;;){if(!t.b)return r;var e=t.a,u=t.b,o=n,i=s(n,e,r);n=o,r=i,t=u}})),Qr=function(n){return l(Zr,t((function(n,r){return r+1})),0,n)},nt=M,rt=e((function(n,r,t){for(;;){if(!(g(n,r)<1))return t;var e=n,u=r-1,o=s(Rr,r,t);n=e,r=u,t=o}})),tt=t((function(n,r){return l(rt,n,r,N)})),et=t((function(n,r){return l(nt,n,s(tt,0,Qr(r)-1),r)})),ut=function(n){var r=n.charCodeAt(0);return 55296<=r&&r<=56319?1024*(r-55296)+n.charCodeAt(1)-56320+65536:r},ot=function(n){var r=ut(n);return 97<=r&&r<=122},it=function(n){var r=ut(n);return r<=90&&65<=r},at=function(n){return ot(n)||it(n)},ct=function(n){return ot(n)||it(n)||function(n){var r=ut(n);return r<=57&&48<=r}(n)},ft=function(n){return l(Zr,Rr,N,n)},st=function(n){var r=n.charCodeAt(0);return isNaN(r)?zr:Wr(55296<=r&&r<=56319?$(n[0]+n[1],n.slice(2)):$(n[0],n.slice(1)))},lt=t((function(n,r){return"\n\n("+Vr(n+1)+") "+Xr(dt(r))})),dt=function(n){return s(vt,n,N)},vt=t((function(n,r){n:for(;;)switch(n.$){case 0:var t=n.a,e=n.b,u=function(){var n=st(t);if(1===n.$)return!1;var r=n.a,e=r.a,u=r.b;return at(e)&&s(Hr,ct,u)}(),o=e,i=s(Rr,u?"."+t:"['"+t+"']",r);n=o,r=i;continue n;case 1:var a=n.a,c=(e=n.b,"["+Vr(a)+"]");o=e,i=s(Rr,c,r);n=o,r=i;continue n;case 2:var f=n.a;if(f.b){if(f.b.b){var l=(r.b?"The Json.Decode.oneOf at json"+s(Jr,"",ft(r)):"Json.Decode.oneOf")+" failed in the following "+Vr(Qr(f))+" ways:";return s(Jr,"\n\n",s(Rr,l,s(et,lt,f)))}n=o=e=f.a,r=i=r;continue n}return"Ran into a Json.Decode.oneOf with no possibilities"+(r.b?" at json"+s(Jr,"",ft(r)):"!");default:var d=n.a,v=n.b;return(l=r.b?"Problem with the value at json"+s(Jr,"",ft(r))+":\n\n ":"Problem with the given value:\n\n")+(Xr(s(Gr,4,v))+"\n\n")+d}})),pt=u((function(n,r,t,e){return{$:0,a:n,b:r,c:t,d:e}})),bt=[],ht=P,mt=t((function(n,r){return T(r)/T(n)})),gt=ht(s(mt,2,32)),yt=d(pt,0,gt,bt,bt),$t=C,Et=(t((function(n,r){return n(r)})),t((function(n,r){return r(n)})),R),wt=function(n){return n.length},Nt=t((function(n,r){return g(n,r)>0?n:r})),_t=O,At=t((function(n,r){for(;;){var t=s(_t,32,n),e=t.a,u=t.b,o=s(Rr,{$:0,a:e},r);if(!u.b)return ft(o);n=u,r=o}})),xt=function(n){return n.a},jt=t((function(n,r){for(;;){var t=ht(r/32);if(1===t)return s(_t,32,n).a;n=s(At,n,N),r=t}})),Mt=t((function(n,r){if(r.a){var t=32*r.a,e=Et(s(mt,32,t-1)),u=n?ft(r.e):r.e,o=s(jt,u,r.a);return d(pt,wt(r.c)+t,s(Nt,5,e*gt),o,r.c)}return d(pt,wt(r.c),gt,bt,r.c)})),Ct=o((function(n,r,t,e,u){for(;;){if(r<0)return s(Mt,!1,{e:e,a:t/32|0,c:u});var o={$:1,a:l($t,32,r,n)};n=n,r=r-32,t=t,e=s(Rr,o,e),u=u}})),Ot=t((function(n,r){if(n<=0)return yt;var t=n%32,e=l($t,t,n-t,r);return v(Ct,r,n-t-32,n,N,e)})),It=function(n){return!n.$},Dt=G,Pt=V,Rt=function(n){return{$:0,a:n}},Tt=function(n){switch(n.$){case 0:return 0;case 1:return 1;case 2:return 2;default:return 3}},Ft=function(n){return n},kt=Ft,St=i((function(n,r,t,e,u,o){return{aa:o,ad:r,ah:e,aj:t,am:n,an:u}})),Yt=L,Lt=function(n){return n.length},Ut=S,Bt=t((function(n,r){return n<1?r:l(Ut,n,Lt(r),r)})),qt=U,Wt=function(n){return""===n},zt=t((function(n,r){return n<1?"":l(Ut,0,n,r)})),Ht=function(n){for(var r=0,t=n.charCodeAt(0),e=43==t||45==t?1:0,u=e;u500?l(Zr,n,r,ft(p)):d(Qt,n,r,t+1,p)))))}return s(n,u,s(n,i,s(n,c,r)))}return s(n,u,s(n,i,r))}return s(n,u,r)}return r})),ne=e((function(n,r,t){return d(Qt,n,r,0,t)})),re=t((function(n,r){return l(ne,t((function(r,t){return s(Rr,n(r),t)})),N,r)})),te=sn,ee=t((function(n,r){return s(te,(function(r){return Xt(n(r))}),r)})),ue=e((function(n,r,t){return s(te,(function(r){return s(te,(function(t){return Xt(s(n,r,t))}),t)}),r)})),oe=function(n){return l(ne,ue(Rr),Xt(N),n)},ie=_n,ae=t((function(n,r){var t=r;return vn(s(te,ie(n),t))})),ce=e((function(n,r,t){return s(ee,(function(n){return 0}),oe(s(re,ae(n),r)))})),fe=e((function(n,r,t){return Xt(0)})),se=t((function(n,r){return s(ee,n,r)}));En.Task=wn(Zt,ce,fe,se);var le=xn("Task"),de=t((function(n,r){return le(s(ee,n,r))})),ve=Er,pe=function(n){return{$:4,a:n}},be=function(n){return{$:1,a:n}},he=jn,me=X,ge={d:"NPO Radio 2",n:"/api/nowplaying/radio2",F:"https://icecast.omroep.nl/radio2-bb-mp3"},ye=z,$e=W,Ee=s(Dt,(function(n){return{o:n}}),s(ye,"url",$e)),we=function(n){return{$:3,a:n}},Ne=K,_e=t((function(n,r){return{$:3,a:n,b:r}})),Ae=function(n){return{$:0,a:n}},xe=t((function(n,r){return{$:4,a:n,b:r}})),je={$:2},Me=function(n){return{$:1,a:n}},Ce=function(n){return{$:0,a:n}},Oe={$:1},Ie={$:-2},De=Ie,Pe=function(n){return!n.$},Re=An,Te=y,Fe=t((function(n,r){n:for(;;){if(-2===r.$)return zr;var t=r.b,e=r.c,u=r.d,o=r.e;switch(s(Te,n,t)){case 0:n=n,r=u;continue n;case 1:return Wr(e);default:n=n,r=o;continue n}}})),ke=o((function(n,r,t,e,u){return{$:-1,a:n,b:r,c:t,d:e,e:u}})),Se=o((function(n,r,t,e,u){if(-1!==u.$||u.a){if(-1!==e.$||e.a||-1!==e.d.$||e.d.a)return v(ke,n,r,t,e,u);e.a,b=e.b,h=e.c;var o=e.d,i=(o.a,o.b),a=o.c,c=o.d,f=o.e;g=e.e;return v(ke,0,b,h,v(ke,1,i,a,c,f),v(ke,1,r,t,g,u))}u.a;var s=u.b,l=u.c,d=u.d,p=u.e;if(-1!==e.$||e.a)return v(ke,n,s,l,v(ke,0,r,t,e,d),p);e.a;var b=e.b,h=e.c,m=e.d,g=e.e;return v(ke,0,r,t,v(ke,1,b,h,m,g),v(ke,1,s,l,d,p))})),Ye=e((function(n,r,t){if(-2===t.$)return v(ke,0,n,r,Ie,Ie);var e=t.a,u=t.b,o=t.c,i=t.d,a=t.e;switch(s(Te,n,u)){case 0:return v(Se,e,u,o,l(Ye,n,r,i),a);case 1:return v(ke,e,u,r,i,a);default:return v(Se,e,u,o,i,l(Ye,n,r,a))}})),Le=e((function(n,r,t){var e=l(Ye,n,r,t);if(-1!==e.$||e.a)return e;e.a;var u=e.b,o=e.c,i=e.d,a=e.e;return v(ke,1,u,o,i,a)})),Ue=function(n){if(-1===n.$&&-1===n.d.$&&-1===n.e.$){if(-1!==n.e.d.$||n.e.d.a){n.a,u=n.b,o=n.c;var r=n.d,t=(r.a,a=r.b,c=r.c,f=r.d,s=r.e,n.e);t.a,d=t.b,p=t.c,e=t.d,y=t.e;return v(ke,1,u,o,v(ke,0,a,c,f,s),v(ke,0,d,p,e,y))}n.a;var e,u=n.b,o=n.c,i=n.d,a=(i.a,i.b),c=i.c,f=i.d,s=i.e,l=n.e,d=(l.a,l.b),p=l.c,b=((e=l.d).a,e.b),h=e.c,m=e.d,g=e.e,y=l.e;return v(ke,0,b,h,v(ke,1,u,o,v(ke,0,a,c,f,s),m),v(ke,1,d,p,g,y))}return n},Be=function(n){if(-1===n.$&&-1===n.d.$&&-1===n.e.$){if(-1!==n.d.d.$||n.d.d.a){n.a,u=n.b,o=n.c;var r=n.d,t=(r.a,a=r.b,c=r.c,r.d),e=(b=r.e,n.e);e.a,m=e.b,g=e.c,y=e.d,$=e.e;return v(ke,1,u,o,v(ke,0,a,c,t,b),v(ke,0,m,g,y,$))}n.a;var u=n.b,o=n.c,i=n.d,a=(i.a,i.b),c=i.c,f=i.d,s=(f.a,f.b),l=f.c,d=f.d,p=f.e,b=i.e,h=n.e,m=(h.a,h.b),g=h.c,y=h.d,$=h.e;return v(ke,0,a,c,v(ke,1,s,l,d,p),v(ke,1,u,o,b,v(ke,0,m,g,y,$)))}return n},qe=a((function(n,r,t,e,u,o,i){if(-1!==o.$||o.a){n:for(;;){if(-1===i.$&&1===i.a){if(-1===i.d.$){if(1===i.d.a){i.a,i.d.a;return Be(r)}break n}i.a,i.d;return Be(r)}break n}return r}o.a;var a=o.b,c=o.c,f=o.d,s=o.e;return v(ke,t,a,c,f,v(ke,0,e,u,s,i))})),We=function(n){if(-1===n.$&&-1===n.d.$){var r=n.a,t=n.b,e=n.c,u=n.d,o=u.a,i=u.d,a=n.e;if(1===o){if(-1!==i.$||i.a){var c=Ue(n);if(-1===c.$){var f=c.a,s=c.b,l=c.c,d=c.d,p=c.e;return v(Se,f,s,l,We(d),p)}return Ie}i.a;return v(ke,r,t,e,We(u),a)}return v(ke,r,t,e,We(u),a)}return Ie},ze=t((function(n,r){if(-2===r.$)return Ie;var t=r.a,e=r.b,u=r.c,o=r.d,i=r.e;if(g(n,e)<0){if(-1===o.$&&1===o.a){o.a;var a=o.d;if(-1!==a.$||a.a){var c=Ue(r);if(-1===c.$){var f=c.a,l=c.b,d=c.c,p=c.d,h=c.e;return v(Se,f,l,d,s(ze,n,p),h)}return Ie}a.a;return v(ke,t,e,u,s(ze,n,o),i)}return v(ke,t,e,u,s(ze,n,o),i)}return s(He,n,b(qe,n,r,t,e,u,o,i))})),He=t((function(n,r){if(-1===r.$){var t=r.a,e=r.b,u=r.c,o=r.d,i=r.e;if(h(n,e)){var a=function(n){for(;;){if(-1!==n.$||-1!==n.d.$)return n;n=n.d}}(i);if(-1===a.$){var c=a.b,f=a.c;return v(Se,t,c,f,o,We(i))}return Ie}return v(Se,t,e,u,o,s(ze,n,i))}return Ie})),Ge=t((function(n,r){var t=s(ze,n,r);if(-1!==t.$||t.a)return t;t.a;var e=t.b,u=t.c,o=t.d,i=t.e;return v(ke,1,e,u,o,i)})),Ve=e((function(n,r,t){var e=r(s(Fe,n,t));if(e.$)return s(Ge,n,t);var u=e.a;return l(Le,n,u,t)})),Je=e((function(n,r,t){return r(n(t))})),Ke=t((function(n,r){return l(Cr,"",Ft,s(Je,r,n))})),Xe=t((function(n,r){if(r.$){var t=r.a;return Sr(n(t))}var e=r.a;return Br(e)})),Ze=function(n){return{$:4,a:n}},Qe={$:2},nu={$:1},ru=t((function(n,r){switch(r.$){case 0:var t=r.a;return Sr({$:0,a:t});case 1:return Sr(nu);case 2:return Sr(Qe);case 3:var e=r.a;return Sr(function(n){return{$:3,a:n}}(e.aU));default:var u=r.b;return s(Xe,Ze,n(u))}})),tu=t((function(n,r){return s(Ke,n,ru((function(n){return s(Xe,dt,s(Ne,r,n))})))})),eu={$:0},uu=function(n){return{$:1,a:n}},ou=t((function(n,r){return{ap:n,au:r}})),iu=Xt(s(ou,De,N)),au=function(n){return fn((function(r){var t=n.f;2===t.$&&t.c&&t.c(),n.f=null,r(cn(0))}))},cu=vn,fu=e((function(n,r,t){n:for(;;){if(r.b){var e=r.a,u=r.b;if(e.$){var o=e.a;return s(te,(function(r){var e=o.aw;if(1===e.$)return l(fu,n,u,t);var i=e.a;return l(fu,n,u,l(Le,i,r,t))}),cu(l(jr,n,ie(n),o)))}var i=e.a,a=s(Fe,i,t);if(1===a.$){n=n,r=u,t=t;continue n}var c=a.a;return s(te,(function(r){return l(fu,n,u,s(Ge,i,t))}),au(c))}return Xt(t)}})),su=u((function(n,r,t,e){return s(te,(function(n){return Xt(s(ou,n,t))}),l(fu,n,r,e.ap))})),lu=e((function(n,r,t){var e=n(r);if(e.$)return t;var u=e.a;return s(Rr,u,t)})),du=t((function(n,r){return l(ne,lu(n),N,r)})),vu=u((function(n,r,t,e){var u=e.a,o=e.b;return h(r,u)?Wr(s(ie,n,o(t))):zr})),pu=e((function(n,r,t){var e=r.a,u=r.b;return s(te,(function(n){return Xt(t)}),oe(s(du,l(vu,n,e,u),t.au)))})),bu=t((function(n,r){if(r.$){var t=r.a;return uu({aC:t.aC,aE:t.aE,aI:s(Or,n,t.aI),ab:t.ab,aN:t.aN,aX:t.aX,aw:t.aw,o:t.o})}var e=r.a;return{$:0,a:e}})),hu=t((function(n,r){return{$:0,a:n,b:r}})),mu=t((function(n,r){var t=r.a,e=r.b;return s(hu,t,s(Je,e,n))}));En.Http=wn(iu,su,pu,bu,mu);var gu,yu,$u,Eu=xn("Http"),wu=(xn("Http"),function(n){return function(n){return Eu(uu({aC:!1,aE:n.aE,aI:n.aI,ab:n.ab,aN:n.aN,aX:n.aX,aw:n.aw,o:n.o}))}({aE:eu,aI:n.aI,ab:N,aN:"GET",aX:zr,aw:zr,o:n.o})}),Nu=p(J,o((function(n,r,t,e,u){return{r:n,y:e,d:u,T:t,u:r}})),s(ye,"artist",$e),s(ye,"title",$e),s(ye,"songImageUrl",$e),s(ye,"imageUrl",$e),s(ye,"name",$e)),_u=function(n){return wu({aI:s(tu,we,Nu),o:n})},Au=he(N),xu=$({O:""},Au),ju=Mn,Mu=(t((function(n,r){return{$:0,a:n,b:r}})),gu=Ft,fn((function(n){n(cn(gu(Date.now())))}))),Cu=jn(N),Ou=x([ge,{d:"3FM",n:"/api/nowplaying/radio3",F:"https://icecast.omroep.nl/3fm-bb-mp3"},{d:"Sky Radio",n:"",F:"https://19993.live.streamtheworld.com/SKYRADIO.mp3"},{d:"Pinguin Radio",n:"",F:"http://streams.pinguinradio.com/PinguinRadio320.mp3"}]),Iu=function(n){return""!==n.T?n.T:n.y},Du=t((function(n,r){return l(ne,t((function(r,t){return n(r)?s(Rr,r,t):t})),N,r)})),Pu=t((function(n,r){return r.$?n:r.a})),Ru=t((function(n,r){return s(Pu,ge,function(n){if(n.b){var r=n.a;n.b;return Wr(r)}return zr}(s(Du,(function(r){return h(r.d,n)}),r)))})),Tu=an,Fu=($u=Tu,Rn(yu="setPlayPauseStatusPort"),En[yu]={e:Tn,u:$u,a:Fn},xn(yu)),ku=t((function(n,r){var t=function(n){return n?"Pause":"Play"}(n);return $(E(r,{O:t}),Fu(t))})),Su=t((function(n,r){switch(n.$){case 0:var t=n.a,e=s(Ru,t,Ou);return $(E(r,{w:e}),he(x([s(de,be,Mu),_u(w(r.o,e.n))])));case 1:var u=n.a;return $(E(r,{K:Vr(u)}),Au);case 2:return $(r,_u(w(r.o,r.w.n)));case 3:var o=n.a;if(o.$)return $(E(r,{r:"UNKNOWN",d:r.w.d,u:"UNKNOWN"}),Au);var i=o.a;return $(E(r,{r:i.r,y:Iu(i),d:i.d,u:i.u}),Au);default:var a=n.a,c=s(ku,a,r.C),f=c.a,l=c.b;return $(E(r,{C:f}),he(x([s(de,be,Mu),s(ju,pe,l)])))}})),Yu=q,Lu={$:2},Uu=function(n){return{$:0,a:n}},Bu=Bn("audio"),qu=Bn("button"),Wu=Bn("option"),zu=Ln,Hu=t((function(n,r){return s(Hn,n,Tu(r))})),Gu=Hu("value"),Vu=function(n){return s(Wu,x([Gu(n.d)]),x([zu(n.d)]))},Ju=Hu("className"),Ku=t((function(n,r){return r})),Xu=an,Zu=t((function(n,r){return s(Hn,n,Xu(r))}))("controls"),Qu=Bn("div"),no=Hu("id"),ro=Bn("img"),to=qn,eo=zn,uo=t((function(n,r){return s(eo,n,{$:0,a:r})})),oo=function(n){return s(uo,"click",Rt(n))},io=Bn("p"),ao=Bn("select"),co=function(n){return s(Hu,"src",/^\s*(javascript:|data:text\/html)/i.test(r=n)?"":r);var r},fo=s(t((function(n,r){return l(ne,ye,r,n)})),x(["target","value"]),$e),so=Hu("title"),lo=Hu("type"),vo=function(n){return n.b},po=Gn("d"),bo=Gn("height"),ho=Un("http://www.w3.org/2000/svg"),mo=ho("path"),go=ho("svg"),yo=Gn("viewBox"),$o=Gn("width"),Eo=s(go,x([$o("50"),bo("50"),yo("0 0 357 357")]),x([s(mo,x([po("M25.5,357h102V0h-102V357z M229.5,0v357h102V0H229.5z")]),N)])),wo=Gn("fill"),No=s(go,x([$o("100"),bo("100"),yo("10 9 30 30")]),x([s(mo,x([po("M-838-2232H562v3600H-838z"),wo("none")]),N),s(mo,x([po("M16 10v28l22-14z")]),N),s(mo,x([po("M0 0h48v48H0z"),wo("none")]),N)])),_o=function(n){return s(Qu,x([Ju("controls")]),x([s(qu,x([(r=x([$("play",!0),$("controls-button",!0),$("active","Play"===n.O)]),Ju(s(Jr," ",s(re,xt,s(Du,vo,r))))),oo(0)]),x([No])),s(qu,x([Ju("pause controls-button"),oo(1)]),x([Eo]))]));var r};!function(r){n.Elm?function n(r,t){for(var e in t)e in r?"init"==e?D(6):n(r[e],t[e]):r[e]=t[e]}(n.Elm,r):n.Elm=r}({Elm:{Audio:{init:ve({aM:function(n){var r=xu,t=r.a,e=r.b,u=s(me,Ee,n);if(u.$)return $({r:"",w:ge,C:t,y:"",d:"",K:"",u:"",o:""},he(x([s(de,be,Mu),_u(ge.n),s(ju,pe,e)])));var o=u.a;return $({r:"",w:ge,C:t,y:"",d:"",K:"",u:"",o:o.o},he(x([s(de,be,Mu),_u(w(o.o,ge.n)),s(ju,pe,e)])))},aW:function(n){return Cu},aY:Su,aZ:function(n){return s(Qu,x([Ju("card-wrapper aspect-ratio-outer")]),x([s(Qu,x([Ju("card aspect-ratio-inner")]),x([s(Qu,x([Ju("music-info")]),x([s(Qu,x([Ju("music-info-content")]),x([s(Qu,x([Ju("channel")]),x([s(ao,x([s(uo,"change",s(Dt,Uu,fo))]),s(re,Vu,Ou)),s(io,x([Ju("channel-info")]),x([zu(s(Ku,"programme name",n.d))]))])),s(io,x([Ju("title")]),x([zu(n.u)])),s(io,x([Ju("artist")]),x([zu(n.r)])),s(Bu,x([no("homeremote-stream-player-audio-elem"),co(n.w.F+"?"+s(Ku,"timestamp",n.K)),lo("audio/mpeg"),Zu(!0),s(uo,"play",Rt(Lu))]),x([zu("Your browser does not support the audio element.")])),s(to,pe,_o(n.C))]))])),s(qu,x([oo(Lu),so("Get Now Playing"),Ju("get-now-playing")]),x([s(ro,x([co(n.y)]),N)]))]))]))}})(Yu)(0)}}})}(this)},function(n,r,t){"use strict";t.r(r);var e=t(0),u=t.n(e),o=(t(4),t(1)),i=t.n(o),a=t(2),c=t.n(a),f=function(n){return function(r){r.setPlayPauseStatusPort.subscribe((function(r){var t=n.current.children[0].querySelector("audio");setTimeout((function(){"Play"===r?t.play():t.pause()}),50)}))}};r.default=function(n){var r=n.url,t=Object(e.useRef)(null);return u.a.createElement("div",{ref:t},u.a.createElement(i.a,{src:c.a.Elm.Elm.Audio,flags:{url:r},ports:f(t)}))}},function(n,r,t){var e=t(5),u=t(6);"string"==typeof(u=u.__esModule?u.default:u)&&(u=[[n.i,u,""]]);var o={insert:"head",singleton:!1};e(u,o);n.exports=u.locals||{}},function(n,r,t){"use strict";var e,u=function(){return void 0===e&&(e=Boolean(window&&document&&document.all&&!window.atob)),e},o=function(){var n={};return function(r){if(void 0===n[r]){var t=document.querySelector(r);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(n){t=null}n[r]=t}return n[r]}}(),i=[];function a(n){for(var r=-1,t=0;t .aspect-ratio-inner {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n.card {\n background-color: white;\n border-radius: var(--border-radius);\n box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 6px, rgba(0, 0, 0, 0.12) 0px 1px 4px;\n display: flex;\n font-family: sans-serif;\n overflow: hidden;\n}\n\n.card > .music-info {\n flex: 1;\n}\n\n.card > .music-info .music-info-content {\n padding: 1rem;\n}\n\n.card > .music-info audio {\n display: none;\n}\n\n.card .controls {\n display: flex;\n}\n\n.card .controls > .controls-button {\n cursor: pointer;\n border: none;\n background: transparent;\n flex: 1;\n transition: fill 300ms;\n}\n\n.card .controls > .controls-button:hover {\n fill: #292929;\n transition: fill 500ms;\n}\n\n.card .controls > .controls-button.active {\n fill: var(--primary-color);\n}\n\n.card .controls > .controls-button.active:hover {\n fill: var(--primary-color-dark);\n}\n\n.card .controls > .play {\n fill: #3f3f3f;\n}\n\n.card .controls > .pause {\n fill: #b3b3b3;\n}\n\n.card .controls > .pause:hover {\n fill: #909090;\n}\n\n.card .channel {\n display: flex;\n align-items: center;\n margin-bottom: 0.5rem;\n}\n\nselect {\n border: none;\n background: transparent;\n border-bottom: 1px solid black;\n}\n\n.card .channel .channel-info {\n color: var(--secondary-text-color);\n font-size: 85%;\n margin: 0 0 0 0.3rem;\n max-height: 2rem;\n overflow: hidden;\n}\n\n.card .title {\n font-size: 125%;\n margin: 0;\n}\n\n.card .artist {\n color: var(--secondary-text-color);\n margin: 0 0 0.5rem 0;\n}\n\n.card > .get-now-playing {\n flex: 1;\n border: none;\n cursor: pointer;\n padding: 0;\n display: flex;\n flex-direction: column;\n background: transparent; /* needed for firefox border clipping */\n}\n\n.card > .get-now-playing img {\n border-bottom-right-radius: var(--border-radius);\n border-top-right-radius: var(--border-radius);\n object-fit: cover;\n height: 100%;\n width: 100%;\n}\n',""]),n.exports=r},function(n,r,t){"use strict";n.exports=function(n){var r=[];return r.toString=function(){return this.map((function(r){var t=function(n,r){var t=n[1]||"",e=n[3];if(!e)return t;if(r&&"function"==typeof btoa){var u=(i=e,a=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(c," */")),o=e.sources.map((function(n){return"/*# sourceURL=".concat(e.sourceRoot||"").concat(n," */")}));return[t].concat(o).concat([u]).join("\n")}var i,a,c;return[t].join("\n")}(r,n);return r[2]?"@media ".concat(r[2]," {").concat(t,"}"):t})).join("")},r.i=function(n,t,e){"string"==typeof n&&(n=[[null,n,""]]);var u={};if(e)for(var o=0;o Date: Sat, 22 May 2021 20:10:36 +0200 Subject: [PATCH 58/62] Ignore lib in dockerlist-client --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 09593de..e410516 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,5 @@ repl-temp-* /old /storybook-static + +/packages/dockerlist-client/lib \ No newline at end of file From 1ca54caae9e19856b0e09d81bd46417db510ce80 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 20:10:59 +0200 Subject: [PATCH 59/62] v1.7.0 --- lerna.json | 2 +- packages/dockerlist-client/package.json | 2 +- packages/dockerlist-server/package.json | 2 +- packages/example/package.json | 6 +++--- packages/streamplayer-client/package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lerna.json b/lerna.json index e236a9c..e9c00de 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.6.3", + "version": "1.7.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/dockerlist-client/package.json b/packages/dockerlist-client/package.json index b454293..107ffec 100644 --- a/packages/dockerlist-client/package.json +++ b/packages/dockerlist-client/package.json @@ -1,6 +1,6 @@ { "name": "@mdworld/homeremote-dockerlist", - "version": "1.6.3", + "version": "1.7.0", "main": "./lib/DockerList.js", "types": "./lib/DockerList.d.ts", "repository": { diff --git a/packages/dockerlist-server/package.json b/packages/dockerlist-server/package.json index b80321f..03a03a5 100644 --- a/packages/dockerlist-server/package.json +++ b/packages/dockerlist-server/package.json @@ -1,6 +1,6 @@ { "name": "@mdworld/homeremote-dockerlist-server", - "version": "1.0.0", + "version": "1.7.0", "dependencies": { "express": "^4.17.1", "got": "^11.8.0" diff --git a/packages/example/package.json b/packages/example/package.json index d7504ef..eec43c8 100644 --- a/packages/example/package.json +++ b/packages/example/package.json @@ -1,10 +1,10 @@ { "name": "example", - "version": "1.6.3", + "version": "1.7.0", "private": true, "dependencies": { - "@mdworld/homeremote-dockerlist": "^1.6.3", - "@mdworld/homeremote-stream-player": "^1.6.3" + "@mdworld/homeremote-dockerlist": "^1.7.0", + "@mdworld/homeremote-stream-player": "^1.7.0" }, "scripts": { "start": "node server.js", diff --git a/packages/streamplayer-client/package.json b/packages/streamplayer-client/package.json index 62b7812..79afb98 100644 --- a/packages/streamplayer-client/package.json +++ b/packages/streamplayer-client/package.json @@ -1,6 +1,6 @@ { "name": "@mdworld/homeremote-stream-player", - "version": "1.6.3", + "version": "1.7.0", "main": "./lib/StreamPlayer.js", "types": "./lib/StreamPlayer.d.ts", "repository": { From dfee405c30a158f116aaf515983f39c81014b979 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 20:14:37 +0200 Subject: [PATCH 60/62] Map main and type --- packages/dockerlist-client/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/dockerlist-client/package.json b/packages/dockerlist-client/package.json index 107ffec..c22b93b 100644 --- a/packages/dockerlist-client/package.json +++ b/packages/dockerlist-client/package.json @@ -1,8 +1,8 @@ { "name": "@mdworld/homeremote-dockerlist", "version": "1.7.0", - "main": "./lib/DockerList.js", - "types": "./lib/DockerList.d.ts", + "main": "./src/DockerList.bs.js", + "types": "./src/DockerList.gen.tsx", "repository": { "type": "git", "url": "https://github.com/mdvanes/homeremote-plugins.git" From 91d6b5f835b9e45013b89849a968d1d210852f4f Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sat, 22 May 2021 20:15:01 +0200 Subject: [PATCH 61/62] v1.7.1 --- lerna.json | 2 +- packages/dockerlist-client/package.json | 2 +- packages/example/package.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lerna.json b/lerna.json index e9c00de..1a3a9bc 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.7.0", + "version": "1.7.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/dockerlist-client/package.json b/packages/dockerlist-client/package.json index c22b93b..f8f52a0 100644 --- a/packages/dockerlist-client/package.json +++ b/packages/dockerlist-client/package.json @@ -1,6 +1,6 @@ { "name": "@mdworld/homeremote-dockerlist", - "version": "1.7.0", + "version": "1.7.1", "main": "./src/DockerList.bs.js", "types": "./src/DockerList.gen.tsx", "repository": { diff --git a/packages/example/package.json b/packages/example/package.json index eec43c8..501f95d 100644 --- a/packages/example/package.json +++ b/packages/example/package.json @@ -1,9 +1,9 @@ { "name": "example", - "version": "1.7.0", + "version": "1.7.1", "private": true, "dependencies": { - "@mdworld/homeremote-dockerlist": "^1.7.0", + "@mdworld/homeremote-dockerlist": "^1.7.1", "@mdworld/homeremote-stream-player": "^1.7.0" }, "scripts": { From f97d3610ac51f3ae601c9d906f6c29dfb7adcf80 Mon Sep 17 00:00:00 2001 From: "M.D. van Es" Date: Sun, 23 May 2021 10:09:38 +0200 Subject: [PATCH 62/62] Add dockerlist to example app --- mocks/api/dockerlist/index.json | 18 ++++++++++++++++++ packages/dockerlist-client/.bsb.lock | 1 + .../src/DockerList.stories.tsx | 2 +- packages/example/src/ExampleApp.stories.tsx | 11 +++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 mocks/api/dockerlist/index.json create mode 100644 packages/dockerlist-client/.bsb.lock diff --git a/mocks/api/dockerlist/index.json b/mocks/api/dockerlist/index.json new file mode 100644 index 0000000..5c20ff9 --- /dev/null +++ b/mocks/api/dockerlist/index.json @@ -0,0 +1,18 @@ +{ + "status": "received", + "containers": [ + { + "Id": "245425425245afafaffaaafaffaaffaa43542524524524524542542444452532", + "Names": ["/determined_edison"], + "State": "running", + "Status": "Up 11 days" + }, + + { + "Id": "245425425245afafaffaaafaffaaffaa43542524524524524542542444452531", + "Names": ["/hello_world"], + "State": "exited", + "Status": "Exited (0) 42 hours ago" + } + ] +} diff --git a/packages/dockerlist-client/.bsb.lock b/packages/dockerlist-client/.bsb.lock new file mode 100644 index 0000000..18252ae --- /dev/null +++ b/packages/dockerlist-client/.bsb.lock @@ -0,0 +1 @@ +398540 \ No newline at end of file diff --git a/packages/dockerlist-client/src/DockerList.stories.tsx b/packages/dockerlist-client/src/DockerList.stories.tsx index ca5432b..63281d2 100644 --- a/packages/dockerlist-client/src/DockerList.stories.tsx +++ b/packages/dockerlist-client/src/DockerList.stories.tsx @@ -20,7 +20,7 @@ export const Default = ({ width }: { width: number }): ReactNode => ( diff --git a/packages/example/src/ExampleApp.stories.tsx b/packages/example/src/ExampleApp.stories.tsx index f26fd1a..0eb934a 100644 --- a/packages/example/src/ExampleApp.stories.tsx +++ b/packages/example/src/ExampleApp.stories.tsx @@ -1,9 +1,12 @@ import React, { FC, ReactNode } from "react"; // NOTE only use compiled versions, i.e. from lib! To get a good idea of what use of the modules looks like import StreamPlayer from "@mdworld/homeremote-stream-player"; +import { DockerListMod } from "@mdworld/homeremote-dockerlist"; import { Meta } from "@storybook/react"; import "./storybookStyles.css"; +const DockerList = DockerListMod.make; + export default { title: `ExampleApp`, component: StreamPlayer, @@ -46,5 +49,13 @@ export const Default = (): ReactNode => ( from this monorepo.

+ alert("some error has occurred" + err)} + confirmButtonStyle={{ + backgroundColor: "#1a237e", + color: "white", + }} + /> );