Changelog (#531)

This commit is contained in:
InfiniteTF
2020-05-19 00:37:56 +02:00
committed by GitHub
parent 0fc57ce1e0
commit 5450fe8e9a
15 changed files with 484 additions and 23 deletions

View File

@@ -55,6 +55,7 @@
"react-images": "0.5.19", "react-images": "0.5.19",
"react-intl": "^4.5.1", "react-intl": "^4.5.1",
"react-jw-player": "1.19.1", "react-jw-player": "1.19.1",
"react-markdown": "^4.3.1",
"react-photo-gallery": "^8.0.0", "react-photo-gallery": "^8.0.0",
"react-router-bootstrap": "^0.25.0", "react-router-bootstrap": "^0.25.0",
"react-router-dom": "^5.1.2", "react-router-dom": "^5.1.2",

View File

@@ -0,0 +1,52 @@
import React from "react";
import { useChangelogStorage } from "src/hooks";
import Version from "./Version";
import { V010, V011, V020 } from "./versions";
const Changelog: React.FC = () => {
const [{ data, loading }, setOpenState] = useChangelogStorage();
if (loading) return <></>;
const openState = data?.versions ?? {};
const setVersionOpenState = (key: string, state: boolean) =>
setOpenState({
versions: {
...openState,
[key]: state,
},
});
return (
<>
<h1 className="mb-4">Changelog:</h1>
<Version
version="v0.2.0"
openState={openState}
setOpenState={setVersionOpenState}
defaultOpen
>
<V020 />
</Version>
<Version
version="v0.1.1"
date="2020-02-25"
openState={openState}
setOpenState={setVersionOpenState}
>
<V011 />
</Version>
<Version
version="v0.1.0"
date="2020-02-24"
openState={openState}
setOpenState={setVersionOpenState}
>
<V010 />
</Version>
</>
);
};
export default Changelog;

View File

@@ -0,0 +1,59 @@
import React, { useState } from "react";
import { Button, Card, Collapse } from "react-bootstrap";
import { FormattedDate, FormattedMessage } from "react-intl";
import { Icon } from "src/components/Shared";
interface IVersionProps {
version: string;
date?: string;
defaultOpen?: boolean;
setOpenState: (key: string, state: boolean) => void;
openState: Record<string, boolean>;
}
const Version: React.FC<IVersionProps> = ({
version,
date,
defaultOpen,
openState,
setOpenState,
children,
}) => {
const [open, setOpen] = useState(
defaultOpen ?? openState[version + date] ?? false
);
const updateState = () => {
setOpenState(version + date, !open);
setOpen(!open);
};
return (
<Card className="changelog-version">
<Card.Header>
<h4 className="changelog-version-header d-flex align-items-center">
<Button onClick={updateState} variant="link">
<Icon icon={open ? "angle-up" : "angle-down"} className="mr-3" />
{version} (
{date ? (
<FormattedDate value={new Date(Date.parse(date))} />
) : (
<FormattedMessage
defaultMessage="Development Version"
id="developmentVersion"
/>
)}
)
</Button>
</h4>
</Card.Header>
<Card.Body>
<Collapse in={open}>
<div className="changelog-version-body">{children}</div>
</Collapse>
</Card.Body>
</Card>
);
};
export default Version;

View File

@@ -0,0 +1,38 @@
.changelog {
margin-bottom: 4rem;
margin-top: 4rem;
.btn {
color: inherit;
font-size: inherit;
font-weight: inherit;
&:focus {
text-decoration: unset;
}
&:hover {
text-decoration: underline;
}
}
.card,
.card-body {
padding: 0;
}
ul {
list-style-type: none;
padding-left: 0.5rem;
}
&-version {
&-body {
padding: 1rem 2rem;
}
&-header {
color: $text-color;
}
}
}

View File

@@ -0,0 +1,3 @@
export { default as V010 } from "./v010";
export { default as V011 } from "./v011";
export { default as V020 } from "./v020";

View File

@@ -0,0 +1,55 @@
import React from "react";
import ReactMarkdown from "react-markdown";
const markup = `
### ✨ New Features
* Configurable custom performer scrapers
* Support looping of short videos.
* Optionally auto-start videos.
* Add scene auto-tagging from filename
* Add Play random button to scenes and scene markers page
* Allow uploading of custom scene covers
* Configurable custom scene metadata scrapers
* Add "Open Random" to performer list
* Add scenes tab to performer page
* Add version check
* Add "O-" (or "splooge-") counter
* Add external_host option
### 🎨 Improvements
* Improve scene wall layout
* Read config from current working directory before user profile directory
* Upload pull request builds to transfer.sh
* Save interface options
* Change marker time input to mm:ss
* Allow pasting image into performer/studio
* Scene UI improvements
* Update JWPlayer to 8.11.5
* Beautify scene list table
* Add responsive menu
* Make scene metadata from file metadata optional
* Add transcode seeking support to JWPlayer and remove video.js
* Allow exclusion patterns for scanning
* Support scraping from other stash instances
* Display both server address and listening address in log
* Add scene duration filter
* Add useful links to about page
* Generate a new order when selecting random sorting
* Maintain filter parameters in session
* Change thumbnail default size and resize algorithm
* Improve caching of static files and performer images
* Improve position and cropping of performer images
* Improve stats page
### 🐛 Bug fixes
* Fix importing on Windows
* Fix previews sometimes taking a long time to generate
* Fix input fields losing focus when switching between windows
* Fix VTT for chapter display in scene players
* Fix usage of Box.Bytes causing depreciation message
`;
export default () => <ReactMarkdown source={markup} />;

View File

@@ -0,0 +1,9 @@
import React from "react";
import ReactMarkdown from "react-markdown";
const markup = `
### 🐛 Bug fixes
Fix version checking.
`;
export default () => <ReactMarkdown source={markup} />;

View File

@@ -0,0 +1,59 @@
import React from "react";
import ReactMarkdown from "react-markdown";
const markup = `
#### 💥 **Note: After upgrading performance will be degraded until a full [scan](/settings?tab=tasks) has been completed.**
&nbsp;
### ✨ New Features
* Movies are now supported.
* Responsive layout for mobile phones.
* Add support for image scraping.
* Allow user to regenerate scene cover based on timestamp.
* Autoassociate galleries to scenes when scanning.
* Configurable scraper user agent string.
* Backup database if a migration is needed.
* Add modes for performer/tag for bulk scene editing.
* Add gender support for performer.
* Add SVG studio image support, and studio image caching.
* Enable sorting for galleries.
* Add scene rating to scene filename parser.
* Replace basic auth with cookie authentication.
* Add detection of container/video_codec/audio_codec compatibility for live file streaming or transcoding.
* Move image with cover.jpg in name to first place in Galleries.
* Add "reshuffle button" when sortby is random.
* Implement clean for missing galleries.
* Add parser support for 3-letter month.
* Add is-missing tags filter.
### 🎨 Improvements
* Performance improvements and improved video support.
* Support for localized text, dates and numbers.
* Replace Blueprint with react-bootstrap.
* Add image count to gallery list.
* Add library size to main stats page.
* Add slim endpoints for entities to speed up filters.
* Export performance optimization.
* Add random male performer image.
* Added various missing filters to performer page.
* Add index/total count to end of pagination buttons.
* Add flags for performer countries.
* Querybuilder integration tests.
* Overhaul look and feel of folder select.
* Add changelog to start page.
### 🐛 Bug fixes
* Update performer image in UI when it's replaced.
* Fix performer height filter.
* Fix error when viewing scenes related to objects with illegal characters in name.
* Make ethnicity freetext and fix freeones ethnicity panic.
* Delete marker preview on marker change or delete.
* Prefer modified performer image over scraped one.
* Include gender in performer scraper results.
* Include scene o-counter in import/export.
* Make image extension check in zip files case insensitive.
* Update built-in Freeones scraper for new API.
`;
export default () => <ReactMarkdown source={markup} />;

View File

@@ -2,6 +2,7 @@ import React from "react";
import { useStats } from "src/core/StashService"; import { useStats } from "src/core/StashService";
import { FormattedMessage, FormattedNumber } from "react-intl"; import { FormattedMessage, FormattedNumber } from "react-intl";
import { LoadingIndicator } from "src/components/Shared"; import { LoadingIndicator } from "src/components/Shared";
import Changelog from "src/components/Changelog/Changelog";
export const Stats: React.FC = () => { export const Stats: React.FC = () => {
const { data, error, loading } = useStats(); const { data, error, loading } = useStats();
@@ -73,6 +74,9 @@ export const Stats: React.FC = () => {
</p> </p>
</div> </div>
</div> </div>
<div className="changelog col col-sm-8 mx-sm-auto">
<Changelog />
</div>
</div> </div>
); );
}; };

