From ac28c0f793960879a648681c39b48482a46deb55 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Sun, 29 Jan 2023 12:26:19 +0100 Subject: [PATCH] :sparkles: Improved authentication by checking the jwt in SvelteKit --- frontend/package.json | 21 +- frontend/pnpm-lock.yaml | 448 ++++++++++-------- frontend/src/hooks.server.ts | 45 +- frontend/src/routes/+layout.server.ts | 4 +- frontend/src/routes/dashboard/+page.server.ts | 1 - frontend/src/routes/dashboard/+page.svelte | 2 +- 6 files changed, 288 insertions(+), 233 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 7893b66..9ae6961 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -24,12 +24,12 @@ "@felte/reporter-tippy": "^1.1.5", "@felte/validator-yup": "^1.0.11", "@fontsource/marck-script": "^4.5.11", - "@sentry/browser": "^7.31.1", - "@sentry/tracing": "^7.31.1", + "@sentry/browser": "^7.34.0", + "@sentry/tracing": "^7.34.0", "@simplewebauthn/browser": "^6.2.2", "@sveltejs/adapter-auto": "^1.0.2", "@sveltejs/adapter-node": "^1.1.4", - "@sveltejs/kit": "^1.2.2", + "@sveltejs/kit": "^1.3.2", "@tailwindcss/typography": "^0.5.9", "@types/canvas-confetti": "^1.6.0", "@types/cookie": "^0.5.1", @@ -38,11 +38,11 @@ "@types/qrcode": "^1.5.0", "@types/sortablejs": "^1.15.0", "@types/ua-parser-js": "^0.7.36", - "@typescript-eslint/eslint-plugin": "^5.48.2", - "@typescript-eslint/parser": "^5.48.2", + "@typescript-eslint/eslint-plugin": "^5.49.0", + "@typescript-eslint/parser": "^5.49.0", "@uppy/compressor": "^1.0.1", - "@uppy/core": "^3.0.4", - "@uppy/dashboard": "^3.2.0", + "@uppy/core": "^3.0.5", + "@uppy/dashboard": "^3.2.1", "@uppy/drag-drop": "^3.0.1", "@uppy/drop-target": "^2.0.1", "@uppy/image-editor": "^2.1.0", @@ -55,7 +55,7 @@ "cookie": "^0.5.0", "crypto-js": "^4.1.1", "cssnano": "^5.1.14", - "eslint": "^8.32.0", + "eslint": "^8.33.0", "eslint-config-prettier": "^8.6.0", "eslint-plugin-svelte3": "^4.0.0", "felte": "^1.2.7", @@ -63,6 +63,7 @@ "highlight.js": "^11.7.0", "i18next-browser-languagedetector": "^7.0.1", "js-cookie": "^3.0.1", + "jws": "^4.0.0", "luxon": "^3.2.1", "mapbox-gl": "^2.12.0", "mdsvex": "^0.10.6", @@ -78,14 +79,14 @@ "sass": "^1.57.1", "socket.io-client": "^4.5.4", "svelte": "^3.55.1", - "svelte-check": "^3.0.2", + "svelte-check": "^3.0.3", "svelte-preprocess": "^5.0.1", "svelte-range-slider-pips": "^2.1.1", "svelte-tippy": "^1.3.2", "swiper": "^8.4.6", "tailwindcss": "^3.2.4", "tippy.js": "^6.3.7", - "tslib": "^2.4.1", + "tslib": "^2.5.0", "typescript": "~4.7.4", "ua-parser-js": "^1.0.33", "vite": "^4.0.4", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 015ca9d..7f5c893 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -11,12 +11,12 @@ specifiers: '@felte/reporter-tippy': ^1.1.5 '@felte/validator-yup': ^1.0.11 '@fontsource/marck-script': ^4.5.11 - '@sentry/browser': ^7.31.1 - '@sentry/tracing': ^7.31.1 + '@sentry/browser': ^7.34.0 + '@sentry/tracing': ^7.34.0 '@simplewebauthn/browser': ^6.2.2 '@sveltejs/adapter-auto': ^1.0.2 '@sveltejs/adapter-node': ^1.1.4 - '@sveltejs/kit': ^1.2.2 + '@sveltejs/kit': ^1.3.2 '@tailwindcss/typography': ^0.5.9 '@types/canvas-confetti': ^1.6.0 '@types/cookie': ^0.5.1 @@ -25,11 +25,11 @@ specifiers: '@types/qrcode': ^1.5.0 '@types/sortablejs': ^1.15.0 '@types/ua-parser-js': ^0.7.36 - '@typescript-eslint/eslint-plugin': ^5.48.2 - '@typescript-eslint/parser': ^5.48.2 + '@typescript-eslint/eslint-plugin': ^5.49.0 + '@typescript-eslint/parser': ^5.49.0 '@uppy/compressor': ^1.0.1 - '@uppy/core': ^3.0.4 - '@uppy/dashboard': ^3.2.0 + '@uppy/core': ^3.0.5 + '@uppy/dashboard': ^3.2.1 '@uppy/drag-drop': ^3.0.1 '@uppy/drop-target': ^2.0.1 '@uppy/image-editor': ^2.1.0 @@ -42,7 +42,7 @@ specifiers: cookie: ^0.5.0 crypto-js: ^4.1.1 cssnano: ^5.1.14 - eslint: ^8.32.0 + eslint: ^8.33.0 eslint-config-prettier: ^8.6.0 eslint-plugin-svelte3: ^4.0.0 felte: ^1.2.7 @@ -51,6 +51,7 @@ specifiers: i18next: ^22.4.9 i18next-browser-languagedetector: ^7.0.1 js-cookie: ^3.0.1 + jws: ^4.0.0 luxon: ^3.2.1 mapbox-gl: ^2.12.0 mdsvex: ^0.10.6 @@ -66,14 +67,14 @@ specifiers: sass: ^1.57.1 socket.io-client: ^4.5.4 svelte: ^3.55.1 - svelte-check: ^3.0.2 + svelte-check: ^3.0.3 svelte-preprocess: ^5.0.1 svelte-range-slider-pips: ^2.1.1 svelte-tippy: ^1.3.2 swiper: ^8.4.6 tailwindcss: ^3.2.4 tippy.js: ^6.3.7 - tslib: ^2.4.1 + tslib: ^2.5.0 typescript: ~4.7.4 ua-parser-js: ^1.0.33 vite: ^4.0.4 @@ -94,12 +95,12 @@ devDependencies: '@felte/reporter-tippy': 1.1.5_tippy.js@6.3.7 '@felte/validator-yup': 1.0.11_yup@0.32.11 '@fontsource/marck-script': 4.5.11 - '@sentry/browser': 7.31.1 - '@sentry/tracing': 7.31.1 + '@sentry/browser': 7.34.0 + '@sentry/tracing': 7.34.0 '@simplewebauthn/browser': 6.2.2 - '@sveltejs/adapter-auto': 1.0.2_@sveltejs+kit@1.2.2 - '@sveltejs/adapter-node': 1.1.4_@sveltejs+kit@1.2.2 - '@sveltejs/kit': 1.2.2_svelte@3.55.1+vite@4.0.4 + '@sveltejs/adapter-auto': 1.0.2_@sveltejs+kit@1.3.2 + '@sveltejs/adapter-node': 1.1.4_@sveltejs+kit@1.3.2 + '@sveltejs/kit': 1.3.2_svelte@3.55.1+vite@4.0.4 '@tailwindcss/typography': 0.5.9_tailwindcss@3.2.4 '@types/canvas-confetti': 1.6.0 '@types/cookie': 0.5.1 @@ -108,31 +109,32 @@ devDependencies: '@types/qrcode': 1.5.0 '@types/sortablejs': 1.15.0 '@types/ua-parser-js': 0.7.36 - '@typescript-eslint/eslint-plugin': 5.48.2_2hbgynhxm74hsb5vlfnyqgemdi - '@typescript-eslint/parser': 5.48.2_oz6z67amphy2h47f67wll6poxm - '@uppy/compressor': 1.0.1_@uppy+core@3.0.4 - '@uppy/core': 3.0.4 - '@uppy/dashboard': 3.2.0_@uppy+core@3.0.4 - '@uppy/drag-drop': 3.0.1_@uppy+core@3.0.4 - '@uppy/drop-target': 2.0.1_@uppy+core@3.0.4 - '@uppy/image-editor': 2.1.0_@uppy+core@3.0.4 - '@uppy/progress-bar': 3.0.1_@uppy+core@3.0.4 - '@uppy/status-bar': 3.0.1_@uppy+core@3.0.4 - '@uppy/svelte': 3.0.1_lzwna743apfraisht4o7qk5mce - '@uppy/xhr-upload': 3.0.4_@uppy+core@3.0.4 + '@typescript-eslint/eslint-plugin': 5.49.0_uymdhlntwytpctrrgoyjmlajou + '@typescript-eslint/parser': 5.49.0_l36yidrw337hwf2rtnamh77lgq + '@uppy/compressor': 1.0.1_@uppy+core@3.0.5 + '@uppy/core': 3.0.5 + '@uppy/dashboard': 3.2.1_@uppy+core@3.0.5 + '@uppy/drag-drop': 3.0.1_@uppy+core@3.0.5 + '@uppy/drop-target': 2.0.1_@uppy+core@3.0.5 + '@uppy/image-editor': 2.1.0_@uppy+core@3.0.5 + '@uppy/progress-bar': 3.0.1_@uppy+core@3.0.5 + '@uppy/status-bar': 3.0.1_@uppy+core@3.0.5 + '@uppy/svelte': 3.0.1_usm4uxrt5vpp2jwljjehompzzy + '@uppy/xhr-upload': 3.0.4_@uppy+core@3.0.5 autoprefixer: 10.4.13_postcss@8.4.21 canvas-confetti: 1.6.0 cookie: 0.5.0 crypto-js: 4.1.1 cssnano: 5.1.14_postcss@8.4.21 - eslint: 8.32.0 - eslint-config-prettier: 8.6.0_eslint@8.32.0 - eslint-plugin-svelte3: 4.0.0_tmo5zkisvhu6htudosk5k7m6pu + eslint: 8.33.0 + eslint-config-prettier: 8.6.0_eslint@8.33.0 + eslint-plugin-svelte3: 4.0.0_4omm2ewoudhgnmf7aocafatnc4 felte: 1.2.7_svelte@3.55.1 fuse.js: 6.6.2 highlight.js: 11.7.0 i18next-browser-languagedetector: 7.0.1 js-cookie: 3.0.1 + jws: 4.0.0 luxon: 3.2.1 mapbox-gl: 2.12.0 mdsvex: 0.10.6_svelte@3.55.1 @@ -148,14 +150,14 @@ devDependencies: sass: 1.57.1 socket.io-client: 4.5.4 svelte: 3.55.1 - svelte-check: 3.0.2_mraflicfyjy3x4taxigiwsr23i + svelte-check: 3.0.3_mraflicfyjy3x4taxigiwsr23i svelte-preprocess: 5.0.1_uaodilper24tejwwmnc3sygxui svelte-range-slider-pips: 2.1.1 svelte-tippy: 1.3.2 swiper: 8.4.6 tailwindcss: 3.2.4_postcss@8.4.21 tippy.js: 6.3.7 - tslib: 2.4.1 + tslib: 2.5.0 typescript: 4.7.4 ua-parser-js: 1.0.33 vite: 4.0.4_sass@1.57.1 @@ -828,7 +830,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.4.1 - globals: 13.19.0 + globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1051,7 +1053,7 @@ packages: } dev: true - /@rollup/plugin-commonjs/24.0.1_rollup@3.10.1: + /@rollup/plugin-commonjs/24.0.1_rollup@3.12.0: resolution: { integrity: sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow== @@ -1063,16 +1065,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.1 + '@rollup/pluginutils': 5.0.2_rollup@3.12.0 commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.10.1 + rollup: 3.12.0 dev: true - /@rollup/plugin-json/6.0.0_rollup@3.10.1: + /@rollup/plugin-json/6.0.0_rollup@3.12.0: resolution: { integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w== @@ -1084,11 +1086,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.1 - rollup: 3.10.1 + '@rollup/pluginutils': 5.0.2_rollup@3.12.0 + rollup: 3.12.0 dev: true - /@rollup/plugin-node-resolve/15.0.1_rollup@3.10.1: + /@rollup/plugin-node-resolve/15.0.1_rollup@3.12.0: resolution: { integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg== @@ -1100,16 +1102,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.1 + '@rollup/pluginutils': 5.0.2_rollup@3.12.0 '@types/resolve': 1.20.2 deepmerge: 4.2.2 is-builtin-module: 3.2.0 is-module: 1.0.0 resolve: 1.22.1 - rollup: 3.10.1 + rollup: 3.12.0 dev: true - /@rollup/pluginutils/5.0.2_rollup@3.10.1: + /@rollup/pluginutils/5.0.2_rollup@3.12.0: resolution: { integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== @@ -1124,76 +1126,76 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.10.1 + rollup: 3.12.0 dev: true - /@sentry/browser/7.31.1: + /@sentry/browser/7.34.0: resolution: { - integrity: sha512-Rg9F61S1tz1Dv3iUyyGP26bxoi7WJAG2+f2fBbSmFuJ+JTH4Jvu2/F1bBig8Dz01ejzVhbNSUUCfoDhSvksIsQ== + integrity: sha512-5Jmjj0DLxx+31o12T+VH4U+gO7wz3L+ftjuTxcQaC8GeFVe5qCyXZoDmWKNV9NEyREiZ3azV62bJc5wojZrIIg== } engines: { node: '>=8' } dependencies: - '@sentry/core': 7.31.1 - '@sentry/replay': 7.31.1 - '@sentry/types': 7.31.1 - '@sentry/utils': 7.31.1 + '@sentry/core': 7.34.0 + '@sentry/replay': 7.34.0 + '@sentry/types': 7.34.0 + '@sentry/utils': 7.34.0 tslib: 1.14.1 dev: true - /@sentry/core/7.31.1: + /@sentry/core/7.34.0: resolution: { - integrity: sha512-quaNU6z8jabmatBTDi28Wpff2yzfWIp/IU4bbi2QOtEiCNT+TQJXqlRTRMu9xLrX7YzyKCL5X2gbit/85lyWUg== + integrity: sha512-J1oxsYZX1N0tkEcaHt/uuDqk6zOnaivyampp+EvBsUMCdemjg7rwKvawlRB0ZtBEQu3HAhi8zecm03mlpWfCDw== } engines: { node: '>=8' } dependencies: - '@sentry/types': 7.31.1 - '@sentry/utils': 7.31.1 + '@sentry/types': 7.34.0 + '@sentry/utils': 7.34.0 tslib: 1.14.1 dev: true - /@sentry/replay/7.31.1: + /@sentry/replay/7.34.0: resolution: { - integrity: sha512-sLArvwZn6IwA/bASctyhxN7LhdCXJvMmyTynRfmk7pzuNzBMc5CNlHeIsDpHrfQuH53IKicvl6cHnHyclu5DSA== + integrity: sha512-4L4YZfWt8mcVNcI99RxHORPb308URI1R9xsFj97fagk0ATjexLKr5QCA2ApnKaSn8Q0q1Zdzd4XmFtW9anU45Q== } engines: { node: '>=12' } dependencies: - '@sentry/core': 7.31.1 - '@sentry/types': 7.31.1 - '@sentry/utils': 7.31.1 + '@sentry/core': 7.34.0 + '@sentry/types': 7.34.0 + '@sentry/utils': 7.34.0 dev: true - /@sentry/tracing/7.31.1: + /@sentry/tracing/7.34.0: resolution: { - integrity: sha512-kW6vNwddp2Ycq2JfTzveUEIRF9YQwvl7L6BBoOZt9oVnYlsPipEeyU2Q277LatHldr8hDo2tbz/vz2BQjO5GSw== + integrity: sha512-JtfSWBfcWslfIujcpGEPF5oOiAOCd5shMoWYrdTvCfruHhYjp4w5kv/ndkvq2EpFkcQYhdmtQEytXEO8IJIqRw== } engines: { node: '>=8' } dependencies: - '@sentry/core': 7.31.1 - '@sentry/types': 7.31.1 - '@sentry/utils': 7.31.1 + '@sentry/core': 7.34.0 + '@sentry/types': 7.34.0 + '@sentry/utils': 7.34.0 tslib: 1.14.1 dev: true - /@sentry/types/7.31.1: + /@sentry/types/7.34.0: resolution: { - integrity: sha512-1uzr2l0AxEnxUX/S0EdmXUQ15/kDsam8Nbdw4Gai8SU764XwQgA/TTjoewVP597CDI/AHKan67Y630/Ylmkx9w== + integrity: sha512-K+OeHIrl35PSYn6Zwqe4b8WWyAJQoI5NeWxHVkM7oQTGJ1YLG4BvLsR+UiUXnKdR5krE4EDtEA5jLsDlBEyPvw== } engines: { node: '>=8' } dev: true - /@sentry/utils/7.31.1: + /@sentry/utils/7.34.0: resolution: { - integrity: sha512-ZsIPq29aNdP9q3R7qIzJhZ9WW+4DzE9g5SfGwx3UjTIxoRRBfdUJUbf7S+LKEdvCkKbyoDt6FLt5MiSJV43xBA== + integrity: sha512-VIHHXEBw0htzqxnU8A7WkXKvmsG2pZVqHlAn0H9W/yyFQtXMuP1j1i0NsjADB/3JXUKK83kTNWGzScXvp0o+Jg== } engines: { node: '>=8' } dependencies: - '@sentry/types': 7.31.1 + '@sentry/types': 7.34.0 tslib: 1.14.1 dev: true @@ -1211,7 +1213,7 @@ packages: } dev: true - /@sveltejs/adapter-auto/1.0.2_@sveltejs+kit@1.2.2: + /@sveltejs/adapter-auto/1.0.2_@sveltejs+kit@1.3.2: resolution: { integrity: sha512-UXpEO/gutERZnD+Z5Vi4J/ifD3WSRuCI7xwtLJTcKNQvJ6t5Xsj1X3Mw2F8Vv/XTUuxf7xPLYUgThU331r0Y9w== @@ -1219,11 +1221,11 @@ packages: peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@sveltejs/kit': 1.2.2_svelte@3.55.1+vite@4.0.4 + '@sveltejs/kit': 1.3.2_svelte@3.55.1+vite@4.0.4 import-meta-resolve: 2.2.1 dev: true - /@sveltejs/adapter-node/1.1.4_@sveltejs+kit@1.2.2: + /@sveltejs/adapter-node/1.1.4_@sveltejs+kit@1.3.2: resolution: { integrity: sha512-3iEBqi1fXLXP9YIbVuz2LXajoebRJCmAFEQbN40DlxAnA7G+InxUgnqFun3q9gBMz2Qvd99K51g/HxWetXRe8Q== @@ -1231,17 +1233,17 @@ packages: peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@rollup/plugin-commonjs': 24.0.1_rollup@3.10.1 - '@rollup/plugin-json': 6.0.0_rollup@3.10.1 - '@rollup/plugin-node-resolve': 15.0.1_rollup@3.10.1 - '@sveltejs/kit': 1.2.2_svelte@3.55.1+vite@4.0.4 - rollup: 3.10.1 + '@rollup/plugin-commonjs': 24.0.1_rollup@3.12.0 + '@rollup/plugin-json': 6.0.0_rollup@3.12.0 + '@rollup/plugin-node-resolve': 15.0.1_rollup@3.12.0 + '@sveltejs/kit': 1.3.2_svelte@3.55.1+vite@4.0.4 + rollup: 3.12.0 dev: true - /@sveltejs/kit/1.2.2_svelte@3.55.1+vite@4.0.4: + /@sveltejs/kit/1.3.2_svelte@3.55.1+vite@4.0.4: resolution: { - integrity: sha512-aZUjAZ/6gWEYFQDrDNINuvOi6VxlG86kCcIDRWDIFJjI38Ueieo1fySb0j0d2VkQVrYXU7VqjTVMBZFix+hByA== + integrity: sha512-sCJORYwK/DY4SEmlmaGSzO/7K/dpb2QXJIHy6di5FV/9p8OSeMjlbOFxZMKzW7PHH6jCaKkoApgjkbI+A/y/qw== } engines: { node: ^16.14 || >=18 } hasBin: true @@ -1263,7 +1265,7 @@ packages: sirv: 2.0.2 svelte: 3.55.1 tiny-glob: 0.2.9 - undici: 5.15.1 + undici: 5.16.0 vite: 4.0.4_sass@1.57.1 transitivePeerDependencies: - supports-color @@ -1444,10 +1446,10 @@ packages: } dev: true - /@typescript-eslint/eslint-plugin/5.48.2_2hbgynhxm74hsb5vlfnyqgemdi: + /@typescript-eslint/eslint-plugin/5.49.0_uymdhlntwytpctrrgoyjmlajou: resolution: { - integrity: sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg== + integrity: sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: @@ -1458,12 +1460,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.48.2_oz6z67amphy2h47f67wll6poxm - '@typescript-eslint/scope-manager': 5.48.2 - '@typescript-eslint/type-utils': 5.48.2_oz6z67amphy2h47f67wll6poxm - '@typescript-eslint/utils': 5.48.2_oz6z67amphy2h47f67wll6poxm + '@typescript-eslint/parser': 5.49.0_l36yidrw337hwf2rtnamh77lgq + '@typescript-eslint/scope-manager': 5.49.0 + '@typescript-eslint/type-utils': 5.49.0_l36yidrw337hwf2rtnamh77lgq + '@typescript-eslint/utils': 5.49.0_l36yidrw337hwf2rtnamh77lgq debug: 4.3.4 - eslint: 8.32.0 + eslint: 8.33.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 regexpp: 3.2.0 @@ -1474,10 +1476,10 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.48.2_oz6z67amphy2h47f67wll6poxm: + /@typescript-eslint/parser/5.49.0_l36yidrw337hwf2rtnamh77lgq: resolution: { - integrity: sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw== + integrity: sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: @@ -1487,31 +1489,31 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.48.2 - '@typescript-eslint/types': 5.48.2 - '@typescript-eslint/typescript-estree': 5.48.2_typescript@4.7.4 + '@typescript-eslint/scope-manager': 5.49.0 + '@typescript-eslint/types': 5.49.0 + '@typescript-eslint/typescript-estree': 5.49.0_typescript@4.7.4 debug: 4.3.4 - eslint: 8.32.0 + eslint: 8.33.0 typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.48.2: + /@typescript-eslint/scope-manager/5.49.0: resolution: { - integrity: sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw== + integrity: sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } dependencies: - '@typescript-eslint/types': 5.48.2 - '@typescript-eslint/visitor-keys': 5.48.2 + '@typescript-eslint/types': 5.49.0 + '@typescript-eslint/visitor-keys': 5.49.0 dev: true - /@typescript-eslint/type-utils/5.48.2_oz6z67amphy2h47f67wll6poxm: + /@typescript-eslint/type-utils/5.49.0_l36yidrw337hwf2rtnamh77lgq: resolution: { - integrity: sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew== + integrity: sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: @@ -1521,28 +1523,28 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.48.2_typescript@4.7.4 - '@typescript-eslint/utils': 5.48.2_oz6z67amphy2h47f67wll6poxm + '@typescript-eslint/typescript-estree': 5.49.0_typescript@4.7.4 + '@typescript-eslint/utils': 5.49.0_l36yidrw337hwf2rtnamh77lgq debug: 4.3.4 - eslint: 8.32.0 + eslint: 8.33.0 tsutils: 3.21.0_typescript@4.7.4 typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.48.2: + /@typescript-eslint/types/5.49.0: resolution: { - integrity: sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA== + integrity: sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } dev: true - /@typescript-eslint/typescript-estree/5.48.2_typescript@4.7.4: + /@typescript-eslint/typescript-estree/5.49.0_typescript@4.7.4: resolution: { - integrity: sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg== + integrity: sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: @@ -1551,8 +1553,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.48.2 - '@typescript-eslint/visitor-keys': 5.48.2 + '@typescript-eslint/types': 5.49.0 + '@typescript-eslint/visitor-keys': 5.49.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -1563,10 +1565,10 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.48.2_oz6z67amphy2h47f67wll6poxm: + /@typescript-eslint/utils/5.49.0_l36yidrw337hwf2rtnamh77lgq: resolution: { - integrity: sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow== + integrity: sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: @@ -1574,26 +1576,26 @@ packages: dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.48.2 - '@typescript-eslint/types': 5.48.2 - '@typescript-eslint/typescript-estree': 5.48.2_typescript@4.7.4 - eslint: 8.32.0 + '@typescript-eslint/scope-manager': 5.49.0 + '@typescript-eslint/types': 5.49.0 + '@typescript-eslint/typescript-estree': 5.49.0_typescript@4.7.4 + eslint: 8.33.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.32.0 + eslint-utils: 3.0.0_eslint@8.33.0 semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.48.2: + /@typescript-eslint/visitor-keys/5.49.0: resolution: { - integrity: sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ== + integrity: sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } dependencies: - '@typescript-eslint/types': 5.48.2 + '@typescript-eslint/types': 5.49.0 eslint-visitor-keys: 3.3.0 dev: true @@ -1603,11 +1605,11 @@ packages: integrity: sha512-S1M37vjWu8gdOgdI3Hh/1fVZ9GaLdyPQjVyUujZDTsr79b4VG7v/zjdqJ0FiOTjfGbpnj8s9kr1uyYi0Zf5VFw== } dependencies: - '@uppy/utils': 5.1.1 + '@uppy/utils': 5.1.2 namespace-emitter: 2.0.1 dev: true - /@uppy/compressor/1.0.1_@uppy+core@3.0.4: + /@uppy/compressor/1.0.1_@uppy+core@3.0.5: resolution: { integrity: sha512-1L0aKPKRySFiTnFqVoutr7A/Xo0e9NOP/Fopw3LoeFZcFcsxn+HeZu/TMWsJvI5IbxfgJbF6gvCHO5hVV5wb2g== @@ -1616,22 +1618,22 @@ packages: '@uppy/core': ^3.0.2 dependencies: '@transloadit/prettier-bytes': 0.0.9 - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 compressorjs: 1.1.1 preact: 10.11.3 promise-queue: 2.2.5 dev: true - /@uppy/core/3.0.4: + /@uppy/core/3.0.5: resolution: { - integrity: sha512-vFofKmmVVsQE9bnOXozAPy94kLQMUdMH/l8m4ncXmxyyGRc2e9VfvY9wiy2EEsoj11O7YVzHOP70FYdRReUpVw== + integrity: sha512-DPrSfEdJtxh5/p2U4Cl3d6Ga66k2M0eki2fIoEOC5zj1Z4vTfE3sJ945nJzrM0B7vFhFshMh7sCiNafa8HYEAg== } dependencies: '@transloadit/prettier-bytes': 0.0.9 '@uppy/store-default': 3.0.2 - '@uppy/utils': 5.1.1 + '@uppy/utils': 5.1.2 lodash.throttle: 4.1.1 mime-match: 1.0.2 namespace-emitter: 2.0.1 @@ -1639,21 +1641,21 @@ packages: preact: 10.11.3 dev: true - /@uppy/dashboard/3.2.0_@uppy+core@3.0.4: + /@uppy/dashboard/3.2.1_@uppy+core@3.0.5: resolution: { - integrity: sha512-Lb7qx4AKrq66cQnmoNdGIbhwYEZKnmdufasFWctrY1g2qN7Mv+1hor+QLhN9F51qHU1VJmxgEgEWmfZREWiXXw== + integrity: sha512-Qla7WNcbSr2dMC+xxunKYNv2NodzDxkERaBYDd5cTiGVo8KbYb4lJhZ3eTh5i/5h57dE9dzZop0jqhLRY89/LA== } peerDependencies: - '@uppy/core': ^3.0.4 + '@uppy/core': ^3.0.5 dependencies: '@transloadit/prettier-bytes': 0.0.7 - '@uppy/core': 3.0.4 - '@uppy/informer': 3.0.1_@uppy+core@3.0.4 - '@uppy/provider-views': 3.0.2_@uppy+core@3.0.4 - '@uppy/status-bar': 3.0.1_@uppy+core@3.0.4 - '@uppy/thumbnail-generator': 3.0.2_@uppy+core@3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/informer': 3.0.1_@uppy+core@3.0.5 + '@uppy/provider-views': 3.0.2_@uppy+core@3.0.5 + '@uppy/status-bar': 3.0.1_@uppy+core@3.0.5 + '@uppy/thumbnail-generator': 3.0.2_@uppy+core@3.0.5 + '@uppy/utils': 5.1.2 classnames: 2.3.2 is-shallow-equal: 1.0.1 lodash.debounce: 4.0.8 @@ -1662,7 +1664,7 @@ packages: preact: 10.11.3 dev: true - /@uppy/drag-drop/3.0.1_@uppy+core@3.0.4: + /@uppy/drag-drop/3.0.1_@uppy+core@3.0.5: resolution: { integrity: sha512-1jMlF2V5AFfvSYtbIR1N2M8WbjhQPW14FcEElpeWjzwlF3OnbUARwk4jBlGfcAsDcV4dYf6hG192xPPdnuBc6A== @@ -1670,12 +1672,12 @@ packages: peerDependencies: '@uppy/core': ^3.0.2 dependencies: - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 preact: 10.11.3 dev: true - /@uppy/drop-target/2.0.1_@uppy+core@3.0.4: + /@uppy/drop-target/2.0.1_@uppy+core@3.0.5: resolution: { integrity: sha512-FMO8wj+0dx4mlwXKxFWSTUF+irgr0BVXadyc4qaoBBtZ3vEcwc3jP7SQfwk3JizV/D5MYG8MRICRbPAIrY9M8w== @@ -1683,11 +1685,11 @@ packages: peerDependencies: '@uppy/core': ^3.0.2 dependencies: - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 dev: true - /@uppy/image-editor/2.1.0_@uppy+core@3.0.4: + /@uppy/image-editor/2.1.0_@uppy+core@3.0.5: resolution: { integrity: sha512-tME6cVFkXbu5sCXw8+zxX06Qj3ErJwiwUWe1eJNvHI2e/I9mXj0AvSON3P6O+4DN3yyUoTH1w3R54cDqRzddCQ== @@ -1695,13 +1697,13 @@ packages: peerDependencies: '@uppy/core': ^3.0.4 dependencies: - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 cropperjs: 1.5.7 preact: 10.11.3 dev: true - /@uppy/informer/3.0.1_@uppy+core@3.0.4: + /@uppy/informer/3.0.1_@uppy+core@3.0.5: resolution: { integrity: sha512-Mip+l2CYsTVYa0fSwD0okHRS5/UhAqCfQO2CRwwR5/vC6DpR1VAALDqx6RpssOaFiOACAx12VCcZiP5J8+2BJw== @@ -1709,12 +1711,12 @@ packages: peerDependencies: '@uppy/core': ^3.0.2 dependencies: - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 preact: 10.11.3 dev: true - /@uppy/progress-bar/3.0.1_@uppy+core@3.0.4: + /@uppy/progress-bar/3.0.1_@uppy+core@3.0.5: resolution: { integrity: sha512-cjBLOst0sPV1yF6YzkQIx/mHpytMXN7MRF7H/6Yc8ahDzm8XkbwMQCf2zksaanGfHUNCHlQFgCkfjfizK6VJIw== @@ -1722,12 +1724,12 @@ packages: peerDependencies: '@uppy/core': ^3.0.2 dependencies: - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 preact: 10.11.3 dev: true - /@uppy/provider-views/3.0.2_@uppy+core@3.0.4: + /@uppy/provider-views/3.0.2_@uppy+core@3.0.5: resolution: { integrity: sha512-z4v6UAiNSM2h8BB+/svBU1R/6QsssoLYKd4O8g6L7iAD1S2NPtU7U0busIyTvh3CA1Q6tfvfwF1JOFGTfNPQaA== @@ -1735,13 +1737,13 @@ packages: peerDependencies: '@uppy/core': ^3.0.4 dependencies: - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 classnames: 2.3.2 preact: 10.11.3 dev: true - /@uppy/status-bar/3.0.1_@uppy+core@3.0.4: + /@uppy/status-bar/3.0.1_@uppy+core@3.0.5: resolution: { integrity: sha512-QQqIjiHBsNjZFR6xEc5SAT5UYbKnRcgNWwyLmJR0BYVINfx/aeIueXIm0jkBuJ4XFkebH7nDjKGW89JE9WKkgg== @@ -1750,8 +1752,8 @@ packages: '@uppy/core': ^3.0.2 dependencies: '@transloadit/prettier-bytes': 0.0.9 - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 classnames: 2.3.2 lodash.throttle: 4.1.1 preact: 10.11.3 @@ -1764,7 +1766,7 @@ packages: } dev: true - /@uppy/svelte/3.0.1_lzwna743apfraisht4o7qk5mce: + /@uppy/svelte/3.0.1_usm4uxrt5vpp2jwljjehompzzy: resolution: { integrity: sha512-zIfW9zEWKYMI8N+sX9RHm5FW9a0CgezElsPfSfCm/kUb2GPx94O5TeEvMsvY6Si5fr+gXa6KM/1Q5LdwhJxQIQ== @@ -1777,15 +1779,15 @@ packages: '@uppy/status-bar': ^3.0.1 svelte: ^3.0.0 dependencies: - '@uppy/core': 3.0.4 - '@uppy/dashboard': 3.2.0_@uppy+core@3.0.4 - '@uppy/drag-drop': 3.0.1_@uppy+core@3.0.4 - '@uppy/progress-bar': 3.0.1_@uppy+core@3.0.4 - '@uppy/status-bar': 3.0.1_@uppy+core@3.0.4 + '@uppy/core': 3.0.5 + '@uppy/dashboard': 3.2.1_@uppy+core@3.0.5 + '@uppy/drag-drop': 3.0.1_@uppy+core@3.0.5 + '@uppy/progress-bar': 3.0.1_@uppy+core@3.0.5 + '@uppy/status-bar': 3.0.1_@uppy+core@3.0.5 svelte: 3.55.1 dev: true - /@uppy/thumbnail-generator/3.0.2_@uppy+core@3.0.4: + /@uppy/thumbnail-generator/3.0.2_@uppy+core@3.0.5: resolution: { integrity: sha512-3qE1giGu1O9BkO8MCYYV78X9p95l5Ptv7JUDpqKlIMN/NGBHblMFCn5mjmt4soyQFUGgnZ7+bxq0DtjXPpWJYA== @@ -1793,21 +1795,21 @@ packages: peerDependencies: '@uppy/core': ^3.0.2 dependencies: - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 exifr: 7.1.3 dev: true - /@uppy/utils/5.1.1: + /@uppy/utils/5.1.2: resolution: { - integrity: sha512-uoI+PcIVQboky0ZbN4PQeK1seZnnJocomzeK7blId9HKJ6QNgZLf2ibk2CQuQxrOuNsWhgrhs5uLO5Si0oM0Yw== + integrity: sha512-a/QSxcYeK1SSOjyyohi0oSwLDMJ9SSWwDELDii1WOKiJwmtt5O6pGCKHTnvrr6RwbiedngG0dZi3koYOG+MdoA== } dependencies: lodash.throttle: 4.1.1 dev: true - /@uppy/xhr-upload/3.0.4_@uppy+core@3.0.4: + /@uppy/xhr-upload/3.0.4_@uppy+core@3.0.5: resolution: { integrity: sha512-uJ1oxcwEaSLnrexvi6Lp57hV3z3DsovgVmYIVwg+z/EnrRcL32wNRE7FcIr8Mk9e1jdMiFYlk6cQmiP2dZep8A== @@ -1816,12 +1818,12 @@ packages: '@uppy/core': ^3.0.4 dependencies: '@uppy/companion-client': 3.1.1 - '@uppy/core': 3.0.4 - '@uppy/utils': 5.1.1 + '@uppy/core': 3.0.5 + '@uppy/utils': 5.1.2 nanoid: 4.0.0 dev: true - /acorn-jsx/5.3.2_acorn@8.8.1: + /acorn-jsx/5.3.2_acorn@8.8.2: resolution: { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -1829,7 +1831,7 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.1 + acorn: 8.8.2 dev: true /acorn-node/1.8.2: @@ -1860,10 +1862,10 @@ packages: hasBin: true dev: true - /acorn/8.8.1: + /acorn/8.8.2: resolution: { - integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== } engines: { node: '>=0.4.0' } hasBin: true @@ -1943,7 +1945,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001446 + caniuse-lite: 1.0.30001449 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -2017,7 +2019,7 @@ packages: engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true dependencies: - caniuse-lite: 1.0.30001446 + caniuse-lite: 1.0.30001449 electron-to-chromium: 1.4.284 node-releases: 2.0.8 update-browserslist-db: 1.0.10_browserslist@4.21.4 @@ -2030,6 +2032,13 @@ packages: } dev: true + /buffer-equal-constant-time/1.0.1: + resolution: + { + integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + } + dev: true + /builtin-modules/3.3.0: resolution: { @@ -2079,15 +2088,15 @@ packages: } dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001446 + caniuse-lite: 1.0.30001449 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true - /caniuse-lite/1.0.30001446: + /caniuse-lite/1.0.30001449: resolution: { - integrity: sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw== + integrity: sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw== } dev: true @@ -2563,6 +2572,15 @@ packages: } dev: true + /ecdsa-sig-formatter/1.0.11: + resolution: + { + integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + } + dependencies: + safe-buffer: 5.2.1 + dev: true + /electron-to-chromium/1.4.284: resolution: { @@ -2679,7 +2697,7 @@ packages: engines: { node: '>=10' } dev: true - /eslint-config-prettier/8.6.0_eslint@8.32.0: + /eslint-config-prettier/8.6.0_eslint@8.33.0: resolution: { integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA== @@ -2688,10 +2706,10 @@ packages: peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.32.0 + eslint: 8.33.0 dev: true - /eslint-plugin-svelte3/4.0.0_tmo5zkisvhu6htudosk5k7m6pu: + /eslint-plugin-svelte3/4.0.0_4omm2ewoudhgnmf7aocafatnc4: resolution: { integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g== @@ -2700,7 +2718,7 @@ packages: eslint: '>=8.0.0' svelte: ^3.2.0 dependencies: - eslint: 8.32.0 + eslint: 8.33.0 svelte: 3.55.1 dev: true @@ -2726,7 +2744,7 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.32.0: + /eslint-utils/3.0.0_eslint@8.33.0: resolution: { integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== @@ -2735,7 +2753,7 @@ packages: peerDependencies: eslint: '>=5' dependencies: - eslint: 8.32.0 + eslint: 8.33.0 eslint-visitor-keys: 2.1.0 dev: true @@ -2755,10 +2773,10 @@ packages: engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } dev: true - /eslint/8.32.0: + /eslint/8.33.0: resolution: { - integrity: sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ== + integrity: sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } hasBin: true @@ -2774,7 +2792,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.32.0 + eslint-utils: 3.0.0_eslint@8.33.0 eslint-visitor-keys: 3.3.0 espree: 9.4.1 esquery: 1.4.0 @@ -2783,7 +2801,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.19.0 + globals: 13.20.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 import-fresh: 3.3.0 @@ -2820,8 +2838,8 @@ packages: } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2_acorn@8.8.1 + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 eslint-visitor-keys: 3.3.0 dev: true @@ -3118,10 +3136,10 @@ packages: once: 1.4.0 dev: true - /globals/13.19.0: + /globals/13.20.0: resolution: { - integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== + integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== } engines: { node: '>=8' } dependencies: @@ -3435,6 +3453,27 @@ packages: } dev: true + /jwa/2.0.0: + resolution: + { + integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== + } + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: true + + /jws/4.0.0: + resolution: + { + integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== + } + dependencies: + jwa: 2.0.0 + safe-buffer: 5.2.1 + dev: true + /kdbush/3.0.0: resolution: { @@ -4754,10 +4793,10 @@ packages: glob: 7.2.3 dev: true - /rollup/3.10.1: + /rollup/3.12.0: resolution: { - integrity: sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw== + integrity: sha512-4MZ8kA2HNYahIjz63rzrMMRvDqQDeS9LoriJvMuV0V6zIGysP36e9t4yObUfwdT9h/szXoHQideICftcdZklWg== } engines: { node: '>=14.18.0', npm: '>=8.0.0' } hasBin: true @@ -4791,6 +4830,13 @@ packages: mri: 1.2.0 dev: true + /safe-buffer/5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + } + dev: true + /sander/0.5.1: resolution: { @@ -5042,10 +5088,10 @@ packages: engines: { node: '>= 0.4' } dev: true - /svelte-check/3.0.2_mraflicfyjy3x4taxigiwsr23i: + /svelte-check/3.0.3_mraflicfyjy3x4taxigiwsr23i: resolution: { - integrity: sha512-DkhKhV0Jt0gh7q9DBB26+J2Vfb9y4/4JWxnbkXBZha7542LOhwvj3edJFjyJ+xjdaXyInZ+YRRYc3V6wytP2ew== + integrity: sha512-ByBFXo3bfHRGIsYEasHkdMhLkNleVfszX/Ns1oip58tPJlKdo5Ssr8kgVIuo5oq00hss8AIcdesuy0Xt0BcTvg== } hasBin: true peerDependencies: @@ -5347,10 +5393,10 @@ packages: } dev: true - /tslib/2.4.1: + /tslib/2.5.0: resolution: { - integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== } dev: true @@ -5410,10 +5456,10 @@ packages: } dev: true - /undici/5.15.1: + /undici/5.16.0: resolution: { - integrity: sha512-XLk8g0WAngdvFqTI+VKfBtM4YWXgdxkf1WezC771Es0Dd+Pm1KmNx8t93WTC+Hh9tnghmVxkclU1HN+j+CvIUA== + integrity: sha512-KWBOXNv6VX+oJQhchXieUznEmnJMqgXMbs0xxH2t8q/FUAWSJvOSr/rMaZKnX5RIVq7JDn0JbP4BOnKG2SGXLQ== } engines: { node: '>=12.18' } dependencies: @@ -5513,7 +5559,7 @@ packages: esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.10.1 + rollup: 3.12.0 sass: 1.57.1 optionalDependencies: fsevents: 2.3.2 diff --git a/frontend/src/hooks.server.ts b/frontend/src/hooks.server.ts index 863a959..a08a861 100644 --- a/frontend/src/hooks.server.ts +++ b/frontend/src/hooks.server.ts @@ -5,30 +5,39 @@ */ import type { Handle } from '@sveltejs/kit'; +import jws from 'jws'; /** @type {import('@sveltejs/kit').Handle} */ export const handle: Handle = async ({ event, resolve }) => { - const res = await fetch(`${process.env.API_URL}/api/v1/users/check`, { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - Cookie: event.request.headers.get('cookie') || '' - } - }); - if (res.ok) { - event.locals.email = await res.text(); - const resp = await resolve(event); - try { - resp.headers.set('Set-Cookie', res.headers.get('set-cookie')); - } catch { - console.log('Cannot mutate immutable header'); - } - - return resp; - } else { + const access_token = event.cookies.get('access_token'); + if (!access_token) { event.locals.email = null; return resolve(event); } + const jwt = jws.decode(access_token.replace('Bearer ', '')); + // if token expires, do a request to get a new one and set the response-cookies on the response + if (Date.now() >= jwt.payload.exp * 1000) { + const res = await fetch(`${process.env.API_URL}/api/v1/users/check`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + Cookie: event.request.headers.get('cookie') || '' + } + }); + if (res.ok) { + event.locals.email = await res.text(); + const resp = await resolve(event); + console.log(res.headers.get('set-cookie')); + try { + resp.headers.set('Set-Cookie', res.headers.get('set-cookie')); + } catch { + /* empty */ + } + return resp; + } + } + event.locals.email = jwt.payload.sub; + return resolve(event); }; /*export const getSession: GetSession = async (event) => { diff --git a/frontend/src/routes/+layout.server.ts b/frontend/src/routes/+layout.server.ts index 651fb3e..571021b 100644 --- a/frontend/src/routes/+layout.server.ts +++ b/frontend/src/routes/+layout.server.ts @@ -1,7 +1,7 @@ import { signedIn } from '$lib/stores'; -import type { LayoutLoad } from './$types'; +import type { LayoutServerLoad } from './$types'; -export const load: LayoutLoad = async ({ locals }) => { +export const load: LayoutServerLoad = async ({ locals }) => { if (locals.email) { signedIn.set(true); } else { diff --git a/frontend/src/routes/dashboard/+page.server.ts b/frontend/src/routes/dashboard/+page.server.ts index b598efb..b798974 100644 --- a/frontend/src/routes/dashboard/+page.server.ts +++ b/frontend/src/routes/dashboard/+page.server.ts @@ -2,7 +2,6 @@ import { redirect } from '@sveltejs/kit'; export const load = async ({ parent }) => { const { email } = await parent(); - if (!email) { throw redirect(302, '/account/login?returnTo=/dashboard'); } diff --git a/frontend/src/routes/dashboard/+page.svelte b/frontend/src/routes/dashboard/+page.svelte index 7123c3b..0b87796 100644 --- a/frontend/src/routes/dashboard/+page.svelte +++ b/frontend/src/routes/dashboard/+page.svelte @@ -73,7 +73,7 @@ }; $: { search_term; - console.log(search_term); + // console.log(search_term); search(); }