Merge branch 'dev'
This commit is contained in:
commit
0795d5fba8
17
CHANGELOG.md
17
CHANGELOG.md
@ -1,5 +1,22 @@
|
||||
# Restreamer-UI
|
||||
|
||||
### v1.2.0 > v1.3.0
|
||||
|
||||
- Add low_delay option to processing (default: true)
|
||||
- Mod uses the ingest stream for publication (datarhei/restreamer#411)
|
||||
- Add dlive & Trovo publication services
|
||||
- Mod optimized DVR on DiskFS
|
||||
- Mod updates packages
|
||||
- Fix SRT bitstream on tee
|
||||
- Fix typo
|
||||
- Fix viewer count (datarhei/restreamer#394)
|
||||
- Fix user registration if username and/or password are set via environment (datarhei/restreamer-ui#13)
|
||||
- Fix Dockerfile, Reduce size, serve production build (datarhei/restreamer-ui#12)
|
||||
|
||||
Dependency:
|
||||
|
||||
- datarhei Core v16.10.0+
|
||||
|
||||
#### v1.1.0 > v1.2.0
|
||||
|
||||
- Add allow writing HLS to disk
|
||||
|
||||
6
Caddyfile
Normal file
6
Caddyfile
Normal file
@ -0,0 +1,6 @@
|
||||
http://127.0.0.1:3000
|
||||
|
||||
encode zstd gzip
|
||||
file_server {
|
||||
root ./build
|
||||
}
|
||||
12
Dockerfile
12
Dockerfile
@ -1,6 +1,7 @@
|
||||
ARG NODE_IMAGE=node:18.6.0-alpine3.15
|
||||
ARG CADDY_IMAGE=caddy:2.5.2-alpine
|
||||
|
||||
FROM $NODE_IMAGE
|
||||
FROM $NODE_IMAGE as builder
|
||||
|
||||
ARG NODE_SPACE_SIZE=10240
|
||||
ENV NODE_OPTIONS="--openssl-legacy-provider --max-old-space-size=$NODE_SPACE_SIZE"
|
||||
@ -20,6 +21,13 @@ RUN cd /ui && \
|
||||
npm install && \
|
||||
npm run build
|
||||
|
||||
FROM $CADDY_IMAGE
|
||||
|
||||
COPY --from=builder /ui/build /ui/build
|
||||
COPY --from=builder /ui/Caddyfile /ui/Caddyfile
|
||||
|
||||
WORKDIR /ui
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
CMD [ "npm", "run", "start" ]
|
||||
CMD [ "caddy", "run", "-config", "/ui/Caddyfile" ]
|
||||
|
||||
30
package.json
30
package.json
@ -1,28 +1,28 @@
|
||||
{
|
||||
"name": "restreamer-ui",
|
||||
"version": "1.2.0",
|
||||
"bundle": "restreamer-v2.2.0",
|
||||
"version": "1.3.0",
|
||||
"bundle": "restreamer-v2.3.0",
|
||||
"private": false,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@auth0/auth0-spa-js": "^1.22.1",
|
||||
"@auth0/auth0-spa-js": "^1.22.3",
|
||||
"@clappr/core": "^0.4.21",
|
||||
"@clappr/hlsjs-playback": "^0.6.0",
|
||||
"@clappr/plugins": "^0.4.16",
|
||||
"@clappr/stats-plugin": "^0.2.0",
|
||||
"@emotion/react": "^11.9.3",
|
||||
"@emotion/styled": "^11.9.3",
|
||||
"@fontsource/dosis": "^4.5.8",
|
||||
"@fontsource/roboto": "^4.5.7",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.1.1",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.1.1",
|
||||
"@fortawesome/free-solid-svg-icons": "^6.1.1",
|
||||
"@emotion/react": "^11.10.0",
|
||||
"@emotion/styled": "^11.10.0",
|
||||
"@fontsource/dosis": "^4.5.9",
|
||||
"@fontsource/roboto": "^4.5.8",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.1.2",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.1.2",
|
||||
"@fortawesome/free-solid-svg-icons": "^6.1.2",
|
||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||
"@lingui/core": "^3.14.0",
|
||||
"@lingui/macro": "^3.14.0",
|
||||
"@lingui/react": "^3.14.0",
|
||||
"@mui/icons-material": "^5.8.4",
|
||||
"@mui/lab": "^5.0.0-alpha.90",
|
||||
"@mui/icons-material": "^5.10.2",
|
||||
"@mui/lab": "^5.0.0-alpha.96",
|
||||
"@mui/material": "5.1.1",
|
||||
"@mui/styles": "^5.1.1",
|
||||
"@testing-library/dom": "^8.13.0",
|
||||
@ -36,7 +36,7 @@
|
||||
"jwt-decode": "^3.1.2",
|
||||
"make-plural": "^7.1.0",
|
||||
"react": "^17.0.2",
|
||||
"react-colorful": "^5.5.1",
|
||||
"react-colorful": "^5.6.1",
|
||||
"react-device-detect": "^2.2.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-router-dom": "^6.3.0",
|
||||
@ -45,7 +45,7 @@
|
||||
"typescript": "^3.9.7",
|
||||
"url-parse": "^1.5.10",
|
||||
"uuid": "^8.3.2",
|
||||
"video.js": "^7.19.2",
|
||||
"video.js": "^7.20.2",
|
||||
"videojs-overlay": "^2.1.5"
|
||||
},
|
||||
"scripts": {
|
||||
@ -82,7 +82,7 @@
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.18.6",
|
||||
"@babel/core": "^7.18.13",
|
||||
"@lingui/cli": "^3.14.0",
|
||||
"babel-core": "^7.0.0-bridge.0",
|
||||
"prettier": "^2.7.1",
|
||||
|
||||
@ -196,16 +196,24 @@ export default function RestreamerUI(props) {
|
||||
});
|
||||
};
|
||||
|
||||
const handlePasswordReset = async (username, password) => {
|
||||
const [, err] = await restreamer.current.ConfigSet({
|
||||
const handlePasswordReset = async (username, loginUsername, password, loginPassword) => {
|
||||
const data = {
|
||||
api: {
|
||||
auth: {
|
||||
enable: true,
|
||||
username: username,
|
||||
password: password,
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
if (username.length !== 0) {
|
||||
data.api.auth.username = username;
|
||||
}
|
||||
|
||||
if (password.length !== 0) {
|
||||
data.api.auth.password = password;
|
||||
}
|
||||
|
||||
const [, err] = await restreamer.current.ConfigSet(data);
|
||||
if (err !== null) {
|
||||
notify('error', 'save:settings', `There was an error resetting the password.`);
|
||||
return 'ERROR';
|
||||
@ -249,7 +257,7 @@ export default function RestreamerUI(props) {
|
||||
if (restarted === true) {
|
||||
// After the restart the API requires a login and this means the restart happened
|
||||
await restreamer.current.Validate();
|
||||
await restreamer.current.Login(username, password);
|
||||
await restreamer.current.Login(loginUsername, loginPassword);
|
||||
|
||||
window.location.reload();
|
||||
} else {
|
||||
@ -368,7 +376,15 @@ export default function RestreamerUI(props) {
|
||||
view = <Views.Incompatible type="ffmpeg" have={$state.compatibility.ffmpeg.have} want={$state.compatibility.ffmpeg.want} />;
|
||||
}
|
||||
} else if ($state.password === true) {
|
||||
view = <Views.Password onReset={handlePasswordReset} />;
|
||||
view = (
|
||||
<Views.Password
|
||||
onReset={handlePasswordReset}
|
||||
username={restreamer.current.ConfigValue('api.auth.username')}
|
||||
usernameOverride={restreamer.current.ConfigOverrides('api.auth.username')}
|
||||
password={restreamer.current.ConfigValue('api.auth.password')}
|
||||
passwordOverride={restreamer.current.ConfigOverrides('api.auth.password')}
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
view = <Router restreamer={restreamer.current} />;
|
||||
resources = handleResources;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -15,6 +15,9 @@ export default function Player(props) {
|
||||
liveui: true,
|
||||
responsive: true,
|
||||
fluid: true,
|
||||
plugins: {
|
||||
reloadSourceOnError: {}
|
||||
},
|
||||
sources: [{ src: props.source, type: 'application/x-mpegURL' }],
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ function init(settings) {
|
||||
reconnect: true,
|
||||
delay: 30,
|
||||
staleTimeout: 30,
|
||||
low_delay: true,
|
||||
...settings,
|
||||
};
|
||||
|
||||
@ -31,7 +32,7 @@ export default function Control(props) {
|
||||
const handleChange = (what) => (event) => {
|
||||
const value = event.target.value;
|
||||
|
||||
if (['autostart', 'reconnect', 'cleanup'].includes(what)) {
|
||||
if (['autostart', 'reconnect', 'low_delay'].includes(what)) {
|
||||
settings[what] = !settings[what];
|
||||
} else {
|
||||
settings[what] = value;
|
||||
@ -44,6 +45,7 @@ export default function Control(props) {
|
||||
<Grid container spacing={2}>
|
||||
<Grid item xs={12}>
|
||||
<Checkbox label={<Trans>Reconnect</Trans>} checked={settings.reconnect} onChange={handleChange('reconnect')} />
|
||||
<Checkbox label={<Trans>Low delay</Trans>} checked={settings.low_delay} onChange={handleChange('low_delay')} />
|
||||
</Grid>
|
||||
<Grid item xs={12} md={6}>
|
||||
<TextField
|
||||
|
||||
@ -278,6 +278,7 @@ const defaultIngestMetadata = {
|
||||
reconnect: true,
|
||||
delay: 15,
|
||||
staleTimeout: 30,
|
||||
low_delay: true,
|
||||
},
|
||||
snapshot: {
|
||||
enable: true,
|
||||
|
||||
@ -722,6 +722,13 @@ class Restreamer {
|
||||
password: '',
|
||||
},
|
||||
},
|
||||
api: {
|
||||
auth: {
|
||||
enable: false,
|
||||
username: '',
|
||||
password: '',
|
||||
},
|
||||
},
|
||||
hostname: '',
|
||||
overrides: [],
|
||||
};
|
||||
@ -877,6 +884,14 @@ class Restreamer {
|
||||
config.source.network.hls.credentials = encodeURIComponent(config.memfs.auth.username) + ':' + encodeURIComponent(config.memfs.auth.password);
|
||||
}
|
||||
|
||||
// API Auth
|
||||
|
||||
config.api.auth.enable = val.config.api.auth.enable;
|
||||
config.api.auth.username = val.config.api.auth.username;
|
||||
config.api.auth.password = val.config.api.auth.password;
|
||||
|
||||
// Environment Config Overrides
|
||||
|
||||
config.overrides = val.overrides;
|
||||
|
||||
this.config = config;
|
||||
@ -909,6 +924,25 @@ class Restreamer {
|
||||
return this.config.overrides.includes(name);
|
||||
}
|
||||
|
||||
ConfigValue(name) {
|
||||
if (!this.config) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const elms = name.split('.');
|
||||
|
||||
let config = this.config;
|
||||
for (let e of elms) {
|
||||
if (!(e in config)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
config = config[e];
|
||||
}
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
// Get system metadata
|
||||
async GetMetadata() {
|
||||
let metadata = await this._getMetadata();
|
||||
@ -1355,7 +1389,18 @@ class Restreamer {
|
||||
continue;
|
||||
}
|
||||
|
||||
sessions.sessions++;
|
||||
// Don't count viewers where nothing is transmitted.
|
||||
if (s.bandwidth_tx_kbit === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Don't count ffmpeg as session, only the bandwidth, otherwise
|
||||
// the ingest and every running publication service would be
|
||||
// considered as a viewer.
|
||||
if (p !== 'ffmpeg') {
|
||||
sessions.sessions++;
|
||||
}
|
||||
|
||||
sessions.bitrate_kbit += s.bandwidth_tx_kbit;
|
||||
}
|
||||
}
|
||||
@ -1537,80 +1582,89 @@ class Restreamer {
|
||||
});
|
||||
}
|
||||
|
||||
// Set hls storage endpoint
|
||||
const hlsStorage = control.hls.storage;
|
||||
// 1. Add output address and options
|
||||
|
||||
// Set hls variant suffix (Master/Variant playlist)
|
||||
let bitrate_suffix = '';
|
||||
if (control.hls.master_playlist) {
|
||||
bitrate_suffix = '_var0';
|
||||
}
|
||||
|
||||
const output = {
|
||||
id: 'output_0',
|
||||
address: `{${hlsStorage}}/${channel.channelid}${bitrate_suffix}.m3u8`,
|
||||
options: ['-dn', '-sn', ...outputs[0].options.map((o) => '' + o)],
|
||||
cleanup: [
|
||||
{
|
||||
pattern: `${hlsStorage}:/${channel.channelid}_*${bitrate_suffix}.` + (control.hls.version >= 7 ? 'mp4' : 'ts'),
|
||||
max_files: parseInt(control.hls.listSize) + 6,
|
||||
max_file_age_seconds: control.hls.cleanup ? parseInt(control.hls.segmentDuration) * (parseInt(control.hls.listSize) + 6) : 0,
|
||||
purge_on_delete: true,
|
||||
},
|
||||
{
|
||||
pattern: `${hlsStorage}:/${channel.channelid}${bitrate_suffix}.m3u8`,
|
||||
max_file_age_seconds: control.hls.cleanup ? parseInt(control.hls.segmentDuration) * (parseInt(control.hls.listSize) + 6) : 0,
|
||||
purge_on_delete: true,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
// Add master playlist cleanup
|
||||
if (control.hls.master_playlist) {
|
||||
output.cleanup.push({
|
||||
pattern: `${hlsStorage}:/${channel.channelid}.m3u8`,
|
||||
max_file_age_seconds: control.hls.cleanup ? parseInt(control.hls.segmentDuration) * (parseInt(control.hls.listSize) + 6) : 0,
|
||||
purge_on_delete: true,
|
||||
});
|
||||
}
|
||||
|
||||
// Injects a metadata link as title
|
||||
const metadata = `${this.GetPublicHTTPAddress()}/${channel.channelid}/oembed.json`;
|
||||
const metadata_options = ['-metadata', `title=${metadata}`, '-metadata', 'service_provider=datarhei-Restreamer'];
|
||||
output.options.push(...metadata_options);
|
||||
|
||||
// Fetch core config
|
||||
// 1.1 Fetch core config
|
||||
const core_config = this.ConfigActive();
|
||||
|
||||
// Fetch rtmp settings
|
||||
// 1.2 Fetch rtmp settings
|
||||
const rtmp_config = core_config.source.network.rtmp;
|
||||
let rtmp_enabled = false;
|
||||
if (control.rtmp && control.rtmp.enable && rtmp_config.enabled) {
|
||||
rtmp_enabled = true;
|
||||
}
|
||||
if (
|
||||
proc.input[0].address.includes('rtmp://localhost') &&
|
||||
proc.input[0].address.includes(channel.channelid) &&
|
||||
!proc.input[0].address.includes('ingest')
|
||||
) {
|
||||
rtmp_enabled = false;
|
||||
control.rtmp.enable = true;
|
||||
}
|
||||
|
||||
// Fetch srt settings
|
||||
// 1.3 Fetch srt settings
|
||||
const srt_config = core_config.source.network.srt;
|
||||
let srt_enabled = false;
|
||||
if (control.srt.enable && srt_config.enabled) {
|
||||
srt_enabled = true;
|
||||
}
|
||||
if (
|
||||
proc.input[0].address.includes('srt://localhost') &&
|
||||
proc.input[0].address.includes(channel.channelid) &&
|
||||
!proc.input[0].address.includes('ingest')
|
||||
) {
|
||||
srt_enabled = false;
|
||||
control.srt.enable = true;
|
||||
}
|
||||
|
||||
// 'tee_muxer' is required for the delivery of one output to multiple endpoints without processing the input for each output
|
||||
// 1.4 'tee_muxer' is required for the delivery of one output to multiple endpoints without processing the input for each output
|
||||
// http://ffmpeg.org/ffmpeg-all.html#tee-1
|
||||
let tee_muxer = false;
|
||||
if (rtmp_enabled || srt_enabled) {
|
||||
tee_muxer = true;
|
||||
}
|
||||
|
||||
// 1.5 Set hls filename vars
|
||||
const hlsStorage = control.hls.storage;
|
||||
let segmentPlaylistPath = `${channel.channelid}` + (control.hls.master_playlist ? `_{outputid}` : '');
|
||||
let segmentFilePath = `${channel.channelid}` + (control.hls.master_playlist ? `_{outputid}_%04d` : '_%04d');
|
||||
if (hlsStorage === 'diskfs') {
|
||||
// diskfs (path structure)
|
||||
segmentFilePath = `${channel.channelid}` + (control.hls.master_playlist ? `/{outputid}/%Y%m%d/%s` : '/%Y%m%d/%s');
|
||||
}
|
||||
|
||||
// 1.6 Set hls filenames
|
||||
const hls_master_playlist = `${channel.channelid}.m3u8`;
|
||||
const hls_fmp4_init_filename = `${channel.channelid}.mp4`;
|
||||
const hls_segment_playlist = `{${hlsStorage}}/${segmentPlaylistPath}.m3u8`;
|
||||
const hls_segment_filename =
|
||||
`{${hlsStorage}` + (tee_muxer ? '^:' : '') + `}/${segmentFilePath}.` + (!control.hls.lhls && control.hls.version === 7 ? 'mp4' : 'ts');
|
||||
|
||||
// 2. Add output address
|
||||
|
||||
const output = {
|
||||
id: 'output_0',
|
||||
address: hls_segment_playlist,
|
||||
options: ['-dn', '-sn', ...outputs[0].options.map((o) => '' + o)],
|
||||
cleanup: [],
|
||||
};
|
||||
|
||||
// 3. Extend output options
|
||||
|
||||
// 3.1 Injects a metadata link as title
|
||||
const metadata = `${this.GetPublicHTTPAddress()}/${channel.channelid}/oembed.json`;
|
||||
const metadata_options = ['-metadata', `title=${metadata}`, '-metadata', 'service_provider=datarhei-Restreamer'];
|
||||
output.options.push(...metadata_options);
|
||||
|
||||
// Manifest versions
|
||||
// https://developer.apple.com/documentation/http_live_streaming/about_the_ext-x-version_tag
|
||||
// https://ffmpeg.org/ffmpeg-all.html#Options-53
|
||||
|
||||
// 3.2 Returns the raw l/hls parameters for an EXT-X-VERSION
|
||||
|
||||
// fix Malformed AAC bitstream detected for hls version 7
|
||||
let hls_aac_adtstoasc = false;
|
||||
|
||||
// Returns the raw l/hls parameters for an EXT-X-VERSION
|
||||
const getHLSParams = (lhls, version) => {
|
||||
if (lhls) {
|
||||
// lhls
|
||||
@ -1630,7 +1684,6 @@ class Restreamer {
|
||||
['remove_at_exit', '0'],
|
||||
['window_size', '' + parseInt(control.hls.listSize)],
|
||||
['http_persistent', '0'],
|
||||
['method', 'PUT'],
|
||||
];
|
||||
} else {
|
||||
// hls
|
||||
@ -1641,10 +1694,9 @@ class Restreamer {
|
||||
['start_number', '0'],
|
||||
['hls_time', '' + parseInt(control.hls.segmentDuration)],
|
||||
['hls_list_size', '' + parseInt(control.hls.listSize)],
|
||||
['hls_flags', 'append_list+delete_segments+program_date_time+independent_segments'],
|
||||
['hls_flags', 'append_list+delete_segments+program_date_time+independent_segments+temp_file'],
|
||||
['hls_delete_threshold', '4'],
|
||||
['hls_segment_filename', `{${hlsStorage}` + (tee_muxer ? '^:' : '') + `}/${channel.channelid}_%04d${bitrate_suffix}.ts`],
|
||||
['method', 'PUT'],
|
||||
['hls_segment_filename', hls_segment_filename],
|
||||
];
|
||||
case 7:
|
||||
// fix Malformed AAC bitstream detected for hls version 7
|
||||
@ -1654,24 +1706,17 @@ class Restreamer {
|
||||
}
|
||||
hls_aac_adtstoasc = true;
|
||||
}
|
||||
// mp4 manifest cleanup
|
||||
output.cleanup.push({
|
||||
pattern: `${hlsStorage}:/${channel.channelid}.mp4`,
|
||||
max_file_age_seconds: control.hls.cleanup ? parseInt(control.hls.segmentDuration) * (parseInt(control.hls.listSize) + 6) : 0,
|
||||
purge_on_delete: true,
|
||||
});
|
||||
return [
|
||||
['f', 'hls'],
|
||||
['start_number', '0'],
|
||||
['hls_time', '' + parseInt(control.hls.segmentDuration)],
|
||||
['hls_list_size', '' + parseInt(control.hls.listSize)],
|
||||
['hls_flags', 'append_list+delete_segments+program_date_time+independent_segments'],
|
||||
['hls_flags', 'append_list+delete_segments+program_date_time+independent_segments+temp_file'],
|
||||
['hls_delete_threshold', '4'],
|
||||
['hls_segment_type', 'fmp4'],
|
||||
['hls_fmp4_init_filename', `${channel.channelid}.mp4`],
|
||||
['hls_fmp4_init_filename', hls_fmp4_init_filename],
|
||||
['hls_fmp4_init_resend', '1'],
|
||||
['hls_segment_filename', `{${hlsStorage}` + (tee_muxer ? '^:' : '') + `}/${channel.channelid}_%04d${bitrate_suffix}.mp4`],
|
||||
['method', 'PUT'],
|
||||
['hls_segment_filename', hls_segment_filename],
|
||||
];
|
||||
// case 3
|
||||
default:
|
||||
@ -1680,25 +1725,34 @@ class Restreamer {
|
||||
['start_number', '0'],
|
||||
['hls_time', '' + parseInt(control.hls.segmentDuration)],
|
||||
['hls_list_size', '' + parseInt(control.hls.listSize)],
|
||||
['hls_flags', 'append_list+delete_segments+program_date_time'],
|
||||
['hls_flags', 'append_list+delete_segments+program_date_time+temp_file'],
|
||||
['hls_delete_threshold', '4'],
|
||||
['hls_segment_filename', `{${hlsStorage}` + (tee_muxer ? '^:' : '') + `}/${channel.channelid}_%04d${bitrate_suffix}.ts`],
|
||||
['method', 'PUT'],
|
||||
['hls_segment_filename', hls_segment_filename],
|
||||
];
|
||||
}
|
||||
}
|
||||
};
|
||||
const hls_params_raw = getHLSParams(control.hls.lhls, control.hls.version);
|
||||
|
||||
// Push master playlist params
|
||||
if (control.hls.master_playlist) {
|
||||
hls_params_raw.push(['master_pl_name', `${channel.channelid}.m3u8`], ['master_pl_publish_rate', `${control.hls.segmentDuration}`]);
|
||||
// 3.3 Use strftime for DiskFS
|
||||
if (control.hls.storage && control.hls.storage === 'diskfs') {
|
||||
hls_params_raw.push(['strftime', '1'], ['strftime_mkdir', '1']);
|
||||
}
|
||||
|
||||
// Overwrite output files
|
||||
// 3.4 Push master playlist params
|
||||
if (control.hls.master_playlist) {
|
||||
hls_params_raw.push(['master_pl_name', hls_master_playlist], ['master_pl_publish_rate', `${control.hls.segmentDuration}`]);
|
||||
}
|
||||
|
||||
// 3.5 Use HTTP method
|
||||
if (control.hls.storage && control.hls.storage !== 'diskfs') {
|
||||
hls_params_raw.push(['method', 'PUT']);
|
||||
}
|
||||
|
||||
// 3.6 Overwrite output files
|
||||
proc.options.push('-y');
|
||||
|
||||
// Returns the l/hls parameters with or without tee_muxer
|
||||
// 3.7 Returns the l/hls parameters with or without tee_muxer
|
||||
if (tee_muxer) {
|
||||
// f=hls:start_number=0...
|
||||
const hls_params = hls_params_raw
|
||||
@ -1709,21 +1763,87 @@ class Restreamer {
|
||||
.map((o) => o[0] + '=' + o[1])
|
||||
.join(':');
|
||||
|
||||
output.options.push('-flags', '+global_header', '-tag:v', '7', '-tag:a', '10', '-f', 'tee');
|
||||
// set flags
|
||||
if (control.process.low_delay) {
|
||||
output.options.push('-flags', '+low_delay+global_header');
|
||||
} else {
|
||||
output.options.push('-flags', '+global_header');
|
||||
}
|
||||
|
||||
output.options.push('-tag:v', '7', '-tag:a', '10', '-f', 'tee');
|
||||
// ['f=hls:start_number=0...]address.m3u8
|
||||
// use tee_muxer formatting
|
||||
output.address =
|
||||
`[${hls_aac_adtstoasc ? 'bsfs/a=aac_adtstoasc:' : ''}${hls_params}]{${hlsStorage}}/${channel.channelid}${bitrate_suffix}.m3u8` +
|
||||
`[${hls_aac_adtstoasc ? 'bsfs/a=aac_adtstoasc:' : ''}${hls_params}]${hls_segment_playlist}` +
|
||||
(rtmp_enabled ? `|[f=flv]{rtmp,name=${channel.channelid}.stream}` : '') +
|
||||
(srt_enabled ? `|[f=mpegts]{srt,name=${channel.channelid},mode=publish}` : '');
|
||||
(srt_enabled ? `|[bsfs/v=dump_extra=freq=keyframe:f=mpegts]{srt,name=${channel.channelid},mode=publish}` : '');
|
||||
} else {
|
||||
// ['-f', 'hls', '-start_number', '0', ...]
|
||||
// adding the '-' in front of the first option, then flatten everything
|
||||
const hls_params = hls_params_raw.map((o) => ['-' + o[0], o[1]]).reduce((acc, val) => acc.concat(val), []);
|
||||
|
||||
// set flags
|
||||
if (control.process.low_delay) {
|
||||
output.options.push('-flags', '+low_delay');
|
||||
}
|
||||
|
||||
output.options.push(...hls_params);
|
||||
}
|
||||
|
||||
// 4. Add output cleanup jobs
|
||||
|
||||
// 4.1 Set hls cleanup filename vars
|
||||
let cleanupSegmentFilePath = `${channel.channelid}` + (control.hls.master_playlist ? `_{outputid}_**` : '_**');
|
||||
if (hlsStorage === 'diskfs') {
|
||||
// diskfs (path structure)
|
||||
cleanupSegmentFilePath = `${channel.channelid}` + (control.hls.master_playlist ? `/{outputid}/**` : '/**');
|
||||
}
|
||||
|
||||
// 4.2 Set hls cleanup filenames
|
||||
const cleanup_global = `${hlsStorage}:/${channel.channelid}**`;
|
||||
const cleanup_hls_master_playlist = `${hlsStorage}:/${channel.channelid}.m3u8`;
|
||||
const cleanup_hls_fmp4_init_filename = `${hlsStorage}:/${channel.channelid}.mp4`;
|
||||
const cleanup_hls_segment_playlist = `${hlsStorage}:/${segmentPlaylistPath}.m3u8`;
|
||||
const cleanup_hls_segment_filename = `${hlsStorage}:/${cleanupSegmentFilePath}.` + (!control.hls.lhls && control.hls.version === 7 ? 'mp4' : 'ts');
|
||||
|
||||
// 4.3 Cleanup id* (process is deleted) + continuously hls_segment_playlist and hls_segment_filename
|
||||
output.cleanup.push(
|
||||
{
|
||||
pattern: cleanup_global,
|
||||
purge_on_delete: true,
|
||||
},
|
||||
{
|
||||
pattern: cleanup_hls_segment_playlist,
|
||||
max_file_age_seconds: control.hls.cleanup ? parseInt(control.hls.segmentDuration) * (parseInt(control.hls.listSize) + 6) : 0,
|
||||
purge_on_delete: true,
|
||||
},
|
||||
{
|
||||
pattern: cleanup_hls_segment_filename,
|
||||
max_files: parseInt(control.hls.listSize) + 6,
|
||||
max_file_age_seconds: control.hls.cleanup ? parseInt(control.hls.segmentDuration) * (parseInt(control.hls.listSize) + 6) : 0,
|
||||
purge_on_delete: true,
|
||||
}
|
||||
);
|
||||
|
||||
// 4.4 Cleanup hls_master_playlist
|
||||
if (control.hls.master_playlist) {
|
||||
output.cleanup.push({
|
||||
pattern: cleanup_hls_master_playlist,
|
||||
max_file_age_seconds: control.hls.cleanup ? parseInt(control.hls.segmentDuration) * (parseInt(control.hls.listSize) + 6) : 0,
|
||||
purge_on_delete: true,
|
||||
});
|
||||
}
|
||||
|
||||
// 4.5 Cleanup hls_fmp4_init_filename
|
||||
if (!control.hls.lhls && control.hls.version === 7) {
|
||||
output.cleanup.push({
|
||||
pattern: cleanup_hls_fmp4_init_filename,
|
||||
max_file_age_seconds: control.hls.cleanup ? parseInt(control.hls.segmentDuration) * (parseInt(control.hls.listSize) + 6) : 0,
|
||||
purge_on_delete: true,
|
||||
});
|
||||
}
|
||||
|
||||
// 5. Push output
|
||||
proc.output.push(output);
|
||||
|
||||
const [val, err] = await this._upsertProcess(channel.id, proc);
|
||||
@ -2460,10 +2580,18 @@ class Restreamer {
|
||||
output.options = [];
|
||||
}
|
||||
|
||||
// set flags
|
||||
let options = [];
|
||||
if (control.process.low_delay) {
|
||||
options.push('-flags', '+low_delay');
|
||||
}
|
||||
|
||||
options.push(...output.options.map((o) => '' + o));
|
||||
|
||||
config.output.push({
|
||||
id: 'output_' + i,
|
||||
address: output.address,
|
||||
options: output.options.map((o) => '' + o),
|
||||
options: options,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { name, version, bundle } from '../package.json';
|
||||
|
||||
const Core = '^16.9.0';
|
||||
const Core = '^16.10.0';
|
||||
const FFmpeg = '^4.1.0 || ^5.0.0';
|
||||
const UI = bundle ? bundle : name + ' v' + version;
|
||||
const Version = version;
|
||||
|
||||
@ -326,13 +326,13 @@ const isSupportedProtocol = (url, supportedProtocols) => {
|
||||
|
||||
const getHLSAddress = (host, credentials, name, secure) => {
|
||||
// Test for IPv6 addresses and put brackets around
|
||||
let url = 'http' + (secure ? 's' : '') + '://' + (credentials.length !== 0 ? credentials + '@' : '') + host + '/memfs/ingest/' + name + '.m3u8';
|
||||
let url = 'http' + (secure ? 's' : '') + '://' + (credentials.length !== 0 ? credentials + '@' : '') + host + '/memfs/' + name + '.m3u8';
|
||||
|
||||
return url;
|
||||
};
|
||||
|
||||
const getRTMPAddress = (host, app, name, token, secure) => {
|
||||
let url = 'rtmp' + (secure ? 's' : '') + '://' + host + app + '/ingest/' + name + '.stream';
|
||||
let url = 'rtmp' + (secure ? 's' : '') + '://' + host + app + '/' + name + '.stream';
|
||||
|
||||
if (token.length !== 0) {
|
||||
url += '?token=' + encodeURIComponent(token);
|
||||
@ -348,7 +348,7 @@ const getSRTAddress = (host, name, token, passphrase, publish) => {
|
||||
host +
|
||||
'?mode=caller&transtype=live&streamid=#!:m=' +
|
||||
(publish ? 'publish' : 'request') +
|
||||
',r=ingest/' +
|
||||
',r=' +
|
||||
name +
|
||||
(token.length !== 0 ? ',token=' + encodeURIComponent(token) : '');
|
||||
|
||||
|
||||
@ -436,7 +436,6 @@ export default function Wizard(props) {
|
||||
);
|
||||
}
|
||||
// STEP 3 - Source Probe
|
||||
// todo: der step kann durch nen backdrop abgelöst werden. dadurch wirkt es schneller
|
||||
else if ($step === 'VIDEO PROBE') {
|
||||
return (
|
||||
<Paper xs={12} md={5} marginBottom="6em" className="PaperM">
|
||||
|
||||
@ -40,10 +40,8 @@ export default function Progress(props) {
|
||||
...divStyle,
|
||||
};
|
||||
|
||||
if (fps && (fps < 10 || speed < 0.8 || speed > 1.2)) {
|
||||
if (fps && (fps < 10 || speed < 1.0)) {
|
||||
fpsStyle.backgroundColor = Palette.background.box_danger;
|
||||
} else if (fps && (speed < 0.9 || speed > 1.1)) {
|
||||
fpsStyle.backgroundColor = Palette.service.main;
|
||||
} else {
|
||||
fpsStyle.backgroundColor = Palette.background.box_default;
|
||||
}
|
||||
|
||||
@ -469,7 +469,7 @@ export default function Main(props) {
|
||||
<DebugModal
|
||||
open={$processDebug.open}
|
||||
onClose={handleProcessDebug}
|
||||
title={<Trans>Process debug report</Trans>}
|
||||
title={<Trans>Process report</Trans>}
|
||||
data={$processDebug.data}
|
||||
onHelp={handleHelp('process-report')}
|
||||
/>
|
||||
|
||||
@ -6,7 +6,6 @@ import Button from '@mui/material/Button';
|
||||
import Divider from '@mui/material/Divider';
|
||||
import Grid from '@mui/material/Grid';
|
||||
import LinearProgress from '@mui/material/LinearProgress';
|
||||
import TextField from '@mui/material/TextField';
|
||||
import Typography from '@mui/material/Typography';
|
||||
|
||||
import Paper from '../misc/Paper';
|
||||
@ -14,6 +13,7 @@ import Password from '../misc/Password';
|
||||
import PaperHeader from '../misc/PaperHeader';
|
||||
import PaperContent from '../misc/PaperContent';
|
||||
import PaperFooter from '../misc/PaperFooter';
|
||||
import TextField from '../misc/TextField';
|
||||
|
||||
const generatePassword = (length) => {
|
||||
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
@ -28,11 +28,10 @@ const generatePassword = (length) => {
|
||||
|
||||
export default function ResetPassword(props) {
|
||||
const [$login, setLogin] = React.useState({
|
||||
username: 'admin',
|
||||
password: generatePassword(6) + '-' + generatePassword(6) + '-' + generatePassword(6),
|
||||
passwordConfirm: '',
|
||||
showPassword: true,
|
||||
memorized: false,
|
||||
username: props.username.length === 0 ? 'admin' : props.username,
|
||||
password: props.password.length === 0 ? generatePassword(6) + '-' + generatePassword(6) + '-' + generatePassword(6) : props.password,
|
||||
passwordConfirm: props.password.length !== 0 ? props.password : '',
|
||||
showPassword: props.password.length === 0 ? true : false,
|
||||
});
|
||||
const [$restart, setRestart] = React.useState({
|
||||
restarting: false,
|
||||
@ -48,7 +47,21 @@ export default function ResetPassword(props) {
|
||||
timeout: false,
|
||||
});
|
||||
|
||||
const res = await props.onReset($login.username, $login.password);
|
||||
// If the username and/or password are set by an environment variable (override == true), then don't
|
||||
// store that password to the config file. By setting them as empty string, the currently stored
|
||||
// values won't be changed.
|
||||
|
||||
let username = $login.username;
|
||||
if (props.usernameOverride) {
|
||||
username = '';
|
||||
}
|
||||
|
||||
let password = $login.password;
|
||||
if (props.passwordOverride) {
|
||||
password = '';
|
||||
}
|
||||
|
||||
const res = await props.onReset(username, $login.username, password, $login.password);
|
||||
switch (res) {
|
||||
case 'ERROR':
|
||||
setRestart({
|
||||
@ -98,6 +111,8 @@ export default function ResetPassword(props) {
|
||||
value={$login.username}
|
||||
onChange={handleChange('username')}
|
||||
autoComplete="username"
|
||||
disabled={props.usernameOverride}
|
||||
env={props.usernameOverride}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={12}>
|
||||
@ -108,6 +123,8 @@ export default function ResetPassword(props) {
|
||||
onChange={handleChange('password')}
|
||||
show={$login.showPassword}
|
||||
autoComplete="current-password"
|
||||
disabled={props.passwordOverride}
|
||||
env={props.passwordOverride}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={12}>
|
||||
@ -117,6 +134,8 @@ export default function ResetPassword(props) {
|
||||
label={<Trans>Confirm password</Trans>}
|
||||
onChange={handleChange('passwordConfirm')}
|
||||
show={$login.showPassword}
|
||||
disabled={props.passwordOverride}
|
||||
env={props.passwordOverride}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={12}>
|
||||
@ -124,7 +143,7 @@ export default function ResetPassword(props) {
|
||||
</Grid>
|
||||
<Grid item xs={12}>
|
||||
<Button variant="outlined" color="primary" fullWidth size="large" disabled={invalid} type="submit" onClick={handleReset}>
|
||||
<Trans>Create user</Trans>
|
||||
<Trans>Register user</Trans>
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@ -168,4 +187,8 @@ export default function ResetPassword(props) {
|
||||
|
||||
ResetPassword.defaultProps = {
|
||||
onReset: function (username, password) {},
|
||||
username: '',
|
||||
usernameOverride: false,
|
||||
password: '',
|
||||
passwordOverride: false,
|
||||
};
|
||||
|
||||
@ -550,7 +550,7 @@ export default function Edit(props) {
|
||||
<DebugModal
|
||||
open={$processDebug.open}
|
||||
onClose={handleProcessDebug}
|
||||
title={<Trans>Process debug report</Trans>}
|
||||
title={<Trans>Process report</Trans>}
|
||||
data={$processDebug.data}
|
||||
onHelp={handleHelp('process-report')}
|
||||
/>
|
||||
|
||||
@ -131,7 +131,7 @@ function Service(props) {
|
||||
label={<Trans>Stream name</Trans>}
|
||||
value={settings.stream_name}
|
||||
onChange={handleChange('stream_name')}
|
||||
placeholder={settings.protocol !== 'srt' ? 'streamId' : 'ingest/streamId'}
|
||||
placeholder={'streamId'}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={12} md={settings.protocol !== 'srt' ? 9 : 4}>
|
||||
|
||||
@ -2,25 +2,20 @@ import React from 'react';
|
||||
|
||||
import { Trans } from '@lingui/macro';
|
||||
import Grid from '@mui/material/Grid';
|
||||
import Link from '@mui/material/Link';
|
||||
import TextField from '@mui/material/TextField';
|
||||
|
||||
import Logo from './logos/bitmovin.svg';
|
||||
import Logo from './logos/dlive.svg';
|
||||
|
||||
const id = 'bitmovin';
|
||||
const name = 'Bitmovin';
|
||||
import FormInlineButton from '../../../misc/FormInlineButton';
|
||||
|
||||
const id = 'dlive';
|
||||
const name = 'dlive';
|
||||
const version = '1.0';
|
||||
const stream_key_link = '';
|
||||
const stream_key_link = 'https://dlive.tv/s/dashboard';
|
||||
const description = (
|
||||
<Trans>
|
||||
Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds{' '}
|
||||
<Link color="secondary" target="_blank" href="https://bitmovin.com/docs/encoding/tutorials/create-a-live-encoding-from-an-srt-stream">
|
||||
here
|
||||
</Link>
|
||||
.
|
||||
</Trans>
|
||||
<Trans>Live-Streaming to dlive Live RTMP Service.</Trans>
|
||||
);
|
||||
const image_copyright = <Trans>Please contact the operator of the service and check what happens.</Trans>;
|
||||
const image_copyright = '';
|
||||
const author = {
|
||||
creator: {
|
||||
name: 'datarhei',
|
||||
@ -42,14 +37,12 @@ const requires = {
|
||||
};
|
||||
|
||||
function ServiceIcon(props) {
|
||||
return <img src={Logo} alt="Bitmovin Logo" {...props} />;
|
||||
return <img src={Logo} alt="dlive Logo" {...props} />;
|
||||
}
|
||||
|
||||
function init(settings) {
|
||||
const initSettings = {
|
||||
protocol: 'srt://',
|
||||
address: '',
|
||||
port: ':2088',
|
||||
key: '',
|
||||
...settings,
|
||||
};
|
||||
|
||||
@ -62,7 +55,7 @@ function Service(props) {
|
||||
const handleChange = (what) => (event) => {
|
||||
const value = event.target.value;
|
||||
|
||||
settings.settings[what] = value;
|
||||
settings[what] = value;
|
||||
|
||||
const output = createOutput(settings);
|
||||
|
||||
@ -70,11 +63,9 @@ function Service(props) {
|
||||
};
|
||||
|
||||
const createOutput = (settings) => {
|
||||
const options = ['-strict', '-2', '-f', 'mpegts'];
|
||||
|
||||
const output = {
|
||||
address: settings.protocol + settings.ip + settings.port,
|
||||
options: options,
|
||||
address: 'rtmp://stream.dlive.tv/live/' + settings.key,
|
||||
options: ['-f', 'flv'],
|
||||
};
|
||||
|
||||
return output;
|
||||
@ -82,14 +73,13 @@ function Service(props) {
|
||||
|
||||
return (
|
||||
<Grid container spacing={2}>
|
||||
<Grid item xs={12} md={3}>
|
||||
<TextField variant="outlined" fullWidth label={<Trans>Protocol</Trans>} value={settings.protocol} readOnly disabled />
|
||||
</Grid>
|
||||
<Grid item xs={12} md={6}>
|
||||
<TextField variant="outlined" fullWidth label={<Trans>IP address</Trans>} value={settings.ip} onChange={handleChange('ip')} />
|
||||
<Grid item xs={12} md={9}>
|
||||
<TextField variant="outlined" fullWidth label={<Trans>Stream key</Trans>} value={settings.key} onChange={handleChange('key')} />
|
||||
</Grid>
|
||||
<Grid item xs={12} md={3}>
|
||||
<TextField variant="outlined" fullWidth label={<Trans>Port</Trans>} value={settings.port} readOnly disabled />
|
||||
<FormInlineButton target="blank" href={stream_key_link} component="a">
|
||||
<Trans>GET</Trans>
|
||||
</FormInlineButton>
|
||||
</Grid>
|
||||
</Grid>
|
||||
);
|
||||
96
src/views/Publication/Services/Trovo.js
Normal file
96
src/views/Publication/Services/Trovo.js
Normal file
@ -0,0 +1,96 @@
|
||||
import React from 'react';
|
||||
|
||||
import { Trans } from '@lingui/macro';
|
||||
import Grid from '@mui/material/Grid';
|
||||
import TextField from '@mui/material/TextField';
|
||||
|
||||
import Logo from './logos/trovo.svg';
|
||||
|
||||
import FormInlineButton from '../../../misc/FormInlineButton';
|
||||
|
||||
const id = 'trovo';
|
||||
const name = 'Trovo';
|
||||
const version = '1.0';
|
||||
const stream_key_link = 'https://studio.trovo.live/mychannel/stream';
|
||||
const description = (
|
||||
<Trans>Live-Streaming to Trovo Live RTMP Service.</Trans>
|
||||
);
|
||||
const image_copyright = '';
|
||||
const author = {
|
||||
creator: {
|
||||
name: 'datarhei',
|
||||
link: 'https://github.com/datarhei',
|
||||
},
|
||||
maintainer: {
|
||||
name: 'datarhei',
|
||||
link: 'https://github.com/datarhei',
|
||||
},
|
||||
};
|
||||
const category = 'platform';
|
||||
const requires = {
|
||||
protocols: ['rtmp'],
|
||||
formats: ['flv'],
|
||||
codecs: {
|
||||
audio: ['aac', 'mp3'],
|
||||
video: ['h264'],
|
||||
},
|
||||
};
|
||||
|
||||
function ServiceIcon(props) {
|
||||
return <img src={Logo} alt="Trovo Logo" {...props} />;
|
||||
}
|
||||
|
||||
function init(settings) {
|
||||
const initSettings = {
|
||||
key: '',
|
||||
...settings,
|
||||
};
|
||||
|
||||
return initSettings;
|
||||
}
|
||||
|
||||
function Service(props) {
|
||||
const settings = init(props.settings);
|
||||
|
||||
const handleChange = (what) => (event) => {
|
||||
const value = event.target.value;
|
||||
|
||||
settings[what] = value;
|
||||
|
||||
const output = createOutput(settings);
|
||||
|
||||
props.onChange([output], settings);
|
||||
};
|
||||
|
||||
const createOutput = (settings) => {
|
||||
const output = {
|
||||
address: 'rtmp://livepush.trovo.live/live/' + settings.key,
|
||||
options: ['-f', 'flv'],
|
||||
};
|
||||
|
||||
return output;
|
||||
};
|
||||
|
||||
return (
|
||||
<Grid container spacing={2}>
|
||||
<Grid item xs={12} md={9}>
|
||||
<TextField variant="outlined" fullWidth label={<Trans>Stream key</Trans>} value={settings.key} onChange={handleChange('key')} />
|
||||
</Grid>
|
||||
<Grid item xs={12} md={3}>
|
||||
<FormInlineButton target="blank" href={stream_key_link} component="a">
|
||||
<Trans>GET</Trans>
|
||||
</FormInlineButton>
|
||||
</Grid>
|
||||
</Grid>
|
||||
);
|
||||
}
|
||||
|
||||
Service.defaultProps = {
|
||||
settings: {},
|
||||
skills: {},
|
||||
metadata: {},
|
||||
streams: [],
|
||||
onChange: function (output, settings) {},
|
||||
};
|
||||
|
||||
export { id, name, version, stream_key_link, description, image_copyright, author, category, requires, ServiceIcon as icon, Service as component };
|
||||
@ -5,6 +5,7 @@ import * as CDN77 from './CDN77';
|
||||
import * as Core from './Core';
|
||||
import * as DaCast from './DaCast';
|
||||
import * as DASH from './DASH';
|
||||
import * as DLive from './DLive';
|
||||
import * as Facebook from './Facebook';
|
||||
import * as Framebuffer from './Framebuffer';
|
||||
import * as HLS from './HLS';
|
||||
@ -20,6 +21,7 @@ import * as Restream from './Restream';
|
||||
import * as RTMP from './RTMP';
|
||||
import * as RTSP from './RTSP';
|
||||
import * as SRT from './SRT';
|
||||
import * as Trovo from './Trovo';
|
||||
import * as Telegram from './Telegram';
|
||||
import * as Twitch from './Twitch';
|
||||
import * as Twitter from './Twitter';
|
||||
@ -73,6 +75,8 @@ registry.Register(Vimeo);
|
||||
registry.Register(Restream);
|
||||
registry.Register(Telegram);
|
||||
registry.Register(Linkedin);
|
||||
registry.Register(DLive);
|
||||
registry.Register(Trovo);
|
||||
registry.Register(Livespotting);
|
||||
registry.Register(Azure);
|
||||
registry.Register(Brightcove);
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -0.549 24 24">
|
||||
<path fill="#1EABE2" d="M8.12 0v5.272l8.175 5.708c.327.229.327.713 0 .941L8.12 17.629v5.273l15.581-10.878c.398-.278.398-.868 0-1.146L8.12 0z"/>
|
||||
<path fill="#1EABE2" d="M3.529 3.833v4.049l4.44 3.1c.326.228.326.711 0 .938l-4.44 3.1v4.048l10.09-7.043c.398-.278.398-.868 0-1.146L3.529 3.833z"/>
|
||||
<path fill="#1EABE2" d="M0 7.183v2.55l1.788 1.248c.327.229.327.712 0 .941L0 13.17v2.55l5.296-3.698c.396-.277.396-.864 0-1.141L0 7.183z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 508 B |
1
src/views/Publication/Services/logos/dlive.svg
Normal file
1
src/views/Publication/Services/logos/dlive.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" baseProfile="basic" viewBox="0 0 158.958 158.995"><path fill="#ffd300" d="M69.887.557c14.979-1.804 30.469.679 44.049 7.299 15.998 7.638 29.259 20.835 37.003 36.814 7.915 16.083 10.037 34.924 6.068 52.408-3.416 15.192-11.436 29.324-22.767 40.039-14.003 13.411-33.079 21.388-52.472 21.833-13.644.467-27.393-2.758-39.444-9.166-16.338-8.572-29.451-23.043-36.411-40.146C-.77 93.472-1.81 75.053 2.901 58.207c4.35-15.893 13.813-30.278 26.628-40.59C41.03 8.301 55.204 2.297 69.887.557"/><path fill="#ffd300" d="M46.866 42.93c-3.926 3.882-6.175 9.251-6.515 14.725-3.458-3.989-7.829-7.002-12.285-9.76-1.422 4.159-2.971 8.296-5.241 12.073 5.41 1.231 11.225 1.591 16.211 4.201-5.22 1.953-10.715 2.929-16.19 3.862 2.187 3.797 3.84 7.893 5.178 12.073 4.541-2.61 8.827-5.792 12.391-9.675v30.47c0 3.373.828 6.747 2.334 9.759 3.565 7.193 11.224 12.158 19.287 12.286 14.09.084 28.2.02 42.288.042 5.814.084 11.648-2.122 15.829-6.196 4.329-4.053 6.854-9.909 6.896-15.829v-42.33c0-4.859-1.633-9.718-4.625-13.537-3.989-5.241-10.417-8.572-16.995-8.658-14.28 0-28.54.023-42.819 0-5.878-.127-11.65 2.334-15.744 6.494"/><path fill="#ffd300" d="M57.177 52.859c1.379-.339 2.8-.593 4.243-.614 14.662 0 29.324.021 43.986-.022 3.776.022 7.66 1.167 10.482 3.776 3.161 2.737 4.902 6.918 4.837 11.098-.042 4.519.042 9.059-.042 13.58-.212 5.388-3.776 10.439-8.741 12.519-6.451 2.567-13.877.064-19.203-3.926-2.166-2.058-4.499-4.243-7.575-4.688-3.395-.679-6.662 1.146-8.975 3.479-4.245 3.989-10.037 6.514-15.914 6.195-5.645-.063-10.926-3.988-12.837-9.271-1.421-3.735-.743-7.809-.912-11.691.148-3.755-.467-7.639.785-11.246 1.527-4.456 5.347-8.021 9.866-9.189"/><path fill="#ffd300" d="M62.248 60.626c-1.612.827-1.167 3.479.637 3.733 4.583.489 9.187 1.04 13.77 1.359 2.122-.106 2.377-3.502.298-3.905-3.841-.53-7.703-.764-11.543-1.231-1.039-.041-2.164-.36-3.162.044m37.833.126c-3.353.425-6.748.552-10.079 1.103-1.91.722-1.336 3.968.744 3.841 4.582-.36 9.143-.869 13.706-1.358 1.804-.297 2.037-3.246.297-3.818-1.529-.255-3.099.127-4.668.232m-31.658 6.663c-1.868.446-3.459 1.868-4.18 3.628-1.465 3.374.913 7.576 4.52 8.127 3.521.764 7.172-2.292 7.065-5.898.128-3.735-3.798-6.833-7.405-5.857m26.969.19c-1.846.659-3.332 2.292-3.798 4.203-.955 3.458 1.76 7.298 5.368 7.447 3.565.382 6.874-2.971 6.429-6.515-.192-3.798-4.477-6.513-7.999-5.135"/><path d="M46.866 42.93c4.095-4.16 9.866-6.621 15.701-6.557 14.28.021 28.539 0 42.819 0 6.599.105 13.006 3.438 16.996 8.657 2.992 3.841 4.625 8.678 4.625 13.537-.021 14.11 0 28.22 0 42.331-.021 5.919-2.567 11.776-6.896 15.828-4.18 4.073-10.016 6.28-15.829 6.196-14.11-.022-28.199.041-42.288-.044-8.042-.126-15.722-5.091-19.288-12.285-1.505-3.012-2.334-6.386-2.334-9.76V70.364c-3.542 3.883-7.829 7.066-12.39 9.676-1.337-4.18-2.991-8.255-5.178-12.074 5.475-.934 10.97-1.91 16.19-3.861-4.986-2.61-10.801-2.97-16.211-4.201 2.271-3.777 3.819-7.915 5.241-12.073 4.456 2.737 8.848 5.771 12.285 9.76.382-5.432 2.631-10.8 6.557-14.661"/><path fill="#ffd300" d="M57.177 52.859c-4.541 1.188-8.36 4.732-9.867 9.167-1.273 3.628-.637 7.511-.785 11.245.148 3.904-.509 7.957.912 11.692 1.89 5.282 7.173 9.208 12.837 9.272 5.877.338 11.69-2.187 15.914-6.197 2.313-2.333 5.58-4.158 8.975-3.479 3.076.445 5.41 2.63 7.575 4.688 5.325 3.989 12.752 6.472 19.203 3.925 4.986-2.058 8.529-7.109 8.741-12.519.084-4.52 0-9.061.042-13.579.065-4.159-1.676-8.34-4.837-11.098-2.822-2.609-6.706-3.755-10.482-3.776-14.662.021-29.324 0-43.986.021-1.419.045-2.841.299-4.242.638"/><path d="M62.248 60.626c.998-.404 2.123-.106 3.162-.064 3.84.467 7.724.701 11.543 1.231 2.1.402 1.824 3.82-.298 3.904-4.604-.297-9.188-.869-13.77-1.358-1.804-.234-2.249-2.886-.637-3.713m37.833.126c1.549-.105 3.14-.488 4.688-.233 1.74.572 1.507 3.521-.296 3.818-4.562.489-9.123 1.019-13.707 1.358-2.079.106-2.652-3.119-.744-3.841 3.332-.55 6.727-.677 10.059-1.102m-31.658 6.663c3.607-.976 7.532 2.102 7.404 5.857.107 3.606-3.544 6.662-7.065 5.898-3.607-.53-5.984-4.753-4.52-8.127.722-1.761 2.314-3.182 4.181-3.628m26.969.19c3.522-1.378 7.808 1.316 7.999 5.114.424 3.543-2.864 6.918-6.429 6.514-3.608-.147-6.323-3.988-5.368-7.447.466-1.888 1.951-3.501 3.798-4.181"/></svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
1
src/views/Publication/Services/logos/trovo.svg
Normal file
1
src/views/Publication/Services/logos/trovo.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" baseProfile="basic" viewBox="0 0 117.643 116.249"><path fill="#32c27c" d="M104.629 82.328c-2.023-8.102-8.09-13.51-16.636-13.445-8.366.064-13.01 5.381-13.635 11.275-.46 4.346 1.199 7.835 3.606 9.262 4.426 2.624 7.533-1.846 5.809-3.504-1.11-1.068-1.625-1.972-1.383-3.588s1.477-3.233 4.39-3.233 5.368 2.082 5.891 6.39c.617 5.083-2.727 10.587-8.626 11.834-7.469 1.579-15.003-2.407-17.673-8.826s-1.945-16.427 4.441-22.548c5.059-4.849 11.607-6.635 17.18-6.635l18.645.818c1.38.061 2.612-.858 2.948-2.198l7.97-32.513c.058-.231.087-.469.087-.708 0-1.606-1.117-2.908-2.723-2.908H80.83c-.11 0-.22-.012-.328-.037-.782-.181-1.27-.962-1.089-1.744L83.22 3.562c.05-.215.075-.435.075-.655C83.295 1.302 81.994 0 80.388 0h-35.28c-1.971 0-3.698 1.322-4.211 3.226l-3.892 16.427c-.342 1.269-1.494 2.15-2.808 2.15H11.6c-2.041 0-3.808 1.415-4.256 3.405L.071 57.547c-.047.21-.071.424-.071.639 0 1.606 1.302 2.908 2.908 2.908h23.167c.143 0 .284.014.424.042 1.182.234 1.949 1.382 1.715 2.563-.687 3.469-1.149 6.899-1.385 10.29-.702 10.081 1.942 21.12 9.898 29.739 13.539 14.667 38.532 15.518 53.319 7.37 11.89-6.553 17.119-18.618 14.583-28.77"/></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@ -439,13 +439,25 @@ const configValues = {
|
||||
return null;
|
||||
},
|
||||
},
|
||||
'storage.disk.cache.types': {
|
||||
'storage.disk.cache.types.allow': {
|
||||
tab: 'storage',
|
||||
set: (config, value) => {
|
||||
config.storage.disk.cache.types = value;
|
||||
config.storage.disk.cache.types.allow = value;
|
||||
},
|
||||
unset: (config) => {
|
||||
delete config.storage.disk.cache.types;
|
||||
delete config.storage.disk.cache.types.allow;
|
||||
},
|
||||
validate: (config) => {
|
||||
return null;
|
||||
},
|
||||
},
|
||||
'storage.disk.cache.types.block': {
|
||||
tab: 'storage',
|
||||
set: (config, value) => {
|
||||
config.storage.disk.cache.types.block = value;
|
||||
},
|
||||
unset: (config) => {
|
||||
delete config.storage.disk.cache.types.block;
|
||||
},
|
||||
validate: (config) => {
|
||||
return null;
|
||||
@ -756,7 +768,8 @@ export default function Settings(props) {
|
||||
config.storage.cors.allow_all = true;
|
||||
}
|
||||
config.storage.cors.origins = config.storage.cors.origins.join('\n');
|
||||
config.storage.disk.cache.types = config.storage.disk.cache.types.join('\n');
|
||||
config.storage.disk.cache.types.allow = config.storage.disk.cache.types.allow.join('\n');
|
||||
config.storage.disk.cache.types.block = config.storage.disk.cache.types.block.join('\n');
|
||||
|
||||
config.sessions.ip_ignorelist = config.sessions.ip_ignorelist.join('\n');
|
||||
|
||||
@ -905,7 +918,8 @@ export default function Settings(props) {
|
||||
}
|
||||
delete config.storage.cors.allow_all;
|
||||
|
||||
config.storage.disk.cache.types = toArray(config.storage.disk.cache.types, '\n');
|
||||
config.storage.disk.cache.types.allow = toArray(config.storage.disk.cache.types.allow, '\n');
|
||||
config.storage.disk.cache.types.block = toArray(config.storage.disk.cache.types.block, '\n');
|
||||
|
||||
config.sessions.ip_ignorelist = toArray(config.sessions.ip_ignorelist, '\n');
|
||||
|
||||
@ -1806,21 +1820,36 @@ export default function Settings(props) {
|
||||
<Trans>Maximum file size to put in cache.</Trans>
|
||||
</Typography>
|
||||
</Grid>
|
||||
<Grid item xs={12}>
|
||||
<Grid item xs={6}>
|
||||
<TextField
|
||||
multiline
|
||||
rows={5}
|
||||
label={<Trans>Cache types</Trans>}
|
||||
env={env('storage.disk.cache.types')}
|
||||
disabled={env('storage.disk.cache.types') || !config.storage.disk.cache.enable}
|
||||
value={config.storage.disk.cache.types}
|
||||
onChange={handleChange('storage.disk.cache.types')}
|
||||
env={env('storage.disk.cache.types.allow')}
|
||||
disabled={env('storage.disk.cache.types.allow') || !config.storage.disk.cache.enable}
|
||||
value={config.storage.disk.cache.types.allow}
|
||||
onChange={handleChange('storage.disk.cache.types.allow')}
|
||||
/>
|
||||
<ErrorBox configvalue="storage.disk.cache.types" messages={$tabs.storage.messages} />
|
||||
<ErrorBox configvalue="storage.disk.cache.types.allow" messages={$tabs.storage.messages} />
|
||||
<Typography variant="caption">
|
||||
<Trans>List of file extensions to cache (e.g. ".html"), one per line. Leave empty to cache all file types.</Trans>
|
||||
</Typography>
|
||||
</Grid>
|
||||
<Grid item xs={6}>
|
||||
<TextField
|
||||
multiline
|
||||
rows={5}
|
||||
label={<Trans>Block cache types</Trans>}
|
||||
env={env('storage.disk.cache.types.block')}
|
||||
disabled={env('storage.disk.cache.types.block') || !config.storage.disk.cache.enable}
|
||||
value={config.storage.disk.cache.types.block}
|
||||
onChange={handleChange('storage.disk.cache.types.block')}
|
||||
/>
|
||||
<ErrorBox configvalue="storage.disk.cache.types.block" messages={$tabs.storage.messages} />
|
||||
<Typography variant="caption">
|
||||
<Trans>List of file extensions not to cache (e.g. ".m3u8"), one per line. Leave empty for none.</Trans>
|
||||
</Typography>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</TabPanel>
|
||||
<TabPanel value={$tab} index="rtmp" className="panel">
|
||||
|
||||
562
yarn.lock
562
yarn.lock
@ -10,16 +10,16 @@
|
||||
"@jridgewell/gen-mapping" "^0.1.0"
|
||||
"@jridgewell/trace-mapping" "^0.3.9"
|
||||
|
||||
"@auth0/auth0-spa-js@^1.22.1":
|
||||
version "1.22.1"
|
||||
resolved "https://registry.yarnpkg.com/@auth0/auth0-spa-js/-/auth0-spa-js-1.22.1.tgz#ae463b9820aa323525918e2f49cededb042f84e3"
|
||||
integrity sha512-l0FCmiN3XubpgCtB3U0ds4h+5WQNTnIF4eLT/fudHEtcyrT65QF/03LybGVdLyuvqdIF/D6OQsfjwYw0Ms605Q==
|
||||
"@auth0/auth0-spa-js@^1.22.3":
|
||||
version "1.22.3"
|
||||
resolved "https://registry.yarnpkg.com/@auth0/auth0-spa-js/-/auth0-spa-js-1.22.3.tgz#8f1e6b8b7523394acc178af2acef1bd3762fe4aa"
|
||||
integrity sha512-wy0ZjoBaNzxc9b/Mj9TNCWPxoriD3DP9/QCvG+7FQFvh9mvzL5IPfnm/dPjqHnxBN9CpIGecaNU7sKm4Jl6jhA==
|
||||
dependencies:
|
||||
abortcontroller-polyfill "^1.7.3"
|
||||
browser-tabs-lock "^1.2.15"
|
||||
core-js "^3.22.6"
|
||||
es-cookie "^1.3.2"
|
||||
fast-text-encoding "^1.0.3"
|
||||
core-js "^3.24.0"
|
||||
es-cookie "~1.3.2"
|
||||
fast-text-encoding "^1.0.4"
|
||||
promise-polyfill "^8.2.3"
|
||||
unfetch "^4.2.0"
|
||||
|
||||
@ -56,10 +56,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab"
|
||||
integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==
|
||||
|
||||
"@babel/compat-data@^7.18.6":
|
||||
version "7.18.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d"
|
||||
integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==
|
||||
"@babel/compat-data@^7.18.8":
|
||||
version "7.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483"
|
||||
integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==
|
||||
|
||||
"@babel/core@7.12.3":
|
||||
version "7.12.3"
|
||||
@ -104,21 +104,21 @@
|
||||
json5 "^2.2.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/core@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.6.tgz#54a107a3c298aee3fe5e1947a6464b9b6faca03d"
|
||||
integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==
|
||||
"@babel/core@^7.18.13":
|
||||
version "7.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac"
|
||||
integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.1.0"
|
||||
"@babel/code-frame" "^7.18.6"
|
||||
"@babel/generator" "^7.18.6"
|
||||
"@babel/helper-compilation-targets" "^7.18.6"
|
||||
"@babel/helper-module-transforms" "^7.18.6"
|
||||
"@babel/helpers" "^7.18.6"
|
||||
"@babel/parser" "^7.18.6"
|
||||
"@babel/template" "^7.18.6"
|
||||
"@babel/traverse" "^7.18.6"
|
||||
"@babel/types" "^7.18.6"
|
||||
"@babel/generator" "^7.18.13"
|
||||
"@babel/helper-compilation-targets" "^7.18.9"
|
||||
"@babel/helper-module-transforms" "^7.18.9"
|
||||
"@babel/helpers" "^7.18.9"
|
||||
"@babel/parser" "^7.18.13"
|
||||
"@babel/template" "^7.18.10"
|
||||
"@babel/traverse" "^7.18.13"
|
||||
"@babel/types" "^7.18.13"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.2"
|
||||
@ -134,12 +134,12 @@
|
||||
"@jridgewell/gen-mapping" "^0.3.0"
|
||||
jsesc "^2.5.1"
|
||||
|
||||
"@babel/generator@^7.18.6", "@babel/generator@^7.18.7":
|
||||
version "7.18.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.7.tgz#2aa78da3c05aadfc82dbac16c99552fc802284bd"
|
||||
integrity sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==
|
||||
"@babel/generator@^7.18.13":
|
||||
version "7.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212"
|
||||
integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.18.7"
|
||||
"@babel/types" "^7.18.13"
|
||||
"@jridgewell/gen-mapping" "^0.3.2"
|
||||
jsesc "^2.5.1"
|
||||
|
||||
@ -168,12 +168,12 @@
|
||||
browserslist "^4.20.2"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/helper-compilation-targets@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96"
|
||||
integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==
|
||||
"@babel/helper-compilation-targets@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf"
|
||||
integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.18.6"
|
||||
"@babel/compat-data" "^7.18.8"
|
||||
"@babel/helper-validator-option" "^7.18.6"
|
||||
browserslist "^4.20.2"
|
||||
semver "^6.3.0"
|
||||
@ -218,10 +218,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd"
|
||||
integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==
|
||||
|
||||
"@babel/helper-environment-visitor@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7"
|
||||
integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==
|
||||
"@babel/helper-environment-visitor@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
|
||||
integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
|
||||
|
||||
"@babel/helper-explode-assignable-expression@^7.16.7":
|
||||
version "7.16.7"
|
||||
@ -238,13 +238,13 @@
|
||||
"@babel/template" "^7.16.7"
|
||||
"@babel/types" "^7.17.0"
|
||||
|
||||
"@babel/helper-function-name@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz#8334fecb0afba66e6d87a7e8c6bb7fed79926b83"
|
||||
integrity sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==
|
||||
"@babel/helper-function-name@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0"
|
||||
integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==
|
||||
dependencies:
|
||||
"@babel/template" "^7.18.6"
|
||||
"@babel/types" "^7.18.6"
|
||||
"@babel/types" "^7.18.9"
|
||||
|
||||
"@babel/helper-hoist-variables@^7.16.7":
|
||||
version "7.16.7"
|
||||
@ -295,19 +295,19 @@
|
||||
"@babel/traverse" "^7.18.0"
|
||||
"@babel/types" "^7.18.0"
|
||||
|
||||
"@babel/helper-module-transforms@^7.18.6":
|
||||
version "7.18.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz#4f8408afead0188cfa48672f9d0e5787b61778c8"
|
||||
integrity sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==
|
||||
"@babel/helper-module-transforms@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712"
|
||||
integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==
|
||||
dependencies:
|
||||
"@babel/helper-environment-visitor" "^7.18.6"
|
||||
"@babel/helper-environment-visitor" "^7.18.9"
|
||||
"@babel/helper-module-imports" "^7.18.6"
|
||||
"@babel/helper-simple-access" "^7.18.6"
|
||||
"@babel/helper-split-export-declaration" "^7.18.6"
|
||||
"@babel/helper-validator-identifier" "^7.18.6"
|
||||
"@babel/template" "^7.18.6"
|
||||
"@babel/traverse" "^7.18.8"
|
||||
"@babel/types" "^7.18.8"
|
||||
"@babel/traverse" "^7.18.9"
|
||||
"@babel/types" "^7.18.9"
|
||||
|
||||
"@babel/helper-optimise-call-expression@^7.16.7":
|
||||
version "7.16.7"
|
||||
@ -376,6 +376,11 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.18.6"
|
||||
|
||||
"@babel/helper-string-parser@^7.18.10":
|
||||
version "7.18.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56"
|
||||
integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.16.7":
|
||||
version "7.16.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
|
||||
@ -415,14 +420,14 @@
|
||||
"@babel/traverse" "^7.18.2"
|
||||
"@babel/types" "^7.18.2"
|
||||
|
||||
"@babel/helpers@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd"
|
||||
integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==
|
||||
"@babel/helpers@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9"
|
||||
integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==
|
||||
dependencies:
|
||||
"@babel/template" "^7.18.6"
|
||||
"@babel/traverse" "^7.18.6"
|
||||
"@babel/types" "^7.18.6"
|
||||
"@babel/traverse" "^7.18.9"
|
||||
"@babel/types" "^7.18.9"
|
||||
|
||||
"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7":
|
||||
version "7.17.12"
|
||||
@ -447,7 +452,12 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef"
|
||||
integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==
|
||||
|
||||
"@babel/parser@^7.18.6", "@babel/parser@^7.18.8":
|
||||
"@babel/parser@^7.18.10", "@babel/parser@^7.18.13":
|
||||
version "7.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4"
|
||||
integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==
|
||||
|
||||
"@babel/parser@^7.18.6":
|
||||
version "7.18.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.8.tgz#822146080ac9c62dac0823bb3489622e0bc1cbdf"
|
||||
integrity sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==
|
||||
@ -685,7 +695,7 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.8.0"
|
||||
|
||||
"@babel/plugin-syntax-jsx@^7.10.4", "@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.17.12":
|
||||
"@babel/plugin-syntax-jsx@^7.10.4", "@babel/plugin-syntax-jsx@^7.17.12":
|
||||
version "7.17.12"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47"
|
||||
integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==
|
||||
@ -1197,13 +1207,20 @@
|
||||
core-js-pure "^3.20.2"
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
|
||||
"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
|
||||
version "7.18.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4"
|
||||
integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.18.3":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a"
|
||||
integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/template@^7.10.4", "@babel/template@^7.16.7", "@babel/template@^7.3.3":
|
||||
version "7.16.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
|
||||
@ -1213,6 +1230,15 @@
|
||||
"@babel/parser" "^7.16.7"
|
||||
"@babel/types" "^7.16.7"
|
||||
|
||||
"@babel/template@^7.18.10":
|
||||
version "7.18.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
|
||||
integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.18.6"
|
||||
"@babel/parser" "^7.18.10"
|
||||
"@babel/types" "^7.18.10"
|
||||
|
||||
"@babel/template@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31"
|
||||
@ -1238,19 +1264,19 @@
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/traverse@^7.18.6", "@babel/traverse@^7.18.8":
|
||||
version "7.18.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.8.tgz#f095e62ab46abf1da35e5a2011f43aee72d8d5b0"
|
||||
integrity sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==
|
||||
"@babel/traverse@^7.18.13", "@babel/traverse@^7.18.9":
|
||||
version "7.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68"
|
||||
integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.18.6"
|
||||
"@babel/generator" "^7.18.7"
|
||||
"@babel/helper-environment-visitor" "^7.18.6"
|
||||
"@babel/helper-function-name" "^7.18.6"
|
||||
"@babel/generator" "^7.18.13"
|
||||
"@babel/helper-environment-visitor" "^7.18.9"
|
||||
"@babel/helper-function-name" "^7.18.9"
|
||||
"@babel/helper-hoist-variables" "^7.18.6"
|
||||
"@babel/helper-split-export-declaration" "^7.18.6"
|
||||
"@babel/parser" "^7.18.8"
|
||||
"@babel/types" "^7.18.8"
|
||||
"@babel/parser" "^7.18.13"
|
||||
"@babel/types" "^7.18.13"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
@ -1262,7 +1288,16 @@
|
||||
"@babel/helper-validator-identifier" "^7.16.7"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.18.6", "@babel/types@^7.18.7", "@babel/types@^7.18.8":
|
||||
"@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.9":
|
||||
version "7.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a"
|
||||
integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==
|
||||
dependencies:
|
||||
"@babel/helper-string-parser" "^7.18.10"
|
||||
"@babel/helper-validator-identifier" "^7.18.6"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.18.6":
|
||||
version "7.18.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.8.tgz#c5af199951bf41ba4a6a9a6d0d8ad722b30cd42f"
|
||||
integrity sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==
|
||||
@ -1315,24 +1350,35 @@
|
||||
resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18"
|
||||
integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==
|
||||
|
||||
"@emotion/babel-plugin@^11.7.1":
|
||||
version "11.9.2"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz#723b6d394c89fb2ef782229d92ba95a740576e95"
|
||||
integrity sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==
|
||||
"@emotion/babel-plugin@^11.10.0":
|
||||
version "11.10.2"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz#879db80ba622b3f6076917a1e6f648b1c7d008c7"
|
||||
integrity sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.12.13"
|
||||
"@babel/plugin-syntax-jsx" "^7.12.13"
|
||||
"@babel/runtime" "^7.13.10"
|
||||
"@emotion/hash" "^0.8.0"
|
||||
"@emotion/memoize" "^0.7.5"
|
||||
"@emotion/serialize" "^1.0.2"
|
||||
babel-plugin-macros "^2.6.1"
|
||||
"@babel/helper-module-imports" "^7.16.7"
|
||||
"@babel/plugin-syntax-jsx" "^7.17.12"
|
||||
"@babel/runtime" "^7.18.3"
|
||||
"@emotion/hash" "^0.9.0"
|
||||
"@emotion/memoize" "^0.8.0"
|
||||
"@emotion/serialize" "^1.1.0"
|
||||
babel-plugin-macros "^3.1.0"
|
||||
convert-source-map "^1.5.0"
|
||||
escape-string-regexp "^4.0.0"
|
||||
find-root "^1.1.0"
|
||||
source-map "^0.5.7"
|
||||
stylis "4.0.13"
|
||||
|
||||
"@emotion/cache@^11.10.0", "@emotion/cache@^11.10.1":
|
||||
version "11.10.3"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.3.tgz#c4f67904fad10c945fea5165c3a5a0583c164b87"
|
||||
integrity sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==
|
||||
dependencies:
|
||||
"@emotion/memoize" "^0.8.0"
|
||||
"@emotion/sheet" "^1.2.0"
|
||||
"@emotion/utils" "^1.2.0"
|
||||
"@emotion/weak-memoize" "^0.3.0"
|
||||
stylis "4.0.13"
|
||||
|
||||
"@emotion/cache@^11.7.1":
|
||||
version "11.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539"
|
||||
@ -1344,22 +1390,16 @@
|
||||
"@emotion/weak-memoize" "^0.2.5"
|
||||
stylis "4.0.13"
|
||||
|
||||
"@emotion/cache@^11.9.3":
|
||||
version "11.9.3"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.9.3.tgz#96638449f6929fd18062cfe04d79b29b44c0d6cb"
|
||||
integrity sha512-0dgkI/JKlCXa+lEXviaMtGBL0ynpx4osh7rjOXE71q9bIF8G+XhJgvi+wDu0B0IdCVx37BffiwXlN9I3UuzFvg==
|
||||
dependencies:
|
||||
"@emotion/memoize" "^0.7.4"
|
||||
"@emotion/sheet" "^1.1.1"
|
||||
"@emotion/utils" "^1.0.0"
|
||||
"@emotion/weak-memoize" "^0.2.5"
|
||||
stylis "4.0.13"
|
||||
|
||||
"@emotion/hash@^0.8.0":
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
|
||||
integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
|
||||
|
||||
"@emotion/hash@^0.9.0":
|
||||
version "0.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7"
|
||||
integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==
|
||||
|
||||
"@emotion/is-prop-valid@^1.1.1":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz#34ad6e98e871aa6f7a20469b602911b8b11b3a95"
|
||||
@ -1367,51 +1407,45 @@
|
||||
dependencies:
|
||||
"@emotion/memoize" "^0.7.4"
|
||||
|
||||
"@emotion/is-prop-valid@^1.1.3":
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.3.tgz#f0907a416368cf8df9e410117068e20fe87c0a3a"
|
||||
integrity sha512-RFg04p6C+1uO19uG8N+vqanzKqiM9eeV1LDOG3bmkYmuOj7NbKNlFC/4EZq5gnwAIlcC/jOT24f8Td0iax2SXA==
|
||||
"@emotion/is-prop-valid@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83"
|
||||
integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==
|
||||
dependencies:
|
||||
"@emotion/memoize" "^0.7.4"
|
||||
"@emotion/memoize" "^0.8.0"
|
||||
|
||||
"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5":
|
||||
"@emotion/memoize@^0.7.4":
|
||||
version "0.7.5"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50"
|
||||
integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==
|
||||
|
||||
"@emotion/react@^11.9.3":
|
||||
version "11.9.3"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.9.3.tgz#f4f4f34444f6654a2e550f5dab4f2d360c101df9"
|
||||
integrity sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==
|
||||
"@emotion/memoize@^0.8.0":
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f"
|
||||
integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==
|
||||
|
||||
"@emotion/react@^11.10.0":
|
||||
version "11.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.0.tgz#53c577f063f26493f68a05188fb87528d912ff2e"
|
||||
integrity sha512-K6z9zlHxxBXwN8TcpwBKcEsBsOw4JWCCmR+BeeOWgqp8GIU1yA2Odd41bwdAAr0ssbQrbJbVnndvv7oiv1bZeQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.13.10"
|
||||
"@emotion/babel-plugin" "^11.7.1"
|
||||
"@emotion/cache" "^11.9.3"
|
||||
"@emotion/serialize" "^1.0.4"
|
||||
"@emotion/utils" "^1.1.0"
|
||||
"@emotion/weak-memoize" "^0.2.5"
|
||||
"@babel/runtime" "^7.18.3"
|
||||
"@emotion/babel-plugin" "^11.10.0"
|
||||
"@emotion/cache" "^11.10.0"
|
||||
"@emotion/serialize" "^1.1.0"
|
||||
"@emotion/utils" "^1.2.0"
|
||||
"@emotion/weak-memoize" "^0.3.0"
|
||||
hoist-non-react-statics "^3.3.1"
|
||||
|
||||
"@emotion/serialize@^1.0.2":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.3.tgz#99e2060c26c6292469fb30db41f4690e1c8fea63"
|
||||
integrity sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==
|
||||
"@emotion/serialize@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.0.tgz#b1f97b1011b09346a40e9796c37a3397b4ea8ea8"
|
||||
integrity sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==
|
||||
dependencies:
|
||||
"@emotion/hash" "^0.8.0"
|
||||
"@emotion/memoize" "^0.7.4"
|
||||
"@emotion/unitless" "^0.7.5"
|
||||
"@emotion/utils" "^1.0.0"
|
||||
csstype "^3.0.2"
|
||||
|
||||
"@emotion/serialize@^1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.4.tgz#ff31fd11bb07999611199c2229e152faadc21a3c"
|
||||
integrity sha512-1JHamSpH8PIfFwAMryO2bNka+y8+KA5yga5Ocf2d7ZEiJjb7xlLW7aknBGZqJLajuLOvJ+72vN+IBSwPlXD1Pg==
|
||||
dependencies:
|
||||
"@emotion/hash" "^0.8.0"
|
||||
"@emotion/memoize" "^0.7.4"
|
||||
"@emotion/unitless" "^0.7.5"
|
||||
"@emotion/utils" "^1.0.0"
|
||||
"@emotion/hash" "^0.9.0"
|
||||
"@emotion/memoize" "^0.8.0"
|
||||
"@emotion/unitless" "^0.8.0"
|
||||
"@emotion/utils" "^1.2.0"
|
||||
csstype "^3.0.2"
|
||||
|
||||
"@emotion/sheet@^1.1.0":
|
||||
@ -1419,37 +1453,47 @@
|
||||
resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2"
|
||||
integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==
|
||||
|
||||
"@emotion/sheet@^1.1.1":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.1.tgz#015756e2a9a3c7c5f11d8ec22966a8dbfbfac787"
|
||||
integrity sha512-J3YPccVRMiTZxYAY0IOq3kd+hUP8idY8Kz6B/Cyo+JuXq52Ek+zbPbSQUrVQp95aJ+lsAW7DPL1P2Z+U1jGkKA==
|
||||
"@emotion/sheet@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.0.tgz#771b1987855839e214fc1741bde43089397f7be5"
|
||||
integrity sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==
|
||||
|
||||
"@emotion/styled@^11.9.3":
|
||||
version "11.9.3"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.9.3.tgz#47f0c71137fec7c57035bf3659b52fb536792340"
|
||||
integrity sha512-o3sBNwbtoVz9v7WB1/Y/AmXl69YHmei2mrVnK7JgyBJ//Rst5yqPZCecEJlMlJrFeWHp+ki/54uN265V2pEcXA==
|
||||
"@emotion/styled@^11.10.0":
|
||||
version "11.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.0.tgz#c19484dab4206ae46727c07efb4316423dd21312"
|
||||
integrity sha512-V9oaEH6V4KePeQpgUE83i8ht+4Ri3E8Djp/ZPJ4DQlqWhSKITvgzlR3/YQE2hdfP4Jw3qVRkANJz01LLqK9/TA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.13.10"
|
||||
"@emotion/babel-plugin" "^11.7.1"
|
||||
"@emotion/is-prop-valid" "^1.1.3"
|
||||
"@emotion/serialize" "^1.0.4"
|
||||
"@emotion/utils" "^1.1.0"
|
||||
"@babel/runtime" "^7.18.3"
|
||||
"@emotion/babel-plugin" "^11.10.0"
|
||||
"@emotion/is-prop-valid" "^1.2.0"
|
||||
"@emotion/serialize" "^1.1.0"
|
||||
"@emotion/utils" "^1.2.0"
|
||||
|
||||
"@emotion/unitless@^0.7.5":
|
||||
version "0.7.5"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
|
||||
integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
|
||||
"@emotion/unitless@^0.8.0":
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db"
|
||||
integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==
|
||||
|
||||
"@emotion/utils@^1.0.0", "@emotion/utils@^1.1.0":
|
||||
"@emotion/utils@^1.0.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.1.0.tgz#86b0b297f3f1a0f2bdb08eeac9a2f49afd40d0cf"
|
||||
integrity sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==
|
||||
|
||||
"@emotion/utils@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561"
|
||||
integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==
|
||||
|
||||
"@emotion/weak-memoize@^0.2.5":
|
||||
version "0.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
|
||||
integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
|
||||
|
||||
"@emotion/weak-memoize@^0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb"
|
||||
integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==
|
||||
|
||||
"@endemolshinegroup/cosmiconfig-typescript-loader@^3.0.2":
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz#eea4635828dde372838b0909693ebd9aafeec22d"
|
||||
@ -1475,41 +1519,41 @@
|
||||
minimatch "^3.0.4"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@fontsource/dosis@^4.5.8":
|
||||
"@fontsource/dosis@^4.5.9":
|
||||
version "4.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/dosis/-/dosis-4.5.9.tgz#149a5c48ee67a20301f79afd0430e7a87d2d6bbd"
|
||||
integrity sha512-QU99CCETnBXwV/MDSQwwUbH15LtogYefsiZVIOGRNPGalqM+kjlvSxkA0A6vQZ3Pvkn0FylmaQw5IsD8so2PsQ==
|
||||
|
||||
"@fontsource/roboto@^4.5.8":
|
||||
version "4.5.8"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/dosis/-/dosis-4.5.8.tgz#d6c78fcd2e9df179efb09d96563868bb5ef4dfd9"
|
||||
integrity sha512-dv9Mw3dMzVPTADMIo49y/b7S7W5LTGYOIeN+Ciht1PLX1+kKPUNwiapc3uU8DIQZrOGiuNo8ktUPtkTBjYoeNQ==
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-4.5.8.tgz#56347764786079838faf43f0eeda22dd7328437f"
|
||||
integrity sha512-CnD7zLItIzt86q4Sj3kZUiLcBk1dSk81qcqgMGaZe7SQ1P8hFNxhMl5AZthK1zrDM5m74VVhaOpuMGIL4gagaA==
|
||||
|
||||
"@fontsource/roboto@^4.5.7":
|
||||
version "4.5.7"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-4.5.7.tgz#292740a52fa2bac61b89f92e1c588037defe65cb"
|
||||
integrity sha512-m57UMER23Mk6Drg9OjtHW1Y+0KPGyZfE5XJoPTOsLARLar6013kJj4X2HICt+iFLJqIgTahA/QAvSn9lwF1EEw==
|
||||
"@fortawesome/fontawesome-common-types@6.1.2":
|
||||
version "6.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.2.tgz#c1095b1bbabf19f37f9ff0719db38d92a410bcfe"
|
||||
integrity sha512-wBaAPGz1Awxg05e0PBRkDRuTsy4B3dpBm+zreTTyd9TH4uUM27cAL4xWyWR0rLJCrRwzVsQ4hF3FvM6rqydKPA==
|
||||
|
||||
"@fortawesome/fontawesome-common-types@6.1.1":
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.1.tgz#7dc996042d21fc1ae850e3173b5c67b0549f9105"
|
||||
integrity sha512-wVn5WJPirFTnzN6tR95abCx+ocH+3IFLXAgyavnf9hUmN0CfWoDjPT/BAWsUVwSlYYVBeCLJxaqi7ZGe4uSjBA==
|
||||
|
||||
"@fortawesome/fontawesome-svg-core@^6.1.1":
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.1.tgz#3424ec6182515951816be9b11665d67efdce5b5f"
|
||||
integrity sha512-NCg0w2YIp81f4V6cMGD9iomfsIj7GWrqmsa0ZsPh59G7PKiGN1KymZNxmF00ssuAlo/VZmpK6xazsGOwzKYUMg==
|
||||
"@fortawesome/fontawesome-svg-core@^6.1.2":
|
||||
version "6.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.2.tgz#11e2e8583a7dea75d734e4d0e53d91c63fae7511"
|
||||
integrity sha512-853G/Htp0BOdXnPoeCPTjFrVwyrJHpe8MhjB/DYE9XjwhnNDfuBCd3aKc2YUYbEfHEcBws4UAA0kA9dymZKGjA==
|
||||
dependencies:
|
||||
"@fortawesome/fontawesome-common-types" "6.1.1"
|
||||
"@fortawesome/fontawesome-common-types" "6.1.2"
|
||||
|
||||
"@fortawesome/free-brands-svg-icons@^6.1.1":
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.1.1.tgz#3580961d4f42bd51dc171842402f23a18a5480b1"
|
||||
integrity sha512-mFbI/czjBZ+paUtw5NPr2IXjun5KAC8eFqh1hnxowjA4mMZxWz4GCIksq6j9ZSa6Uxj9JhjjDVEd77p2LN2Blg==
|
||||
"@fortawesome/free-brands-svg-icons@^6.1.2":
|
||||
version "6.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.1.2.tgz#14160348b8ad5986b3805797dc4377a96e0014d9"
|
||||
integrity sha512-b2eMfXQBsSxh52pcPtYchURQs6BWNh3zVTG8XH8Lv6V4kDhEg7D0kHN+K1SZniDiPb/e5tBlaygsinMUvetITA==
|
||||
dependencies:
|
||||
"@fortawesome/fontawesome-common-types" "6.1.1"
|
||||
"@fortawesome/fontawesome-common-types" "6.1.2"
|
||||
|
||||
"@fortawesome/free-solid-svg-icons@^6.1.1":
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.1.tgz#3369e673f8fe8be2fba30b1ec274d47490a830a6"
|
||||
integrity sha512-0/5exxavOhI/D4Ovm2r3vxNojGZioPwmFrKg0ZUH69Q68uFhFPs6+dhAToh6VEQBntxPRYPuT5Cg1tpNa9JUPg==
|
||||
"@fortawesome/free-solid-svg-icons@^6.1.2":
|
||||
version "6.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.2.tgz#491d668b8a6603698d0ce1ac620f66fd22b74c84"
|
||||
integrity sha512-lTgZz+cMpzjkHmCwOG3E1ilUZrnINYdqMmrkv30EC3XbRsGlbIOL8H9LaNp5SV4g0pNJDfQ4EdTWWaMvdwyLiQ==
|
||||
dependencies:
|
||||
"@fortawesome/fontawesome-common-types" "6.1.1"
|
||||
"@fortawesome/fontawesome-common-types" "6.1.2"
|
||||
|
||||
"@fortawesome/react-fontawesome@^0.2.0":
|
||||
version "0.2.0"
|
||||
@ -1925,36 +1969,36 @@
|
||||
prop-types "^15.7.2"
|
||||
react-is "^17.0.2"
|
||||
|
||||
"@mui/base@5.0.0-alpha.89":
|
||||
version "5.0.0-alpha.89"
|
||||
resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.89.tgz#d72681fa20e05297b426e113c47a0912b59c8b44"
|
||||
integrity sha512-2g18hzt947qQ3gQQPOPEBfzQmaT2wafVhyJ7ZOZXeU6kKb88MdlHoPkK2lKXCHMBtRGnnsiF36j0rmhQXu0I5g==
|
||||
"@mui/base@5.0.0-alpha.94":
|
||||
version "5.0.0-alpha.94"
|
||||
resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.94.tgz#8835dfb41fab8ee0dfafacd89178f877ea24bcbf"
|
||||
integrity sha512-IJXmgTF07H1Iv5zjDV7zJZGUmb9cN8ERzd2dgA1akh6NWZgwyIGyQx+Au9+QSDoM5vN3FqZvU/0YCU6inUwgeQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.17.2"
|
||||
"@emotion/is-prop-valid" "^1.1.3"
|
||||
"@mui/types" "^7.1.4"
|
||||
"@mui/utils" "^5.9.0"
|
||||
"@popperjs/core" "^2.11.5"
|
||||
"@emotion/is-prop-valid" "^1.2.0"
|
||||
"@mui/types" "^7.1.5"
|
||||
"@mui/utils" "^5.9.3"
|
||||
"@popperjs/core" "^2.11.6"
|
||||
clsx "^1.2.1"
|
||||
prop-types "^15.8.1"
|
||||
react-is "^18.2.0"
|
||||
|
||||
"@mui/icons-material@^5.8.4":
|
||||
version "5.8.4"
|
||||
resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.8.4.tgz#3f2907c9f8f5ce4d754cb8fb4b68b5a1abf4d095"
|
||||
integrity sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==
|
||||
"@mui/icons-material@^5.10.2":
|
||||
version "5.10.2"
|
||||
resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.10.2.tgz#26e0a1ff1586f68e18ba1786bb8ba30ffd94475d"
|
||||
integrity sha512-p7ku+43JeKRz0ONGzPZbRXZRbE7vCKP1Cr8l/Yj9sUIGVQ6CM/m37u6udacJZkDXD+G2FoxJPixrVvvjx6f64w==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.17.2"
|
||||
|
||||
"@mui/lab@^5.0.0-alpha.90":
|
||||
version "5.0.0-alpha.90"
|
||||
resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.90.tgz#c70549f2c398a5c5e41755de22c1e18c9e470d77"
|
||||
integrity sha512-9ze3cIo5OU7XSdB/FaV6JHJlFfyg2MpedakDHcFncoZRL2vvKJas3NOBaLKKxNN360RdUiUbHJZzKcCOyhQJug==
|
||||
"@mui/lab@^5.0.0-alpha.96":
|
||||
version "5.0.0-alpha.96"
|
||||
resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.96.tgz#f34e6c86ff4c1fc9a87592c8428b0771d3c1c970"
|
||||
integrity sha512-hA3nef9cV50eIljPA/otQ6CrDeI276UGRJmVw6YZzSBtUeGuE9FY411VOZeST4I4OM88RD3lwiRbN5aTX5Nn3g==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.17.2"
|
||||
"@mui/base" "5.0.0-alpha.89"
|
||||
"@mui/system" "^5.9.0"
|
||||
"@mui/utils" "^5.9.0"
|
||||
"@mui/base" "5.0.0-alpha.94"
|
||||
"@mui/system" "^5.10.2"
|
||||
"@mui/utils" "^5.9.3"
|
||||
clsx "^1.2.1"
|
||||
prop-types "^15.8.1"
|
||||
react-is "^18.2.0"
|
||||
@ -1986,13 +2030,23 @@
|
||||
"@mui/utils" "^5.8.0"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
"@mui/private-theming@^5.9.0":
|
||||
version "5.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.9.0.tgz#d2437ed95ecfa3bfc9d2ee7c6053c94d4931cb26"
|
||||
integrity sha512-t0ZsWxE/LvX5RH5azjx1esBHbIfD9zjnbSAYkpE59BPpkOrqAYDGoJguL2EPd9LaUb6COmBozmAwNenvI6RJRQ==
|
||||
"@mui/private-theming@^5.9.3":
|
||||
version "5.9.3"
|
||||
resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.9.3.tgz#8ea06dbe0522b0cf4ba5ee19b1a4d7f74539ae1c"
|
||||
integrity sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.17.2"
|
||||
"@mui/utils" "^5.9.0"
|
||||
"@mui/utils" "^5.9.3"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
"@mui/styled-engine@^5.10.2":
|
||||
version "5.10.2"
|
||||
resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.10.2.tgz#47257f02f0db0905d35f3a1d31bb8d2b63d0c228"
|
||||
integrity sha512-YqnptNQ2E0cWwOTmLCEvrddiiR/neUfn2AD/4TDUXZu8B2n7NfDb9d3bAUfWZV+KmulQdAedoaZDqyXBFGLdbQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.17.2"
|
||||
"@emotion/cache" "^11.10.1"
|
||||
csstype "^3.1.0"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
"@mui/styled-engine@^5.8.0":
|
||||
@ -2004,16 +2058,6 @@
|
||||
"@emotion/cache" "^11.7.1"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
"@mui/styled-engine@^5.8.7":
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.8.7.tgz#63d0779c07677fe76d4705a02c7ae99f89b50780"
|
||||
integrity sha512-tVqtowjbYmiRq+qcqXK731L9eWoL9H8xTRhuTgaDGKdch1zlt4I2UwInUe1w2N9N/u3/jHsFbLcl1Un3uOwpQg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.17.2"
|
||||
"@emotion/cache" "^11.9.3"
|
||||
csstype "^3.1.0"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
"@mui/styles@^5.1.1":
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.1.1.tgz#59e240db3a117eae0fe37dcb98d6935a72d25da7"
|
||||
@ -2051,16 +2095,16 @@
|
||||
csstype "^3.1.0"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
"@mui/system@^5.9.0":
|
||||
version "5.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.9.0.tgz#804055bc6fcd557479b8b28dfca7ed5c98fd9bf9"
|
||||
integrity sha512-KLZDYMmT1usokEJH+raGTh1SbdOx4BVrT+wg8nRpKGNii2sfc3ntuJSKuv3Fu9oeC9xVFTnNBHXKrpJuxeDcqg==
|
||||
"@mui/system@^5.10.2":
|
||||
version "5.10.2"
|
||||
resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.10.2.tgz#9393284304fcfb3882148eefc808f50d95878a27"
|
||||
integrity sha512-YudwJhLcEoQiwCAmzeMr9P3ISiVGNsxBIIPzFxaGwJ8+mMrx3qoPVOV2sfm0ZuNiQuABshEw4KqHa5ftNC+pOQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.17.2"
|
||||
"@mui/private-theming" "^5.9.0"
|
||||
"@mui/styled-engine" "^5.8.7"
|
||||
"@mui/types" "^7.1.4"
|
||||
"@mui/utils" "^5.9.0"
|
||||
"@mui/private-theming" "^5.9.3"
|
||||
"@mui/styled-engine" "^5.10.2"
|
||||
"@mui/types" "^7.1.5"
|
||||
"@mui/utils" "^5.9.3"
|
||||
clsx "^1.2.1"
|
||||
csstype "^3.1.0"
|
||||
prop-types "^15.8.1"
|
||||
@ -2070,10 +2114,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.3.tgz#d7636f3046110bcccc63e6acfd100e2ad9ca712a"
|
||||
integrity sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA==
|
||||
|
||||
"@mui/types@^7.1.4":
|
||||
version "7.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.4.tgz#4185c05d6df63ec673cda15feab80440abadc764"
|
||||
integrity sha512-uveM3byMbthO+6tXZ1n2zm0W3uJCQYtwt/v5zV5I77v2v18u0ITkb8xwhsDD2i3V2Kye7SaNR6FFJ6lMuY/WqQ==
|
||||
"@mui/types@^7.1.5":
|
||||
version "7.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.5.tgz#5e5cc49d719bc86522983359bc1f90eddcff0624"
|
||||
integrity sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==
|
||||
|
||||
"@mui/utils@^5.1.1", "@mui/utils@^5.8.0":
|
||||
version "5.8.0"
|
||||
@ -2086,10 +2130,10 @@
|
||||
prop-types "^15.8.1"
|
||||
react-is "^17.0.2"
|
||||
|
||||
"@mui/utils@^5.9.0":
|
||||
version "5.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.9.0.tgz#2e1ac58905b767de47412cb32475862875b8e880"
|
||||
integrity sha512-GAaiWP6zBC3RE1NHP9y1c1iKZh5s/nyKKqWxfTrw5lNQY5tWTh9/47F682FuiE5WT1o3h4w/LEkSSIZpMEDzrA==
|
||||
"@mui/utils@^5.9.3":
|
||||
version "5.9.3"
|
||||
resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.9.3.tgz#a11e0824f00b7ea40257b390060ce167fe861d02"
|
||||
integrity sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.17.2"
|
||||
"@types/prop-types" "^15.7.5"
|
||||
@ -2146,7 +2190,12 @@
|
||||
schema-utils "^2.6.5"
|
||||
source-map "^0.7.3"
|
||||
|
||||
"@popperjs/core@^2.11.5", "@popperjs/core@^2.4.4":
|
||||
"@popperjs/core@^2.11.6":
|
||||
version "2.11.6"
|
||||
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45"
|
||||
integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==
|
||||
|
||||
"@popperjs/core@^2.4.4":
|
||||
version "2.11.5"
|
||||
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64"
|
||||
integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==
|
||||
@ -3414,15 +3463,6 @@ babel-plugin-jest-hoist@^26.6.2:
|
||||
"@types/babel__core" "^7.0.0"
|
||||
"@types/babel__traverse" "^7.0.6"
|
||||
|
||||
babel-plugin-macros@^2.6.1:
|
||||
version "2.8.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
|
||||
integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.7.2"
|
||||
cosmiconfig "^6.0.0"
|
||||
resolve "^1.12.0"
|
||||
|
||||
babel-plugin-macros@^3.0.1, babel-plugin-macros@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
|
||||
@ -4444,10 +4484,10 @@ 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.22.6:
|
||||
version "3.23.4"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.4.tgz#92d640faa7f48b90bbd5da239986602cfc402aa6"
|
||||
integrity sha512-vjsKqRc1RyAJC3Ye2kYqgfdThb3zYnx9CrqoCcjMOENMtQPC7ZViBvlDxwYU/2z2NI/IPuiXw5mT4hWhddqjzQ==
|
||||
core-js@^3.24.0:
|
||||
version "3.25.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.0.tgz#be71d9e0dd648ffd70c44a7ec2319d039357eceb"
|
||||
integrity sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==
|
||||
|
||||
core-js@^3.6.5:
|
||||
version "3.22.8"
|
||||
@ -4469,17 +4509,6 @@ cosmiconfig@^5.0.0:
|
||||
js-yaml "^3.13.1"
|
||||
parse-json "^4.0.0"
|
||||
|
||||
cosmiconfig@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
|
||||
integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
|
||||
dependencies:
|
||||
"@types/parse-json" "^4.0.0"
|
||||
import-fresh "^3.1.0"
|
||||
parse-json "^5.0.0"
|
||||
path-type "^4.0.0"
|
||||
yaml "^1.7.2"
|
||||
|
||||
cosmiconfig@^7.0.0:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
|
||||
@ -5347,7 +5376,7 @@ es-array-method-boxes-properly@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e"
|
||||
integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
|
||||
|
||||
es-cookie@^1.3.2:
|
||||
es-cookie@~1.3.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/es-cookie/-/es-cookie-1.3.2.tgz#80e831597f72a25721701bdcb21d990319acd831"
|
||||
integrity sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q==
|
||||
@ -5888,10 +5917,10 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
|
||||
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
||||
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
|
||||
|
||||
fast-text-encoding@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53"
|
||||
integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==
|
||||
fast-text-encoding@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.4.tgz#bf1898ad800282a4e53c0ea9690704dd26e4298e"
|
||||
integrity sha512-x6lDDm/tBAzX9kmsPcZsNbvDs3Zey3+scsxaZElS8xWLgUMAg/oFLeewfUz0mu1CblHhhsu15jGkraldkFh8KQ==
|
||||
|
||||
fastq@^1.6.0:
|
||||
version "1.13.0"
|
||||
@ -6754,7 +6783,7 @@ import-fresh@^2.0.0:
|
||||
caller-path "^2.0.0"
|
||||
resolve-from "^3.0.0"
|
||||
|
||||
import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
|
||||
import-fresh@^3.0.0, import-fresh@^3.2.1:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
||||
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
|
||||
@ -10387,10 +10416,10 @@ react-app-polyfill@^2.0.0:
|
||||
regenerator-runtime "^0.13.7"
|
||||
whatwg-fetch "^3.4.1"
|
||||
|
||||
react-colorful@^5.5.1:
|
||||
version "5.5.1"
|
||||
resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.5.1.tgz#29d9c4e496f2ca784dd2bb5053a3a4340cfaf784"
|
||||
integrity sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==
|
||||
react-colorful@^5.6.1:
|
||||
version "5.6.1"
|
||||
resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b"
|
||||
integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==
|
||||
|
||||
react-dev-utils@^11.0.3:
|
||||
version "11.0.4"
|
||||
@ -12430,7 +12459,7 @@ vendors@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
|
||||
integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
|
||||
|
||||
"video.js@^6 || ^7", video.js@^7.19.2:
|
||||
"video.js@^6 || ^7":
|
||||
version "7.19.2"
|
||||
resolved "https://registry.yarnpkg.com/video.js/-/video.js-7.19.2.tgz#83396db819b61e25328c020c0191dbe7a2187403"
|
||||
integrity sha512-+rV/lJ1bDoMW3SbYlRp0eC9//RgvfBpEQ0USOyx44tHVxVyMjq+G9jZoiulsDXaIp4BX9q5+/y87TbZUysXBHA==
|
||||
@ -12449,6 +12478,25 @@ vendors@^1.0.0:
|
||||
videojs-font "3.2.0"
|
||||
videojs-vtt.js "^0.15.3"
|
||||
|
||||
video.js@^7.20.2:
|
||||
version "7.20.2"
|
||||
resolved "https://registry.yarnpkg.com/video.js/-/video.js-7.20.2.tgz#7a1bd9575bb489ac13bcb231c76a35149c4eb34a"
|
||||
integrity sha512-hdvAHKAyaL6bCDkeu0pPtFYKi1EDaOUovm7FN1xqBDolUxgH8FKy1WIgTS+Ouuaw7R54SCTcSeXjZEizhy9ouQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@videojs/http-streaming" "2.14.2"
|
||||
"@videojs/vhs-utils" "^3.0.4"
|
||||
"@videojs/xhr" "2.6.0"
|
||||
aes-decrypter "3.1.3"
|
||||
global "^4.4.0"
|
||||
keycode "^2.2.0"
|
||||
m3u8-parser "4.7.1"
|
||||
mpd-parser "0.21.1"
|
||||
mux.js "6.0.1"
|
||||
safe-json-parse "4.0.0"
|
||||
videojs-font "3.2.0"
|
||||
videojs-vtt.js "^0.15.3"
|
||||
|
||||
videojs-font@3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-3.2.0.tgz#212c9d3f4e4ec3fa7345167d64316add35e92232"
|
||||
@ -12964,7 +13012,7 @@ yallist@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
yaml@^1.10.0, yaml@^1.7.2:
|
||||
yaml@^1.10.0:
|
||||
version "1.10.2"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
|
||||
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user