View File

@@ -14,8 +14,9 @@ export interface IInterfaceConfig {
queries?: Record<string, IInterfaceQueryConfig>; queries?: Record<string, IInterfaceQueryConfig>;
} }
type ValidTypes = IInterfaceConfig; export interface IChangelogConfig {
type Key = "interface"; versions: Record<string, boolean>;
}
interface ILocalForage<T> { interface ILocalForage<T> {
data?: T; data?: T;
@@ -24,13 +25,13 @@ interface ILocalForage<T> {
} }
const Loading: Record<string, boolean> = {}; const Loading: Record<string, boolean> = {};
const Cache: Record<string, ValidTypes> = {}; const Cache: Record<string, {}> = {};
function useLocalForage( function useLocalForage<T>(
key: Key key: string
): [ILocalForage<ValidTypes>, Dispatch<SetStateAction<ValidTypes>>] { ): [ILocalForage<T>, Dispatch<SetStateAction<T>>] {
const [error, setError] = React.useState(null); const [error, setError] = React.useState(null);
const [data, setData] = React.useState(Cache[key]); const [data, setData] = React.useState<T>(Cache[key] as T);
const [loading, setLoading] = React.useState(Loading[key]); const [loading, setLoading] = React.useState(Loading[key]);
useEffect(() => { useEffect(() => {
@@ -42,7 +43,7 @@ function useLocalForage(
setData(parsed); setData(parsed);
Cache[key] = parsed; Cache[key] = parsed;
} else { } else {
setData({}); setData({} as T);
Cache[key] = {}; Cache[key] = {};
} }
setError(null); setError(null);
@@ -72,9 +73,8 @@ function useLocalForage(
return [{ data, error, loading: isLoading }, setData]; return [{ data, error, loading: isLoading }, setData];
} }
export function useInterfaceLocalForage(): [ export const useInterfaceLocalForage = () =>
ILocalForage<IInterfaceConfig>, useLocalForage<IInterfaceConfig>("interface");
Dispatch<SetStateAction<IInterfaceConfig>>
] { export const useChangelogStorage = () =>
return useLocalForage("interface"); useLocalForage<IChangelogConfig>("changelog");
}

View File

@@ -1,5 +1,5 @@
export { default as useToast } from "./Toast"; export { default as useToast } from "./Toast";
export { useInterfaceLocalForage } from "./LocalForage"; export { useInterfaceLocalForage, useChangelogStorage } from "./LocalForage";
export { useVideoHover } from "./VideoHover"; export { useVideoHover } from "./VideoHover";
export { export {
useScenesList, useScenesList,

View File

@@ -1,6 +1,7 @@
@import "styles/theme"; @import "styles/theme";
@import "styles/range"; @import "styles/range";
@import "styles/scrollbars"; @import "styles/scrollbars";
@import "src/components/Changelog/styles.scss";
@import "src/components/Galleries/styles.scss"; @import "src/components/Galleries/styles.scss";
@import "src/components/List/styles.scss"; @import "src/components/List/styles.scss";
@import "src/components/Movies/styles.scss"; @import "src/components/Movies/styles.scss";
@@ -27,10 +28,6 @@ body {
padding: 4rem 0 0 0; padding: 4rem 0 0 0;
} }
a {
color: $primary;
}
code, code,
.code { .code {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",

View File

@@ -1,4 +1,5 @@
{ {
"developmentVersion": "",
"galleries": "Galerien", "galleries": "Galerien",
"library-size": "", "library-size": "",
"markers": "", "markers": "",
@@ -7,5 +8,6 @@
"performers": "Künstler", "performers": "Künstler",
"scenes": "Szenen", "scenes": "Szenen",
"studios": "Studios", "studios": "Studios",
"tags": "Etiketten" "tags": "Etiketten",
"up-dir": ""
} }

View File

@@ -1,4 +1,5 @@
{ {
"developmentVersion": "Development Version",
"galleries": "Galleries", "galleries": "Galleries",
"library-size": "Library size", "library-size": "Library size",
"markers": "Markers", "markers": "Markers",
@@ -7,5 +8,6 @@
"performers": "Performers", "performers": "Performers",
"scenes": "Scenes", "scenes": "Scenes",
"studios": "Studios", "studios": "Studios",
"tags": "Tags" "tags": "Tags",
"up-dir": "Up a directory"
} }

View File

@@ -5540,7 +5540,7 @@ dom-helpers@^5.0.1, dom-helpers@^5.1.0, dom-helpers@^5.1.2:
"@babel/runtime" "^7.6.3" "@babel/runtime" "^7.6.3"
csstype "^2.6.7" csstype "^2.6.7"
dom-serializer@0: dom-serializer@0, dom-serializer@^0.2.1:
version "0.2.2" version "0.2.2"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
@@ -5577,6 +5577,13 @@ domhandler@^2.3.0:
dependencies: dependencies:
domelementtype "1" domelementtype "1"
domhandler@^3.0, domhandler@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9"
integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==
dependencies:
domelementtype "^2.0.1"
domutils@1.5.1: domutils@1.5.1:
version "1.5.1" version "1.5.1"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
@@ -5593,6 +5600,15 @@ domutils@^1.5.1, domutils@^1.7.0:
dom-serializer "0" dom-serializer "0"
domelementtype "1" domelementtype "1"
domutils@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.1.0.tgz#7ade3201af43703fde154952e3a868eb4b635f16"
integrity sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg==
dependencies:
dom-serializer "^0.2.1"
domelementtype "^2.0.1"
domhandler "^3.0.0"
dot-case@^3.0.3: dot-case@^3.0.3:
version "3.0.3" version "3.0.3"
resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa"
@@ -7317,6 +7333,16 @@ html-tags@^3.1.0:
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==
html-to-react@^1.3.4:
version "1.4.2"
resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.2.tgz#7b628ab56cd63a52f2d0b79d0fa838a51f088a57"
integrity sha512-TdTfxd95sRCo6QL8admCkE7mvNNrXtGoVr1dyS+7uvc8XCqAymnf/6ckclvnVbQNUo2Nh21VPwtfEHd0khiV7g==
dependencies:
domhandler "^3.0"
htmlparser2 "^4.0"
lodash.camelcase "^4.3.0"
ramda "^0.26"
html-webpack-plugin@4.0.0-beta.11: html-webpack-plugin@4.0.0-beta.11:
version "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" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715"
@@ -7341,6 +7367,16 @@ htmlparser2@^3.10.0, htmlparser2@^3.3.0:
inherits "^2.0.1" inherits "^2.0.1"
readable-stream "^3.1.1" readable-stream "^3.1.1"
htmlparser2@^4.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78"
integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==
dependencies:
domelementtype "^2.0.1"
domhandler "^3.0.0"
domutils "^2.0.0"
entities "^2.0.0"
http-deceiver@^1.2.7: http-deceiver@^1.2.7:
version "1.2.7" version "1.2.7"
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
@@ -7841,7 +7877,7 @@ is-binary-path@~2.1.0:
dependencies: dependencies:
binary-extensions "^2.0.0" binary-extensions "^2.0.0"
is-buffer@^1.0.2, is-buffer@^1.1.5: is-buffer@^1.0.2, is-buffer@^1.1.4, is-buffer@^1.1.5:
version "1.1.6" version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
@@ -9157,6 +9193,11 @@ lodash._reinterpolate@^3.0.0:
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
lodash.includes@^4.3.0: lodash.includes@^4.3.0:
version "4.3.0" version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
@@ -9413,6 +9454,13 @@ md5.js@^1.3.4:
inherits "^2.0.1" inherits "^2.0.1"
safe-buffer "^5.1.2" safe-buffer "^5.1.2"
mdast-add-list-metadata@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz#95e73640ce2fc1fa2dcb7ec443d09e2bfe7db4cf"
integrity sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA==
dependencies:
unist-util-visit-parents "1.1.2"
mdast-util-compact@^2.0.0: mdast-util-compact@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490"
@@ -10463,6 +10511,18 @@ parse-asn1@^5.0.0:
pbkdf2 "^3.0.3" pbkdf2 "^3.0.3"
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
parse-entities@^1.1.0:
version "1.2.2"
resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50"
integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==
dependencies:
character-entities "^1.0.0"
character-entities-legacy "^1.0.0"
character-reference-invalid "^1.0.0"
is-alphanumerical "^1.0.0"
is-decimal "^1.0.0"
is-hexadecimal "^1.0.0"
parse-entities@^2.0.0: parse-entities@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8"
@@ -11789,6 +11849,11 @@ raf@^3.4.1:
dependencies: dependencies:
performance-now "^2.1.0" performance-now "^2.1.0"
ramda@^0.26:
version "0.26.1"
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06"
integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -11951,6 +12016,11 @@ react-is@^16.3.2, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
react-is@^16.8.6:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-jw-player@1.19.1: react-jw-player@1.19.1:
version "1.19.1" version "1.19.1"
resolved "https://registry.yarnpkg.com/react-jw-player/-/react-jw-player-1.19.1.tgz#1d4ff99d3a5850ed4a628dbc6c473149c5490e1c" resolved "https://registry.yarnpkg.com/react-jw-player/-/react-jw-player-1.19.1.tgz#1d4ff99d3a5850ed4a628dbc6c473149c5490e1c"
@@ -11963,6 +12033,20 @@ react-lifecycles-compat@^3.0.4:
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
react-markdown@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-4.3.1.tgz#39f0633b94a027445b86c9811142d05381300f2f"
integrity sha512-HQlWFTbDxTtNY6bjgp3C3uv1h2xcjCSi1zAEzfBW9OwJJvENSYiLXWNXN5hHLsoqai7RnZiiHzcnWdXk2Splzw==
dependencies:
html-to-react "^1.3.4"
mdast-add-list-metadata "1.0.1"
prop-types "^15.7.2"
react-is "^16.8.6"
remark-parse "^5.0.0"
unified "^6.1.5"
unist-util-visit "^1.3.0"
xtend "^4.0.1"
react-overlays@^3.1.2: react-overlays@^3.1.2:
version "3.1.3" version "3.1.3"
resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-3.1.3.tgz#e6ac2b43fd2179924491bd794508072399940128" resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-3.1.3.tgz#e6ac2b43fd2179924491bd794508072399940128"
@@ -12461,6 +12545,27 @@ relay-runtime@9.1.0:
"@babel/runtime" "^7.0.0" "@babel/runtime" "^7.0.0"
fbjs "^1.0.0" fbjs "^1.0.0"
remark-parse@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95"
integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==
dependencies:
collapse-white-space "^1.0.2"
is-alphabetical "^1.0.0"
is-decimal "^1.0.0"
is-whitespace-character "^1.0.0"
is-word-character "^1.0.0"
markdown-escapes "^1.0.0"
parse-entities "^1.1.0"
repeat-string "^1.5.4"
state-toggle "^1.0.0"
trim "0.0.1"
trim-trailing-lines "^1.0.0"
unherit "^1.0.4"
unist-util-remove-position "^1.0.0"
vfile-location "^2.0.0"
xtend "^4.0.1"
remark-parse@^8.0.0: remark-parse@^8.0.0:
version "8.0.2" version "8.0.2"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.2.tgz#5999bc0b9c2e3edc038800a64ff103d0890b318b" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.2.tgz#5999bc0b9c2e3edc038800a64ff103d0890b318b"
@@ -14284,6 +14389,18 @@ unicode-property-aliases-ecmascript@^1.0.4:
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
unified@^6.1.5:
version "6.2.0"
resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba"
integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==
dependencies:
bail "^1.0.0"
extend "^3.0.0"
is-plain-obj "^1.1.0"
trough "^1.0.0"
vfile "^2.0.0"
x-is-string "^0.1.0"
unified@^9.0.0: unified@^9.0.0:
version "9.0.0" version "9.0.0"
resolved "https://registry.yarnpkg.com/unified/-/unified-9.0.0.tgz#12b099f97ee8b36792dbad13d278ee2f696eed1d" resolved "https://registry.yarnpkg.com/unified/-/unified-9.0.0.tgz#12b099f97ee8b36792dbad13d278ee2f696eed1d"
@@ -14337,11 +14454,23 @@ unist-util-find-all-after@^3.0.1:
dependencies: dependencies:
unist-util-is "^4.0.0" unist-util-is "^4.0.0"
unist-util-is@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd"
integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==
unist-util-is@^4.0.0: unist-util-is@^4.0.0:
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.2.tgz#c7d1341188aa9ce5b3cff538958de9895f14a5de" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.2.tgz#c7d1341188aa9ce5b3cff538958de9895f14a5de"
integrity sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ== integrity sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==
unist-util-remove-position@^1.0.0:
version "1.1.4"
resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020"
integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==
dependencies:
unist-util-visit "^1.1.0"
unist-util-remove-position@^2.0.0: unist-util-remove-position@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc"
@@ -14349,6 +14478,11 @@ unist-util-remove-position@^2.0.0:
dependencies: dependencies:
unist-util-visit "^2.0.0" unist-util-visit "^2.0.0"
unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6"
integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==
unist-util-stringify-position@^2.0.0: unist-util-stringify-position@^2.0.0:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.2.tgz#5a3866e7138d55974b640ec69a94bc19e0f3fa12" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.2.tgz#5a3866e7138d55974b640ec69a94bc19e0f3fa12"
@@ -14356,6 +14490,18 @@ unist-util-stringify-position@^2.0.0:
dependencies: dependencies:
"@types/unist" "^2.0.2" "@types/unist" "^2.0.2"
unist-util-visit-parents@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz#f6e3afee8bdbf961c0e6f028ea3c0480028c3d06"
integrity sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q==
unist-util-visit-parents@^2.0.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9"
integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==
dependencies:
unist-util-is "^3.0.0"
unist-util-visit-parents@^3.0.0: unist-util-visit-parents@^3.0.0:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz#d4076af3011739c71d2ce99d05de37d545f4351d" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz#d4076af3011739c71d2ce99d05de37d545f4351d"
@@ -14364,6 +14510,13 @@ unist-util-visit-parents@^3.0.0:
"@types/unist" "^2.0.0" "@types/unist" "^2.0.0"
unist-util-is "^4.0.0" unist-util-is "^4.0.0"
unist-util-visit@^1.1.0, unist-util-visit@^1.3.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3"
integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==
dependencies:
unist-util-visit-parents "^2.0.0"
unist-util-visit@^2.0.0: unist-util-visit@^2.0.0:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.2.tgz#3843782a517de3d2357b4c193b24af2d9366afb7" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.2.tgz#3843782a517de3d2357b4c193b24af2d9366afb7"
@@ -14581,11 +14734,23 @@ verror@1.10.0:
core-util-is "1.0.2" core-util-is "1.0.2"
extsprintf "^1.2.0" extsprintf "^1.2.0"
vfile-location@^2.0.0:
version "2.0.6"
resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e"
integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==
vfile-location@^3.0.0: vfile-location@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.0.1.tgz#d78677c3546de0f7cd977544c367266764d31bb3" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.0.1.tgz#d78677c3546de0f7cd977544c367266764d31bb3"
integrity sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ== integrity sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==
vfile-message@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1"
integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==
dependencies:
unist-util-stringify-position "^1.1.1"
vfile-message@^2.0.0: vfile-message@^2.0.0:
version "2.0.4" version "2.0.4"
resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
@@ -14594,6 +14759,16 @@ vfile-message@^2.0.0:
"@types/unist" "^2.0.0" "@types/unist" "^2.0.0"
unist-util-stringify-position "^2.0.0" unist-util-stringify-position "^2.0.0"
vfile@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a"
integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==
dependencies:
is-buffer "^1.1.4"
replace-ext "1.0.0"
unist-util-stringify-position "^1.0.0"
vfile-message "^1.0.0"
vfile@^4.0.0: vfile@^4.0.0:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.1.0.tgz#d79248957f43225d57ff67a56effc67bef08946e" resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.1.0.tgz#d79248957f43225d57ff67a56effc67bef08946e"
@@ -15121,6 +15296,11 @@ ws@^6.1.2, ws@^6.2.1:
dependencies: dependencies:
async-limiter "~1.0.0" async-limiter "~1.0.0"
x-is-string@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=
xml-name-validator@^3.0.0: xml-name-validator@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"