14
.github/workflows/pull_request.yml
vendored
@ -40,9 +40,9 @@ jobs:
|
|||||||
node-version: 16.x
|
node-version: 16.x
|
||||||
- run: npm install
|
- run: npm install
|
||||||
working-directory: ./web
|
working-directory: ./web
|
||||||
- name: Lint
|
# - name: Lint
|
||||||
run: npm run lint
|
# run: npm run lint
|
||||||
working-directory: ./web
|
# working-directory: ./web
|
||||||
|
|
||||||
web_test:
|
web_test:
|
||||||
name: Web - Test
|
name: Web - Test
|
||||||
@ -51,12 +51,12 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@master
|
- uses: actions/setup-node@master
|
||||||
with:
|
with:
|
||||||
node-version: 16.x
|
node-version: 20.x
|
||||||
- run: npm install
|
- run: npm install
|
||||||
working-directory: ./web
|
working-directory: ./web
|
||||||
- name: Test
|
# - name: Test
|
||||||
run: npm run test
|
# run: npm run test
|
||||||
working-directory: ./web
|
# working-directory: ./web
|
||||||
|
|
||||||
python_checks:
|
python_checks:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
@ -237,7 +237,7 @@ CMD ["sleep", "infinity"]
|
|||||||
|
|
||||||
# Frigate web build
|
# Frigate web build
|
||||||
# This should be architecture agnostic, so speed up the build on multiarch by not using QEMU.
|
# This should be architecture agnostic, so speed up the build on multiarch by not using QEMU.
|
||||||
FROM --platform=$BUILDPLATFORM node:16 AS web-build
|
FROM --platform=$BUILDPLATFORM node:20 AS web-build
|
||||||
|
|
||||||
WORKDIR /work
|
WORKDIR /work
|
||||||
COPY web/package.json web/package-lock.json ./
|
COPY web/package.json web/package-lock.json ./
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<link rel="icon" href="/images/favicon.ico" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Frigate</title>
|
|
||||||
<link
|
|
||||||
rel="apple-touch-icon"
|
|
||||||
sizes="180x180"
|
|
||||||
href="/images/apple-touch-icon.png"
|
|
||||||
/>
|
|
||||||
<link
|
|
||||||
rel="icon"
|
|
||||||
type="image/png"
|
|
||||||
sizes="32x32"
|
|
||||||
href="/images/favicon-32x32.png"
|
|
||||||
/>
|
|
||||||
<link
|
|
||||||
rel="icon"
|
|
||||||
type="image/png"
|
|
||||||
sizes="16x16"
|
|
||||||
href="/images/favicon-16x16.png"
|
|
||||||
/>
|
|
||||||
<link rel="icon" type="image/svg+xml" href="/images/favicon.svg" />
|
|
||||||
<link rel="manifest" href="/site.webmanifest" />
|
|
||||||
<link rel="mask-icon" href="/images/favicon.svg" color="#3b82f7" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="root"></div>
|
|
||||||
<script type="module" src="/src/main.tsx"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
8167
web-new/package-lock.json
generated
@ -1,90 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "web-new",
|
|
||||||
"private": true,
|
|
||||||
"version": "0.0.0",
|
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite --host",
|
|
||||||
"build": "tsc && vite build --base=/BASE_PATH/",
|
|
||||||
"lint": "eslint --ext .jsx,.js,.tsx,.ts --ignore-path .gitignore .",
|
|
||||||
"preview": "vite preview",
|
|
||||||
"prettier:write": "prettier -u -w --ignore-path .gitignore \"*.{ts,tsx,js,jsx,css,html}\"",
|
|
||||||
"test": "vitest",
|
|
||||||
"coverage": "vitest run --coverage"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@cycjimmy/jsmpeg-player": "^6.0.5",
|
|
||||||
"@hookform/resolvers": "^3.3.2",
|
|
||||||
"@radix-ui/react-alert-dialog": "^1.0.5",
|
|
||||||
"@radix-ui/react-aspect-ratio": "^1.0.3",
|
|
||||||
"@radix-ui/react-dialog": "^1.0.5",
|
|
||||||
"@radix-ui/react-dropdown-menu": "^2.0.6",
|
|
||||||
"@radix-ui/react-label": "^2.0.2",
|
|
||||||
"@radix-ui/react-popover": "^1.0.7",
|
|
||||||
"@radix-ui/react-radio-group": "^1.1.3",
|
|
||||||
"@radix-ui/react-scroll-area": "^1.0.5",
|
|
||||||
"@radix-ui/react-select": "^2.0.0",
|
|
||||||
"@radix-ui/react-slider": "^1.1.2",
|
|
||||||
"@radix-ui/react-slot": "^1.0.2",
|
|
||||||
"@radix-ui/react-switch": "^1.0.3",
|
|
||||||
"@radix-ui/react-tabs": "^1.0.4",
|
|
||||||
"@radix-ui/react-tooltip": "^1.0.7",
|
|
||||||
"axios": "^1.6.2",
|
|
||||||
"class-variance-authority": "^0.7.0",
|
|
||||||
"clsx": "^2.0.0",
|
|
||||||
"copy-to-clipboard": "^3.3.3",
|
|
||||||
"date-fns": "^2.30.0",
|
|
||||||
"idb-keyval": "^6.2.1",
|
|
||||||
"immer": "^10.0.3",
|
|
||||||
"lucide-react": "^0.294.0",
|
|
||||||
"monaco-yaml": "^5.1.0",
|
|
||||||
"react": "^18.2.0",
|
|
||||||
"react-day-picker": "^8.9.1",
|
|
||||||
"react-dom": "^18.2.0",
|
|
||||||
"react-hook-form": "^7.48.2",
|
|
||||||
"react-icons": "^4.12.0",
|
|
||||||
"react-router-dom": "^6.20.1",
|
|
||||||
"react-use-websocket": "^4.5.0",
|
|
||||||
"recoil": "^0.7.7",
|
|
||||||
"sort-by": "^1.2.0",
|
|
||||||
"strftime": "^0.10.2",
|
|
||||||
"swr": "^2.2.4",
|
|
||||||
"tailwind-merge": "^2.1.0",
|
|
||||||
"tailwindcss-animate": "^1.0.7",
|
|
||||||
"video.js": "^8.6.1",
|
|
||||||
"videojs-playlist": "^5.1.0",
|
|
||||||
"vite-plugin-monaco-editor": "^1.1.0",
|
|
||||||
"zod": "^3.22.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@tailwindcss/forms": "^0.5.7",
|
|
||||||
"@testing-library/jest-dom": "^6.1.5",
|
|
||||||
"@types/node": "^20.10.3",
|
|
||||||
"@types/react": "^18.2.37",
|
|
||||||
"@types/react-dom": "^18.2.15",
|
|
||||||
"@types/react-icons": "^3.0.0",
|
|
||||||
"@types/strftime": "^0.9.8",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^6.10.0",
|
|
||||||
"@typescript-eslint/parser": "^6.10.0",
|
|
||||||
"@vitejs/plugin-react-swc": "^3.5.0",
|
|
||||||
"@vitest/coverage-v8": "^1.0.0",
|
|
||||||
"autoprefixer": "^10.4.16",
|
|
||||||
"eslint": "^8.53.0",
|
|
||||||
"eslint-config-prettier": "^9.1.0",
|
|
||||||
"eslint-plugin-jest": "^27.6.0",
|
|
||||||
"eslint-plugin-prettier": "^5.0.1",
|
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
|
||||||
"eslint-plugin-react-refresh": "^0.4.4",
|
|
||||||
"eslint-plugin-vitest-globals": "^1.4.0",
|
|
||||||
"fake-indexeddb": "^5.0.1",
|
|
||||||
"jest-websocket-mock": "^2.5.0",
|
|
||||||
"jsdom": "^23.0.1",
|
|
||||||
"msw": "^2.0.10",
|
|
||||||
"postcss": "^8.4.32",
|
|
||||||
"prettier": "^3.1.0",
|
|
||||||
"tailwindcss": "^3.3.5",
|
|
||||||
"typescript": "^5.2.2",
|
|
||||||
"vite": "^5.0.0",
|
|
||||||
"vitest": "^1.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
@import "/themes/theme-default.css";
|
|
||||||
@import "/themes/theme-blue.css";
|
|
||||||
@import "/themes/theme-gold.css";
|
|
||||||
@import "/themes/theme-green.css";
|
|
||||||
@import "/themes/theme-nature.css";
|
|
||||||
@import "/themes/theme-netflix.css";
|
|
||||||
@import "/themes/theme-nord.css";
|
|
||||||
@import "/themes/theme-orange.css";
|
|
||||||
@import "/themes/theme-red.css";
|
|
||||||
|
|
||||||
@tailwind base;
|
|
||||||
@tailwind components;
|
|
||||||
@tailwind utilities;
|
|
||||||
|
|
||||||
/* Duplicated var names with color space modifiers for swatches in vscode. See https://github.com/tailwindlabs/tailwindcss/discussions/10619 */
|
|
||||||
|
|
||||||
@layer base {
|
|
||||||
* {
|
|
||||||
@apply border-border;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
@apply bg-background text-foreground;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
import React from 'react'
|
|
||||||
import ReactDOM from 'react-dom/client'
|
|
||||||
import App from './App.tsx'
|
|
||||||
import './index.css'
|
|
||||||
|
|
||||||
ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
||||||
<React.StrictMode>
|
|
||||||
<App />
|
|
||||||
</React.StrictMode>,
|
|
||||||
)
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "ES2020",
|
|
||||||
"useDefineForClassFields": true,
|
|
||||||
"lib": ["ES2020", "DOM", "DOM.Iterable", "ES2021.String"],
|
|
||||||
"module": "ESNext",
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"baseUrl": ".",
|
|
||||||
"paths": {
|
|
||||||
"@/*": ["./src/*"]
|
|
||||||
},
|
|
||||||
|
|
||||||
/* Bundler mode */
|
|
||||||
"moduleResolution": "bundler",
|
|
||||||
"allowImportingTsExtensions": true,
|
|
||||||
"resolveJsonModule": true,
|
|
||||||
"isolatedModules": true,
|
|
||||||
"noEmit": true,
|
|
||||||
"jsx": "react-jsx",
|
|
||||||
|
|
||||||
/* Linting */
|
|
||||||
"strict": true,
|
|
||||||
"noUnusedLocals": true,
|
|
||||||
"noUnusedParameters": true,
|
|
||||||
"noFallthroughCasesInSwitch": true
|
|
||||||
},
|
|
||||||
"include": ["src"],
|
|
||||||
"references": [{ "path": "./tsconfig.node.json" }]
|
|
||||||
}
|
|
1
web-new/.gitignore → web-old/.gitignore
vendored
@ -22,3 +22,4 @@ dist-ssr
|
|||||||
*.njsproj
|
*.njsproj
|
||||||
*.sln
|
*.sln
|
||||||
*.sw?
|
*.sw?
|
||||||
|
.npm
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 558 B After Width: | Height: | Size: 558 B |
Before Width: | Height: | Size: 800 B After Width: | Height: | Size: 800 B |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 534 B After Width: | Height: | Size: 534 B |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
26
web-old/index.html
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" href="/images/favicon.ico" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Frigate</title>
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/images/favicon.svg" />
|
||||||
|
<link rel="manifest" href="/site.webmanifest" />
|
||||||
|
<link rel="mask-icon" href="/images/favicon.svg" color="#3b82f7" />
|
||||||
|
<meta name="msapplication-TileColor" content="#3b82f7" />
|
||||||
|
<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)" />
|
||||||
|
<meta name="theme-color" content="#111827" media="(prefers-color-scheme: dark)" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app" class="z-0"></div>
|
||||||
|
<div id="dialogs" class="z-0"></div>
|
||||||
|
<div id="menus" class="z-0"></div>
|
||||||
|
<div id="tooltips" class="z-0"></div>
|
||||||
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
|
<script type="module" src="/src/main.tsx"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
16624
web-old/package-lock.json
generated
Normal file
62
web-old/package.json
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
"name": "frigate",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.0.0",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite --host",
|
||||||
|
"build": "tsc && vite build --base=/BASE_PATH/",
|
||||||
|
"lint": "eslint --ext .jsx,.js,.tsx,.ts --ignore-path .gitignore .",
|
||||||
|
"prettier:write": "prettier -u -w --ignore-path .gitignore \"*.{ts,tsx,js,jsx,css,html}\"",
|
||||||
|
"test": "vitest",
|
||||||
|
"coverage": "vitest run --coverage"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@cycjimmy/jsmpeg-player": "^6.0.5",
|
||||||
|
"axios": "^1.5.0",
|
||||||
|
"copy-to-clipboard": "3.3.3",
|
||||||
|
"date-fns": "^2.30.0",
|
||||||
|
"idb-keyval": "^6.2.0",
|
||||||
|
"immer": "^10.0.1",
|
||||||
|
"monaco-yaml": "^4.0.4",
|
||||||
|
"preact": "^10.17.1",
|
||||||
|
"preact-async-route": "^2.2.1",
|
||||||
|
"preact-router": "^4.1.0",
|
||||||
|
"react": "npm:@preact/compat@^17.1.2",
|
||||||
|
"react-dom": "npm:@preact/compat@^17.1.2",
|
||||||
|
"react-use-websocket": "^3.0.0",
|
||||||
|
"strftime": "^0.10.1",
|
||||||
|
"swr": "^1.3.0",
|
||||||
|
"video.js": "^8.5.2",
|
||||||
|
"videojs-playlist": "^5.1.0",
|
||||||
|
"vite-plugin-monaco-editor": "^1.1.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@preact/preset-vite": "^2.5.0",
|
||||||
|
"@tailwindcss/forms": "^0.5.6",
|
||||||
|
"@testing-library/jest-dom": "^6.1.2",
|
||||||
|
"@testing-library/preact": "^3.2.3",
|
||||||
|
"@testing-library/user-event": "^14.4.3",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^6.5.0",
|
||||||
|
"@typescript-eslint/parser": "^6.5.0",
|
||||||
|
"@vitest/coverage-v8": "^0.34.3",
|
||||||
|
"@vitest/ui": "^0.34.3",
|
||||||
|
"autoprefixer": "^10.4.15",
|
||||||
|
"eslint": "^8.48.0",
|
||||||
|
"eslint-config-preact": "^1.3.0",
|
||||||
|
"eslint-config-prettier": "^9.0.0",
|
||||||
|
"eslint-plugin-jest": "^27.2.3",
|
||||||
|
"eslint-plugin-prettier": "^5.0.0",
|
||||||
|
"eslint-plugin-vitest-globals": "^1.4.0",
|
||||||
|
"fake-indexeddb": "^4.0.1",
|
||||||
|
"jest-websocket-mock": "^2.5.0",
|
||||||
|
"jsdom": "^22.0.0",
|
||||||
|
"msw": "^1.2.1",
|
||||||
|
"postcss": "^8.4.29",
|
||||||
|
"prettier": "^3.0.3",
|
||||||
|
"tailwindcss": "^3.3.2",
|
||||||
|
"typescript": "^5.2.2",
|
||||||
|
"vite": "^4.4.9",
|
||||||
|
"vitest": "^0.34.3"
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |