From 42bc372d6e6e3d6fed5d3e12418cf216c8f829b6 Mon Sep 17 00:00:00 2001
From: Nicolas Mowen
Date: Thu, 10 Nov 2022 05:31:19 -0700
Subject: [PATCH 1/6] Update mask editor to have instructions (#4324)
---
web/src/routes/CameraMap.jsx | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/web/src/routes/CameraMap.jsx b/web/src/routes/CameraMap.jsx
index 6f7bc6fce..9ac3013c2 100644
--- a/web/src/routes/CameraMap.jsx
+++ b/web/src/routes/CameraMap.jsx
@@ -203,9 +203,20 @@ ${Object.keys(objectMaskPoints)
- This tool can help you create masks & zones for your {camera} camera. When done, copy each mask
- configuration into your config.yml file restart your Frigate instance to
- save your changes.
+ This tool can help you create masks & zones for your {camera} camera.
+ • Click to add a point.
+ • Click and hold on an existing point to move it.
+ • Right-Click on an existing point to delete it.
+
+ }
+ header="Instructions"
+ />
+
+
+ When done, copy each mask configuration into your config.yml file
+ restart your Frigate instance to save your changes.
}
header="Warning"
From e718d09c7942a4304cd13e56f432de9cb9e5738a Mon Sep 17 00:00:00 2001
From: Nicolas Mowen
Date: Sun, 13 Nov 2022 11:49:08 -0700
Subject: [PATCH 2/6] Fix new lines for instructions (#4371)
* Fix new lines for instructions
* Use correct formatting for list
* Fix formatting
---
web/src/routes/CameraMap.jsx | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/web/src/routes/CameraMap.jsx b/web/src/routes/CameraMap.jsx
index 9ac3013c2..27cf07287 100644
--- a/web/src/routes/CameraMap.jsx
+++ b/web/src/routes/CameraMap.jsx
@@ -202,12 +202,14 @@ ${Object.keys(objectMaskPoints)
- This tool can help you create masks & zones for your {camera} camera.
- • Click to add a point.
- • Click and hold on an existing point to move it.
- • Right-Click on an existing point to delete it.
-
+
+
This tool can help you create masks & zones for your {camera} camera.
+
+ - Click to add a point.
+ - Click and hold on an existing point to move it.
+ - Right-Click on an existing point to delete it.
+
+
}
header="Instructions"
/>
@@ -215,7 +217,7 @@ ${Object.keys(objectMaskPoints)
- When done, copy each mask configuration into your config.yml file
+ When done, copy each mask configuration into your config.yml file
restart your Frigate instance to save your changes.
}
From a1b21a87a1fb7683fef4ee381b05f7aa2672881f Mon Sep 17 00:00:00 2001
From: Nicolas Mowen
Date: Sun, 13 Nov 2022 11:50:25 -0700
Subject: [PATCH 3/6] Catch case where recording is not enabled (#4069)
* Catch case where recording is not enabled
* Add test for Record to catch this
* Add test for Record to catch this
---
web/src/routes/Recording.jsx | 4 +++
web/src/routes/__tests__/Recording.test.jsx | 27 +++++++++++++++++++++
2 files changed, 31 insertions(+)
create mode 100644 web/src/routes/__tests__/Recording.test.jsx
diff --git a/web/src/routes/Recording.jsx b/web/src/routes/Recording.jsx
index 3c8607833..1b018138b 100644
--- a/web/src/routes/Recording.jsx
+++ b/web/src/routes/Recording.jsx
@@ -54,6 +54,10 @@ export default function Recording({ camera, date, hour = '00', minute = '00', se
const selectedDayRecordingData = recordingsSummary.find((s) => !date || s.day === date);
+ if (!selectedDayRecordingData) {
+ return [];
+ }
+
const [year, month, day] = selectedDayRecordingData.day.split('-');
return selectedDayRecordingData.hours
.map((h) => {
diff --git a/web/src/routes/__tests__/Recording.test.jsx b/web/src/routes/__tests__/Recording.test.jsx
new file mode 100644
index 000000000..dfaa3d167
--- /dev/null
+++ b/web/src/routes/__tests__/Recording.test.jsx
@@ -0,0 +1,27 @@
+import { h } from 'preact';
+import * as CameraImage from '../../components/CameraImage';
+import * as Mqtt from '../../api/mqtt';
+import Cameras from '../Cameras';
+import { render, screen, waitForElementToBeRemoved } from 'testing-library';
+
+describe('Recording Route', () => {
+ beforeEach(() => {
+ jest.spyOn(CameraImage, 'default').mockImplementation(() => );
+ jest.spyOn(Mqtt, 'useMqtt').mockImplementation(() => ({ value: { payload: 'OFF' }, send: jest.fn() }));
+ });
+
+ test('shows an ActivityIndicator if not yet loaded', async () => {
+ render();
+ expect(screen.queryByLabelText('Loading…')).toBeInTheDocument();
+ });
+
+
+
+ test('shows no recordings warning', async () => {
+ render();
+
+ await waitForElementToBeRemoved(() => screen.queryByLabelText('Loading…'));
+
+ expect(screen.queryAllByText('No Recordings Found')).toHaveLength(0);
+ });
+});
From 664e04836d79465b93749e3e66a86504bf465eab Mon Sep 17 00:00:00 2001
From: Felipe Santos
Date: Wed, 16 Nov 2022 09:27:37 -0300
Subject: [PATCH 4/6] Remove wheels from final container (#4395)
---
docker/Dockerfile | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 5e3c592c4..420bf3c54 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,3 +1,5 @@
+# syntax=docker/dockerfile:1.2
+
FROM blakeblackshear/frigate-nginx:1.0.2 as nginx
FROM debian:11 as wheels
@@ -55,10 +57,9 @@ ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
ENV FLASK_ENV=development
-COPY --from=wheels /wheels /wheels
-
# Install ffmpeg
-RUN apt-get -qq update \
+RUN --mount=type=bind,from=wheels,source=/wheels,target=/wheels \
+ apt-get -qq update \
&& apt-get -qq install --no-install-recommends -y \
apt-transport-https \
gnupg \
@@ -110,7 +111,6 @@ RUN apt-get -qq update \
libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev \
libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev; \
fi \
- && rm -rf /wheels \
&& apt-get remove gnupg apt-transport-https -y \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
From 4eb3e9807684ba5927af44a567ae2bc6b4a25cc8 Mon Sep 17 00:00:00 2001
From: Nicolas Mowen
Date: Wed, 16 Nov 2022 05:29:47 -0700
Subject: [PATCH 5/6] Update go2rtc, simplify manual stream, and support audio
for MSE & WebRTC (#4391)
* Update go2rtc to rc3
* Simplify ffmpeg / audio conversions
* Set ffmpeg bin location
* Manually set video as copied
* Run go2rtc with env vars
* Remove manual ffmpeg declaration
* Enable force_audio by default
* Fix test
---
docker/Dockerfile | 2 +-
docker/rootfs/etc/services.d/go2rtc/run | 2 +-
docs/docs/configuration/index.md | 2 +-
frigate/config.py | 2 +-
frigate/restream.py | 2 +-
frigate/test/test_restream.py | 1 +
6 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 420bf3c54..2964dc080 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -119,7 +119,7 @@ RUN --mount=type=bind,from=wheels,source=/wheels,target=/wheels \
ENV PATH=$PATH:/usr/lib/btbn-ffmpeg/bin
# install go2rtc
-RUN wget -O go2rtc "https://github.com/AlexxIT/go2rtc/releases/download/v0.1-rc.2/go2rtc_linux_${TARGETARCH}" \
+RUN wget -O go2rtc "https://github.com/AlexxIT/go2rtc/releases/download/v0.1-rc.3/go2rtc_linux_${TARGETARCH}" \
&& chmod +x go2rtc \
&& mkdir -p /usr/local/go2rtc/sbin/ \
&& mv go2rtc /usr/local/go2rtc/sbin/go2rtc
diff --git a/docker/rootfs/etc/services.d/go2rtc/run b/docker/rootfs/etc/services.d/go2rtc/run
index 55d206414..866a8ab8f 100644
--- a/docker/rootfs/etc/services.d/go2rtc/run
+++ b/docker/rootfs/etc/services.d/go2rtc/run
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/with-contenv bash
# https://gist.github.com/mohanpedala/1e2ff5661761d3abd0385e8223e16425?permalink_comment_id=3945021
set -euo pipefail
diff --git a/docs/docs/configuration/index.md b/docs/docs/configuration/index.md
index 6f1600563..eacb8cb1f 100644
--- a/docs/docs/configuration/index.md
+++ b/docs/docs/configuration/index.md
@@ -354,7 +354,7 @@ restream:
# Optional: Enable the restream (default: True)
enabled: True
# Optional: Force audio compatibility with browsers (default: shown below)
- force_audio: False
+ force_audio: True
# Optional: jsmpeg stream configuration for WebUI
jsmpeg:
# Optional: Set the height of the jsmpeg stream. (default: 720)
diff --git a/frigate/config.py b/frigate/config.py
index cf3ae6398..e52a81d35 100644
--- a/frigate/config.py
+++ b/frigate/config.py
@@ -536,7 +536,7 @@ class JsmpegStreamConfig(FrigateBaseModel):
class RestreamConfig(FrigateBaseModel):
enabled: bool = Field(default=True, title="Restreaming enabled.")
force_audio: bool = Field(
- default=False, title="Force audio compatibility with the browser."
+ default=True, title="Force audio compatibility with the browser."
)
jsmpeg: JsmpegStreamConfig = Field(
default_factory=JsmpegStreamConfig, title="Jsmpeg Stream Configuration."
diff --git a/frigate/restream.py b/frigate/restream.py
index b06ae95e2..0d72c3f5a 100644
--- a/frigate/restream.py
+++ b/frigate/restream.py
@@ -12,7 +12,7 @@ logger = logging.getLogger(__name__)
def get_manual_go2rtc_stream(camera_url: str) -> str:
"""Get a manual stream for go2rtc."""
- return f"exec: /usr/lib/btbn-ffmpeg/bin/ffmpeg -i {camera_url} -c:v copy -c:a libopus -rtsp_transport tcp -f rtsp {{output}}"
+ return f"ffmpeg:{camera_url}#video=copy#audio=aac#audio=opus"
class RestreamApi:
diff --git a/frigate/test/test_restream.py b/frigate/test/test_restream.py
index 7170bf06b..6e4096a05 100644
--- a/frigate/test/test_restream.py
+++ b/frigate/test/test_restream.py
@@ -25,6 +25,7 @@ class TestRestream(TestCase):
},
"restream": {
"enabled": True,
+ "force_audio": False,
},
},
"front": {
From a9d95b89e14685df3e6f6ab350383f29c6575894 Mon Sep 17 00:00:00 2001
From: Blake Blackshear
Date: Thu, 17 Nov 2022 07:05:27 -0600
Subject: [PATCH 6/6] Web updates and fixes (#4411)
* update dependencies
* Bump loader-utils from 2.0.3 to 2.0.4 in /docs
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4)
---
updated-dependencies:
- dependency-name: loader-utils
dependency-type: indirect
...
Signed-off-by: dependabot[bot]
* update BASE_PATH replacement
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker/rootfs/usr/local/nginx/conf/nginx.conf | 2 +-
docs/package-lock.json | 24 +-
web/package-lock.json | 333 ++++++++++++++----
web/package.json | 12 +-
4 files changed, 287 insertions(+), 84 deletions(-)
diff --git a/docker/rootfs/usr/local/nginx/conf/nginx.conf b/docker/rootfs/usr/local/nginx/conf/nginx.conf
index 1363e3b75..e69eb739e 100644
--- a/docker/rootfs/usr/local/nginx/conf/nginx.conf
+++ b/docker/rootfs/usr/local/nginx/conf/nginx.conf
@@ -233,7 +233,7 @@ http {
sub_filter '"/BASE_PATH/dist/' '"$http_x_ingress_path/dist/';
sub_filter '"/BASE_PATH/js/' '"$http_x_ingress_path/js/';
sub_filter '"/BASE_PATH/assets/' '"$http_x_ingress_path/assets/';
- sub_filter '="/BASE_PATH/"' '=window.baseUrl';
+ sub_filter 'return"/BASE_PATH/"' 'return window.baseUrl';
sub_filter '' '';
sub_filter_types text/css application/javascript;
sub_filter_once off;
diff --git a/docs/package-lock.json b/docs/package-lock.json
index 5e26d0521..e028fbfc5 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -7497,9 +7497,9 @@
}
},
"node_modules/loader-utils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz",
- "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -9346,9 +9346,9 @@
}
},
"node_modules/react-dev-utils/node_modules/loader-utils": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz",
- "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz",
+ "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==",
"engines": {
"node": ">= 12.13.0"
}
@@ -17724,9 +17724,9 @@
"integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw=="
},
"loader-utils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz",
- "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -18992,9 +18992,9 @@
}
},
"loader-utils": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz",
- "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ=="
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz",
+ "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw=="
},
"locate-path": {
"version": "6.0.0",
diff --git a/web/package-lock.json b/web/package-lock.json
index 3c0e2e35a..aefc5f133 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -13,7 +13,7 @@
"date-fns": "^2.29.3",
"idb-keyval": "^6.2.0",
"immer": "^9.0.16",
- "preact": "^10.11.2",
+ "preact": "^10.11.3",
"preact-async-route": "^2.2.1",
"preact-router": "^4.1.0",
"react": "npm:@preact/compat@^17.1.2",
@@ -31,7 +31,7 @@
"@testing-library/user-event": "^14.4.3",
"@types/video.js": "^7.3.49",
"@typescript-eslint/eslint-plugin": "^5.42.1",
- "@typescript-eslint/parser": "^5.42.1",
+ "@typescript-eslint/parser": "^5.43.0",
"@vitest/coverage-c8": "^0.25.1",
"@vitest/ui": "^0.25.1",
"autoprefixer": "^10.4.13",
@@ -41,13 +41,13 @@
"eslint-plugin-vitest-globals": "^1.2.0",
"fake-indexeddb": "^4.0.0",
"jsdom": "^20.0.2",
- "msw": "^0.48.1",
+ "msw": "^0.48.3",
"postcss": "^8.4.19",
"prettier": "^2.7.1",
- "tailwindcss": "^3.2.3",
+ "tailwindcss": "^3.2.4",
"typescript": "^4.8.4",
- "vite": "^3.2.3",
- "vitest": "^0.25.1"
+ "vite": "^3.2.4",
+ "vitest": "^0.25.2"
}
},
"node_modules/@adobe/css-tools": {
@@ -1503,14 +1503,14 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.42.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz",
- "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==",
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.43.0.tgz",
+ "integrity": "sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.42.1",
- "@typescript-eslint/types": "5.42.1",
- "@typescript-eslint/typescript-estree": "5.42.1",
+ "@typescript-eslint/scope-manager": "5.43.0",
+ "@typescript-eslint/types": "5.43.0",
+ "@typescript-eslint/typescript-estree": "5.43.0",
"debug": "^4.3.4"
},
"engines": {
@@ -1529,6 +1529,95 @@
}
}
},
+ "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz",
+ "integrity": "sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.43.0",
+ "@typescript-eslint/visitor-keys": "5.43.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.43.0.tgz",
+ "integrity": "sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz",
+ "integrity": "sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.43.0",
+ "@typescript-eslint/visitor-keys": "5.43.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz",
+ "integrity": "sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.43.0",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/parser/node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@typescript-eslint/scope-manager": {
"version": "5.42.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz",
@@ -1767,6 +1856,61 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/@vitest/coverage-c8/node_modules/vitest": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.1.tgz",
+ "integrity": "sha512-eH74h6MkuEgsqR4mAQZeMK9O0PROiKY+i+1GMz/fBi5A3L2ml5U7JQs7LfPU7+uWUziZyLHagl+rkyfR8SLhlA==",
+ "dev": true,
+ "dependencies": {
+ "@types/chai": "^4.3.3",
+ "@types/chai-subset": "^1.3.3",
+ "@types/node": "*",
+ "acorn": "^8.8.0",
+ "acorn-walk": "^8.2.0",
+ "chai": "^4.3.6",
+ "debug": "^4.3.4",
+ "local-pkg": "^0.4.2",
+ "source-map": "^0.6.1",
+ "strip-literal": "^0.4.2",
+ "tinybench": "^2.3.1",
+ "tinypool": "^0.3.0",
+ "tinyspy": "^1.0.2",
+ "vite": "^3.0.0"
+ },
+ "bin": {
+ "vitest": "vitest.mjs"
+ },
+ "engines": {
+ "node": ">=v14.16.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@edge-runtime/vm": "*",
+ "@vitest/browser": "*",
+ "@vitest/ui": "*",
+ "happy-dom": "*",
+ "jsdom": "*"
+ },
+ "peerDependenciesMeta": {
+ "@edge-runtime/vm": {
+ "optional": true
+ },
+ "@vitest/browser": {
+ "optional": true
+ },
+ "@vitest/ui": {
+ "optional": true
+ },
+ "happy-dom": {
+ "optional": true
+ },
+ "jsdom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@vitest/ui": {
"version": "0.25.1",
"resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.25.1.tgz",
@@ -6280,9 +6424,9 @@
"dev": true
},
"node_modules/msw": {
- "version": "0.48.1",
- "resolved": "https://registry.npmjs.org/msw/-/msw-0.48.1.tgz",
- "integrity": "sha512-lnhIsC5aQOpqu5CjJ11CPl6RYGbY9+LhZZw1zKX3S710O9qGQ7kftmfX1FifmZNk2FuKoygprKITSfqHWpE5LQ==",
+ "version": "0.48.3",
+ "resolved": "https://registry.npmjs.org/msw/-/msw-0.48.3.tgz",
+ "integrity": "sha512-8ENBcX7JVWPA5v9WTeOnCWCMOVtyBiXZyD/0+AKlhOysJRB1ZdBAcMGLIiQ2/VpQ2lC0Yd7SFKg9aviAQSVeaw==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -6302,7 +6446,6 @@
"node-fetch": "^2.6.7",
"outvariant": "^1.3.0",
"path-to-regexp": "^6.2.0",
- "statuses": "^2.0.0",
"strict-event-emitter": "^0.2.6",
"type-fest": "^2.19.0",
"yargs": "^17.3.1"
@@ -7057,9 +7200,9 @@
"dev": true
},
"node_modules/preact": {
- "version": "10.11.2",
- "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.2.tgz",
- "integrity": "sha512-skAwGDFmgxhq1DCBHke/9e12ewkhc7WYwjuhHB8HHS8zkdtITXLRmUMTeol2ldxvLwYtwbFeifZ9uDDWuyL4Iw==",
+ "version": "10.11.3",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz",
+ "integrity": "sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
@@ -7694,15 +7837,6 @@
"node": ">=8"
}
},
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/strict-event-emitter": {
"version": "0.2.8",
"resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz",
@@ -7896,9 +8030,9 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.3.tgz",
- "integrity": "sha512-Xt9D4PK4zuuQCEB8bwK9JUCKmTgUwyac/6b0/42Vqhgl6YJkep+Wf5wq+5uXYfmrupdAD0YY2NY1hyZp1HjRrg==",
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz",
+ "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==",
"dev": true,
"dependencies": {
"arg": "^5.0.2",
@@ -8394,9 +8528,9 @@
}
},
"node_modules/vite": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz",
- "integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==",
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz",
+ "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==",
"dev": true,
"dependencies": {
"esbuild": "^0.15.9",
@@ -8443,9 +8577,9 @@
}
},
"node_modules/vitest": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.1.tgz",
- "integrity": "sha512-eH74h6MkuEgsqR4mAQZeMK9O0PROiKY+i+1GMz/fBi5A3L2ml5U7JQs7LfPU7+uWUziZyLHagl+rkyfR8SLhlA==",
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.2.tgz",
+ "integrity": "sha512-qqkzfzglEFbQY7IGkgSJkdOhoqHjwAao/OrphnHboeYHC5JzsVFoLCaB2lnAy8krhj7sbrFTVRApzpkTOeuDWQ==",
"dev": true,
"dependencies": {
"@types/chai": "^4.3.3",
@@ -9934,15 +10068,67 @@
}
},
"@typescript-eslint/parser": {
- "version": "5.42.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz",
- "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==",
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.43.0.tgz",
+ "integrity": "sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.42.1",
- "@typescript-eslint/types": "5.42.1",
- "@typescript-eslint/typescript-estree": "5.42.1",
+ "@typescript-eslint/scope-manager": "5.43.0",
+ "@typescript-eslint/types": "5.43.0",
+ "@typescript-eslint/typescript-estree": "5.43.0",
"debug": "^4.3.4"
+ },
+ "dependencies": {
+ "@typescript-eslint/scope-manager": {
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz",
+ "integrity": "sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.43.0",
+ "@typescript-eslint/visitor-keys": "5.43.0"
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.43.0.tgz",
+ "integrity": "sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==",
+ "dev": true
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz",
+ "integrity": "sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.43.0",
+ "@typescript-eslint/visitor-keys": "5.43.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "5.43.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz",
+ "integrity": "sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.43.0",
+ "eslint-visitor-keys": "^3.3.0"
+ }
+ },
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
}
},
"@typescript-eslint/scope-manager": {
@@ -10095,6 +10281,30 @@
"requires": {
"c8": "^7.12.0",
"vitest": "0.25.1"
+ },
+ "dependencies": {
+ "vitest": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.1.tgz",
+ "integrity": "sha512-eH74h6MkuEgsqR4mAQZeMK9O0PROiKY+i+1GMz/fBi5A3L2ml5U7JQs7LfPU7+uWUziZyLHagl+rkyfR8SLhlA==",
+ "dev": true,
+ "requires": {
+ "@types/chai": "^4.3.3",
+ "@types/chai-subset": "^1.3.3",
+ "@types/node": "*",
+ "acorn": "^8.8.0",
+ "acorn-walk": "^8.2.0",
+ "chai": "^4.3.6",
+ "debug": "^4.3.4",
+ "local-pkg": "^0.4.2",
+ "source-map": "^0.6.1",
+ "strip-literal": "^0.4.2",
+ "tinybench": "^2.3.1",
+ "tinypool": "^0.3.0",
+ "tinyspy": "^1.0.2",
+ "vite": "^3.0.0"
+ }
+ }
}
},
"@vitest/ui": {
@@ -13352,9 +13562,9 @@
"dev": true
},
"msw": {
- "version": "0.48.1",
- "resolved": "https://registry.npmjs.org/msw/-/msw-0.48.1.tgz",
- "integrity": "sha512-lnhIsC5aQOpqu5CjJ11CPl6RYGbY9+LhZZw1zKX3S710O9qGQ7kftmfX1FifmZNk2FuKoygprKITSfqHWpE5LQ==",
+ "version": "0.48.3",
+ "resolved": "https://registry.npmjs.org/msw/-/msw-0.48.3.tgz",
+ "integrity": "sha512-8ENBcX7JVWPA5v9WTeOnCWCMOVtyBiXZyD/0+AKlhOysJRB1ZdBAcMGLIiQ2/VpQ2lC0Yd7SFKg9aviAQSVeaw==",
"dev": true,
"requires": {
"@mswjs/cookies": "^0.2.2",
@@ -13373,7 +13583,6 @@
"node-fetch": "^2.6.7",
"outvariant": "^1.3.0",
"path-to-regexp": "^6.2.0",
- "statuses": "^2.0.0",
"strict-event-emitter": "^0.2.6",
"type-fest": "^2.19.0",
"yargs": "^17.3.1"
@@ -13876,9 +14085,9 @@
"dev": true
},
"preact": {
- "version": "10.11.2",
- "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.2.tgz",
- "integrity": "sha512-skAwGDFmgxhq1DCBHke/9e12ewkhc7WYwjuhHB8HHS8zkdtITXLRmUMTeol2ldxvLwYtwbFeifZ9uDDWuyL4Iw=="
+ "version": "10.11.3",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz",
+ "integrity": "sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg=="
},
"preact-async-route": {
"version": "2.2.1",
@@ -14352,12 +14561,6 @@
}
}
},
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "dev": true
- },
"strict-event-emitter": {
"version": "0.2.8",
"resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz",
@@ -14510,9 +14713,9 @@
}
},
"tailwindcss": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.3.tgz",
- "integrity": "sha512-Xt9D4PK4zuuQCEB8bwK9JUCKmTgUwyac/6b0/42Vqhgl6YJkep+Wf5wq+5uXYfmrupdAD0YY2NY1hyZp1HjRrg==",
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz",
+ "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==",
"dev": true,
"requires": {
"arg": "^5.0.2",
@@ -14904,9 +15107,9 @@
}
},
"vite": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz",
- "integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==",
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz",
+ "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==",
"dev": true,
"requires": {
"esbuild": "^0.15.9",
@@ -14917,9 +15120,9 @@
}
},
"vitest": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.1.tgz",
- "integrity": "sha512-eH74h6MkuEgsqR4mAQZeMK9O0PROiKY+i+1GMz/fBi5A3L2ml5U7JQs7LfPU7+uWUziZyLHagl+rkyfR8SLhlA==",
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.2.tgz",
+ "integrity": "sha512-qqkzfzglEFbQY7IGkgSJkdOhoqHjwAao/OrphnHboeYHC5JzsVFoLCaB2lnAy8krhj7sbrFTVRApzpkTOeuDWQ==",
"dev": true,
"requires": {
"@types/chai": "^4.3.3",
diff --git a/web/package.json b/web/package.json
index 03e358916..9c8063ceb 100644
--- a/web/package.json
+++ b/web/package.json
@@ -17,7 +17,7 @@
"date-fns": "^2.29.3",
"idb-keyval": "^6.2.0",
"immer": "^9.0.16",
- "preact": "^10.11.2",
+ "preact": "^10.11.3",
"preact-async-route": "^2.2.1",
"preact-router": "^4.1.0",
"react": "npm:@preact/compat@^17.1.2",
@@ -35,7 +35,7 @@
"@testing-library/user-event": "^14.4.3",
"@types/video.js": "^7.3.49",
"@typescript-eslint/eslint-plugin": "^5.42.1",
- "@typescript-eslint/parser": "^5.42.1",
+ "@typescript-eslint/parser": "^5.43.0",
"@vitest/coverage-c8": "^0.25.1",
"@vitest/ui": "^0.25.1",
"autoprefixer": "^10.4.13",
@@ -45,12 +45,12 @@
"eslint-plugin-vitest-globals": "^1.2.0",
"fake-indexeddb": "^4.0.0",
"jsdom": "^20.0.2",
- "msw": "^0.48.1",
+ "msw": "^0.48.3",
"postcss": "^8.4.19",
"prettier": "^2.7.1",
- "tailwindcss": "^3.2.3",
+ "tailwindcss": "^3.2.4",
"typescript": "^4.8.4",
- "vite": "^3.2.3",
- "vitest": "^0.25.1"
+ "vite": "^3.2.4",
+ "vitest": "^0.25.2"
}
}