pstream is dead; long live pstream taciturnaxolotl.github.io/pstream-ng/
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Update packages

+51 -46
+3 -3
package.json
··· 37 37 "@sozialhelden/ietf-language-tags": "^5.4.2", 38 38 "@types/node-forge": "^1.3.11", 39 39 "classnames": "^2.5.1", 40 - "core-js": "^3.36.1", 40 + "core-js": "^3.37.0", 41 41 "detect-browser": "^5.3.0", 42 42 "dompurify": "^3.1.0", 43 43 "flag-icons": "^7.2.1", ··· 87 87 "@types/react": "^18.2.79", 88 88 "@types/react-dom": "^18.2.25", 89 89 "@types/react-helmet": "^6.1.11", 90 - "@types/react-lazy-load-image-component": "^1.6.3", 90 + "@types/react-lazy-load-image-component": "^1.6.4", 91 91 "@types/react-router": "^5.1.20", 92 92 "@types/react-router-dom": "^5.3.3", 93 93 "@types/react-stickynode": "^4.0.3", ··· 121 121 "tailwindcss-themer": "^4.0.0", 122 122 "type-fest": "^4.15.0", 123 123 "typescript": "^5.4.5", 124 - "vite": "^5.2.8", 124 + "vite": "^5.2.9", 125 125 "vite-plugin-checker": "^0.6.4", 126 126 "vite-plugin-package-version": "^1.1.0", 127 127 "vite-plugin-pwa": "^0.17.5",
+40 -41
pnpm-lock.yaml
··· 46 46 specifier: ^2.5.1 47 47 version: 2.5.1 48 48 core-js: 49 - specifier: ^3.36.1 50 - version: 3.36.1 49 + specifier: ^3.37.0 50 + version: 3.37.0 51 51 detect-browser: 52 52 specifier: ^5.3.0 53 53 version: 5.3.0 ··· 192 192 specifier: ^6.1.11 193 193 version: 6.1.11 194 194 '@types/react-lazy-load-image-component': 195 - specifier: ^1.6.3 196 - version: 1.6.3 195 + specifier: ^1.6.4 196 + version: 1.6.4 197 197 '@types/react-router': 198 198 specifier: ^5.1.20 199 199 version: 5.1.20 ··· 217 217 version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) 218 218 '@vitejs/plugin-react': 219 219 specifier: ^4.2.1 220 - version: 4.2.1(vite@5.2.8) 220 + version: 4.2.1(vite@5.2.9) 221 221 autoprefixer: 222 222 specifier: ^10.4.19 223 223 version: 10.4.19(postcss@8.4.38) ··· 294 294 specifier: ^5.4.5 295 295 version: 5.4.5 296 296 vite: 297 - specifier: ^5.2.8 298 - version: 5.2.8(@types/node@20.12.7) 297 + specifier: ^5.2.9 298 + version: 5.2.9(@types/node@20.12.7) 299 299 vite-plugin-checker: 300 300 specifier: ^0.6.4 301 - version: 0.6.4(eslint@8.57.0)(typescript@5.4.5)(vite@5.2.8) 301 + version: 0.6.4(eslint@8.57.0)(typescript@5.4.5)(vite@5.2.9) 302 302 vite-plugin-package-version: 303 303 specifier: ^1.1.0 304 - version: 1.1.0(vite@5.2.8) 304 + version: 1.1.0(vite@5.2.9) 305 305 vite-plugin-pwa: 306 306 specifier: ^0.17.5 307 - version: 0.17.5(vite@5.2.8)(workbox-build@7.0.0)(workbox-window@7.0.0) 307 + version: 0.17.5(vite@5.2.9)(workbox-build@7.0.0)(workbox-window@7.0.0) 308 308 vite-plugin-static-copy: 309 309 specifier: ^1.0.2 310 - version: 1.0.2(vite@5.2.8) 310 + version: 1.0.2(vite@5.2.9) 311 311 vitest: 312 312 specifier: ^1.5.0 313 313 version: 1.5.0(@types/node@20.12.7)(jsdom@23.2.0) ··· 1499 1499 babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.4) 1500 1500 babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) 1501 1501 babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.4) 1502 - core-js-compat: 3.36.1 1502 + core-js-compat: 3.37.0 1503 1503 semver: 6.3.1 1504 1504 transitivePeerDependencies: 1505 1505 - supports-color ··· 2267 2267 '@types/react': 18.2.79 2268 2268 dev: true 2269 2269 2270 - /@types/react-lazy-load-image-component@1.6.3: 2271 - resolution: {integrity: sha512-HsIsYz7yWWTh/bftdzGnijKD26JyofLRqM/RM80sxs7Gk13G83ew8R/ra2XzXuiZfjNEjAq/Va+NBHFF9ciwxA==} 2270 + /@types/react-lazy-load-image-component@1.6.4: 2271 + resolution: {integrity: sha512-8pFPeDPF4yVG4lU1/ixZidJEEDZmEOYOTYDvmIu2IAabyuv97Q7n/93nMCocHvQ7vD1czKGiW+op55D9m3MkdA==} 2272 2272 dependencies: 2273 2273 '@types/react': 18.2.79 2274 2274 csstype: 3.1.3 ··· 2457 2457 resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 2458 2458 dev: true 2459 2459 2460 - /@vitejs/plugin-react@4.2.1(vite@5.2.8): 2460 + /@vitejs/plugin-react@4.2.1(vite@5.2.9): 2461 2461 resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} 2462 2462 engines: {node: ^14.18.0 || >=16.0.0} 2463 2463 peerDependencies: ··· 2468 2468 '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.4) 2469 2469 '@types/babel__core': 7.20.5 2470 2470 react-refresh: 0.14.0 2471 - vite: 5.2.8(@types/node@20.12.7) 2471 + vite: 5.2.9(@types/node@20.12.7) 2472 2472 transitivePeerDependencies: 2473 2473 - supports-color 2474 2474 dev: true ··· 2492 2492 /@vitest/snapshot@1.5.0: 2493 2493 resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} 2494 2494 dependencies: 2495 - magic-string: 0.30.9 2495 + magic-string: 0.30.10 2496 2496 pathe: 1.1.2 2497 2497 pretty-format: 29.7.0 2498 2498 dev: true ··· 2781 2781 dependencies: 2782 2782 '@babel/core': 7.24.4 2783 2783 '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) 2784 - core-js-compat: 3.36.1 2784 + core-js-compat: 3.37.0 2785 2785 transitivePeerDependencies: 2786 2786 - supports-color 2787 2787 dev: true ··· 2840 2840 hasBin: true 2841 2841 dependencies: 2842 2842 caniuse-lite: 1.0.30001610 2843 - electron-to-chromium: 1.4.736 2843 + electron-to-chromium: 1.4.738 2844 2844 node-releases: 2.0.14 2845 2845 update-browserslist-db: 1.0.13(browserslist@4.23.0) 2846 2846 ··· 3053 3053 toggle-selection: 1.0.6 3054 3054 dev: false 3055 3055 3056 - /core-js-compat@3.36.1: 3057 - resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} 3056 + /core-js-compat@3.37.0: 3057 + resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} 3058 3058 dependencies: 3059 3059 browserslist: 4.23.0 3060 3060 dev: true 3061 3061 3062 - /core-js@3.36.1: 3063 - resolution: {integrity: sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==} 3062 + /core-js@3.37.0: 3063 + resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==} 3064 3064 requiresBuild: true 3065 3065 dev: false 3066 3066 ··· 3346 3346 jake: 10.8.7 3347 3347 dev: true 3348 3348 3349 - /electron-to-chromium@1.4.736: 3350 - resolution: {integrity: sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==} 3349 + /electron-to-chromium@1.4.738: 3350 + resolution: {integrity: sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==} 3351 3351 3352 3352 /emoji-regex@8.0.0: 3353 3353 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} ··· 4930 4930 sourcemap-codec: 1.4.8 4931 4931 dev: true 4932 4932 4933 - /magic-string@0.30.9: 4934 - resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} 4935 - engines: {node: '>=12'} 4933 + /magic-string@0.30.10: 4934 + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} 4936 4935 dependencies: 4937 4936 '@jridgewell/sourcemap-codec': 1.4.15 4938 4937 dev: true ··· 6742 6741 debug: 4.3.4 6743 6742 pathe: 1.1.2 6744 6743 picocolors: 1.0.0 6745 - vite: 5.2.8(@types/node@20.12.7) 6744 + vite: 5.2.9(@types/node@20.12.7) 6746 6745 transitivePeerDependencies: 6747 6746 - '@types/node' 6748 6747 - less ··· 6754 6753 - terser 6755 6754 dev: true 6756 6755 6757 - /vite-plugin-checker@0.6.4(eslint@8.57.0)(typescript@5.4.5)(vite@5.2.8): 6756 + /vite-plugin-checker@0.6.4(eslint@8.57.0)(typescript@5.4.5)(vite@5.2.9): 6758 6757 resolution: {integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==} 6759 6758 engines: {node: '>=14.16'} 6760 6759 peerDependencies: ··· 6798 6797 strip-ansi: 6.0.1 6799 6798 tiny-invariant: 1.3.3 6800 6799 typescript: 5.4.5 6801 - vite: 5.2.8(@types/node@20.12.7) 6800 + vite: 5.2.9(@types/node@20.12.7) 6802 6801 vscode-languageclient: 7.0.0 6803 6802 vscode-languageserver: 7.0.0 6804 6803 vscode-languageserver-textdocument: 1.0.11 6805 6804 vscode-uri: 3.0.8 6806 6805 dev: true 6807 6806 6808 - /vite-plugin-package-version@1.1.0(vite@5.2.8): 6807 + /vite-plugin-package-version@1.1.0(vite@5.2.9): 6809 6808 resolution: {integrity: sha512-TPoFZXNanzcaKCIrC3e2L/TVRkkRLB6l4RPN/S7KbG7rWfyLcCEGsnXvxn6qR7fyZwXalnnSN/I9d6pSFjHpEA==} 6810 6809 peerDependencies: 6811 6810 vite: '>=2.0.0-beta.69' 6812 6811 dependencies: 6813 - vite: 5.2.8(@types/node@20.12.7) 6812 + vite: 5.2.9(@types/node@20.12.7) 6814 6813 dev: true 6815 6814 6816 - /vite-plugin-pwa@0.17.5(vite@5.2.8)(workbox-build@7.0.0)(workbox-window@7.0.0): 6815 + /vite-plugin-pwa@0.17.5(vite@5.2.9)(workbox-build@7.0.0)(workbox-window@7.0.0): 6817 6816 resolution: {integrity: sha512-UxRNPiJBzh4tqU/vc8G2TxmrUTzT6BqvSzhszLk62uKsf+npXdvLxGDz9C675f4BJi6MbD2tPnJhi5txlMzxbQ==} 6818 6817 engines: {node: '>=16.0.0'} 6819 6818 peerDependencies: ··· 6824 6823 debug: 4.3.4 6825 6824 fast-glob: 3.3.2 6826 6825 pretty-bytes: 6.1.1 6827 - vite: 5.2.8(@types/node@20.12.7) 6826 + vite: 5.2.9(@types/node@20.12.7) 6828 6827 workbox-build: 7.0.0 6829 6828 workbox-window: 7.0.0 6830 6829 transitivePeerDependencies: 6831 6830 - supports-color 6832 6831 dev: true 6833 6832 6834 - /vite-plugin-static-copy@1.0.2(vite@5.2.8): 6833 + /vite-plugin-static-copy@1.0.2(vite@5.2.9): 6835 6834 resolution: {integrity: sha512-AfmEF+a/mfjsUsrgjbCkhzUCeIUF4EKQXXt3Ie1cour9MBpy6f6GphbdW2td28oYfOrwCyRzFCksgLkpk58q6Q==} 6836 6835 engines: {node: ^18.0.0 || >=20.0.0} 6837 6836 peerDependencies: ··· 6841 6840 fast-glob: 3.3.2 6842 6841 fs-extra: 11.2.0 6843 6842 picocolors: 1.0.0 6844 - vite: 5.2.8(@types/node@20.12.7) 6843 + vite: 5.2.9(@types/node@20.12.7) 6845 6844 dev: true 6846 6845 6847 - /vite@5.2.8(@types/node@20.12.7): 6848 - resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} 6846 + /vite@5.2.9(@types/node@20.12.7): 6847 + resolution: {integrity: sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==} 6849 6848 engines: {node: ^18.0.0 || >=20.0.0} 6850 6849 hasBin: true 6851 6850 peerDependencies: ··· 6917 6916 execa: 8.0.1 6918 6917 jsdom: 23.2.0 6919 6918 local-pkg: 0.5.0 6920 - magic-string: 0.30.9 6919 + magic-string: 0.30.10 6921 6920 pathe: 1.1.2 6922 6921 picocolors: 1.0.0 6923 6922 std-env: 3.7.0 6924 6923 strip-literal: 2.1.0 6925 6924 tinybench: 2.7.0 6926 6925 tinypool: 0.8.4 6927 - vite: 5.2.8(@types/node@20.12.7) 6926 + vite: 5.2.9(@types/node@20.12.7) 6928 6927 vite-node: 1.5.0(@types/node@20.12.7) 6929 6928 why-is-node-running: 2.2.2 6930 6929 transitivePeerDependencies:
+8 -2
src/backend/metadata/tmdb.ts
··· 153 153 Authorization: `Bearer ${apiKey}`, 154 154 }; 155 155 156 + function abortOnTimeout(timeout: number): AbortSignal { 157 + const controller = new AbortController(); 158 + setTimeout(() => controller.abort(), timeout); 159 + return controller.signal; 160 + } 161 + 156 162 export async function get<T>(url: string, params?: object): Promise<T> { 157 163 if (!apiKey) throw new Error("TMDB API key not set"); 158 164 try { ··· 162 168 params: { 163 169 ...params, 164 170 }, 165 - signal: AbortSignal.timeout(5000), 171 + signal: abortOnTimeout(5000), 166 172 }); 167 173 } catch (err) { 168 174 return mwFetch<T>(encodeURI(url), { ··· 171 177 params: { 172 178 ...params, 173 179 }, 174 - signal: AbortSignal.timeout(30000), 180 + signal: abortOnTimeout(30000), 175 181 }); 176 182 } 177 183 }