diff --git a/package.json b/package.json index e5771b9b2..663cb2c10 100644 --- a/package.json +++ b/package.json @@ -23,56 +23,56 @@ "@appwrite.io/pink": "0.25.0", "@appwrite.io/pink-icons": "0.25.0", "@popperjs/core": "^2.11.8", - "@sentry/svelte": "^7.66.0", - "@sentry/tracing": "^7.66.0", - "@stripe/stripe-js": "^3.4.0", - "ai": "^2.2.11", - "analytics": "^0.8.9", + "@sentry/svelte": "^7.118.0", + "@sentry/tracing": "^7.114.0", + "@stripe/stripe-js": "^3.5.0", + "ai": "^2.2.37", + "analytics": "^0.8.13", "cron-parser": "^4.9.0", - "dayjs": "^1.11.9", - "deep-equal": "^2.2.2", - "dotenv": "^16.3.1", - "echarts": "^5.4.3", + "dayjs": "^1.11.11", + "deep-equal": "^2.2.3", + "dotenv": "^16.4.5", + "echarts": "^5.5.1", "nanoid": "^4.0.2", - "plausible-tracker": "^0.3.8", + "plausible-tracker": "^0.3.9", "pretty-bytes": "^6.1.1", "prismjs": "^1.29.0", - "svelte-confetti": "^1.3.0", + "svelte-confetti": "^1.4.0", "tippy.js": "^6.3.7" }, "devDependencies": { - "@melt-ui/pp": "^0.1.4", - "@melt-ui/svelte": "^0.61.2", - "@playwright/test": "^1.44.0", - "@sveltejs/adapter-static": "^3.0.1", - "@sveltejs/kit": "^2.3.4", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "@testing-library/dom": "^9.0.1", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/svelte": "^4.0.3", - "@testing-library/user-event": "^14.4.3", - "@types/deep-equal": "^1.0.1", - "@types/prismjs": "^1.26.0", - "@typescript-eslint/eslint-plugin": "^7.7.0", - "@typescript-eslint/parser": "^7.7.0", - "@vitest/ui": "^1.2.1", - "eslint": "^8.48.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-svelte": "^2.33.0", + "@melt-ui/pp": "^0.3.2", + "@melt-ui/svelte": "^0.61.3", + "@playwright/test": "^1.45.2", + "@sveltejs/adapter-static": "^3.0.2", + "@sveltejs/kit": "^2.5.18", + "@sveltejs/vite-plugin-svelte": "^3.1.1", + "@testing-library/dom": "^9.3.4", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/svelte": "^4.2.3", + "@testing-library/user-event": "^14.5.2", + "@types/deep-equal": "^1.0.4", + "@types/prismjs": "^1.26.4", + "@typescript-eslint/eslint-plugin": "^7.16.1", + "@typescript-eslint/parser": "^7.16.1", + "@vitest/ui": "^1.6.0", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-svelte": "^2.42.0", "jsdom": "^22.1.0", "kleur": "^4.1.5", - "prettier": "^3.2.2", - "prettier-plugin-svelte": "^3.1.2", - "sass": "^1.66.1", - "svelte": "^4.2.9", - "svelte-check": "^3.5.1", + "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.5", + "sass": "^1.77.8", + "svelte": "^4.2.18", + "svelte-check": "^3.8.4", "svelte-jester": "^2.3.2", - "svelte-preprocess": "^5.0.4", + "svelte-preprocess": "^5.1.4", "svelte-sequential-preprocessor": "^2.0.1", - "tslib": "^2.6.2", - "typescript": "^5.2.2", - "vite": "^5.0.11", - "vitest": "^1.2.1" + "tslib": "^2.6.3", + "typescript": "^5.5.3", + "vite": "^5.3.4", + "vitest": "^1.6.0" }, "type": "module", "packageManager": "pnpm@9.5.0+sha512.140036830124618d624a2187b50d04289d5a087f326c9edfc0ccd733d76c4f52c3a313d4fc148794a2a9d81553016004e6742e8cf850670268a7387fc220c903" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df36711a3..9dd00fba2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,40 +21,40 @@ importers: specifier: ^2.11.8 version: 2.11.8 '@sentry/svelte': - specifier: ^7.66.0 + specifier: ^7.118.0 version: 7.118.0(svelte@4.2.18) '@sentry/tracing': - specifier: ^7.66.0 + specifier: ^7.114.0 version: 7.114.0 '@stripe/stripe-js': - specifier: ^3.4.0 + specifier: ^3.5.0 version: 3.5.0 ai: - specifier: ^2.2.11 + specifier: ^2.2.37 version: 2.2.37(react@18.3.1)(solid-js@1.8.18)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3)) analytics: - specifier: ^0.8.9 + specifier: ^0.8.13 version: 0.8.13(@types/dlv@1.1.4) cron-parser: specifier: ^4.9.0 version: 4.9.0 dayjs: - specifier: ^1.11.9 + specifier: ^1.11.11 version: 1.11.11 deep-equal: - specifier: ^2.2.2 + specifier: ^2.2.3 version: 2.2.3 dotenv: - specifier: ^16.3.1 + specifier: ^16.4.5 version: 16.4.5 echarts: - specifier: ^5.4.3 + specifier: ^5.5.1 version: 5.5.1 nanoid: specifier: ^4.0.2 version: 4.0.2 plausible-tracker: - specifier: ^0.3.8 + specifier: ^0.3.9 version: 0.3.9 pretty-bytes: specifier: ^6.1.1 @@ -63,65 +63,65 @@ importers: specifier: ^1.29.0 version: 1.29.0 svelte-confetti: - specifier: ^1.3.0 + specifier: ^1.4.0 version: 1.4.0(svelte@4.2.18) tippy.js: specifier: ^6.3.7 version: 6.3.7 devDependencies: '@melt-ui/pp': - specifier: ^0.1.4 - version: 0.1.4(@melt-ui/svelte@0.61.3(svelte@4.2.18))(svelte@4.2.18) + specifier: ^0.3.2 + version: 0.3.2(@melt-ui/svelte@0.61.3(svelte@4.2.18))(svelte@4.2.18) '@melt-ui/svelte': - specifier: ^0.61.2 + specifier: ^0.61.3 version: 0.61.3(svelte@4.2.18) '@playwright/test': - specifier: ^1.44.0 - version: 1.45.1 + specifier: ^1.45.2 + version: 1.45.2 '@sveltejs/adapter-static': - specifier: ^3.0.1 - version: 3.0.2(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))) + specifier: ^3.0.2 + version: 3.0.2(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8))) '@sveltejs/kit': - specifier: ^2.3.4 - version: 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + specifier: ^2.5.18 + version: 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)) '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + specifier: ^3.1.1 + version: 3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)) '@testing-library/dom': - specifier: ^9.0.1 + specifier: ^9.3.4 version: 9.3.4 '@testing-library/jest-dom': - specifier: ^5.16.5 + specifier: ^5.17.0 version: 5.17.0 '@testing-library/svelte': - specifier: ^4.0.3 + specifier: ^4.2.3 version: 4.2.3(svelte@4.2.18) '@testing-library/user-event': - specifier: ^14.4.3 + specifier: ^14.5.2 version: 14.5.2(@testing-library/dom@9.3.4) '@types/deep-equal': - specifier: ^1.0.1 + specifier: ^1.0.4 version: 1.0.4 '@types/prismjs': - specifier: ^1.26.0 + specifier: ^1.26.4 version: 1.26.4 '@typescript-eslint/eslint-plugin': - specifier: ^7.7.0 + specifier: ^7.16.1 version: 7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': - specifier: ^7.7.0 + specifier: ^7.16.1 version: 7.16.1(eslint@8.57.0)(typescript@5.5.3) '@vitest/ui': - specifier: ^1.2.1 + specifier: ^1.6.0 version: 1.6.0(vitest@1.6.0) eslint: - specifier: ^8.48.0 + specifier: ^8.57.0 version: 8.57.0 eslint-config-prettier: - specifier: ^9.0.0 + specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) eslint-plugin-svelte: - specifier: ^2.33.0 + specifier: ^2.42.0 version: 2.42.0(eslint@8.57.0)(svelte@4.2.18) jsdom: specifier: ^22.1.0 @@ -130,40 +130,40 @@ importers: specifier: ^4.1.5 version: 4.1.5 prettier: - specifier: ^3.2.2 + specifier: ^3.3.3 version: 3.3.3 prettier-plugin-svelte: - specifier: ^3.1.2 + specifier: ^3.2.5 version: 3.2.5(prettier@3.3.3)(svelte@4.2.18) sass: - specifier: ^1.66.1 + specifier: ^1.77.8 version: 1.77.8 svelte: - specifier: ^4.2.9 + specifier: ^4.2.18 version: 4.2.18 svelte-check: - specifier: ^3.5.1 + specifier: ^3.8.4 version: 3.8.4(@babel/core@7.24.9)(postcss-load-config@3.1.4(postcss@8.4.39))(postcss@8.4.39)(sass@1.77.8)(svelte@4.2.18) svelte-jester: specifier: ^2.3.2 version: 2.3.2(jest@29.7.0(@types/node@20.14.10))(svelte@4.2.18) svelte-preprocess: - specifier: ^5.0.4 + specifier: ^5.1.4 version: 5.1.4(@babel/core@7.24.9)(postcss-load-config@3.1.4(postcss@8.4.39))(postcss@8.4.39)(sass@1.77.8)(svelte@4.2.18)(typescript@5.5.3) svelte-sequential-preprocessor: specifier: ^2.0.1 version: 2.0.1 tslib: - specifier: ^2.6.2 + specifier: ^2.6.3 version: 2.6.3 typescript: - specifier: ^5.2.2 + specifier: ^5.5.3 version: 5.5.3 vite: - specifier: ^5.0.11 - version: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + specifier: ^5.3.4 + version: 5.3.4(@types/node@20.14.10)(sass@1.77.8) vitest: - specifier: ^1.2.1 + specifier: ^1.6.0 version: 1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@22.1.0)(sass@1.77.8) packages: @@ -214,8 +214,8 @@ packages: resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.9': - resolution: {integrity: sha512-G8v3jRg+z8IwY1jHFxvCNhOPYPterE4XljNgdGTYfSTtzzwjIswIzIaSPSLs3R7yFuqnqNeay5rjICfqVr+/6A==} + '@babel/generator@7.24.10': + resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.24.8': @@ -646,9 +646,8 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@melt-ui/pp@0.1.4': - resolution: {integrity: sha512-zR+Kl3CZJPJBHW8V7YcdQCMI/dVcnW9Ct3yGbVaIywYVStVRS7F9uEDOea3xLLT2WTGodQePzPlUn53yKFu87g==} - engines: {pnpm: '>=8.6.3'} + '@melt-ui/pp@0.3.2': + resolution: {integrity: sha512-xKkPvaIAFinklLXcQOpwZ8YSpqAFxykjWf8Y/fSJQwsixV/0rcFs07hJ49hJjPy5vItvw5Qa0uOjzFUbXzBypQ==} peerDependencies: '@melt-ui/svelte': '>= 0.29.0' svelte: ^3.55.0 || ^4.0.0 || ^5.0.0-next.1 @@ -670,8 +669,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@playwright/test@1.45.1': - resolution: {integrity: sha512-Wo1bWTzQvGA7LyKGIZc8nFSTFf2TkthGIFBR+QVNilvwouGzFd4PYukZe3rvf5PSqjHi1+1NyKSDZKcQWETzaA==} + '@playwright/test@1.45.2': + resolution: {integrity: sha512-JxG9eq92ET75EbVi3s+4sYbcG7q72ECeZNbdBlaMkGcNbiDQ4cAi8U2QP5oKkOx+1gpaiL1LDStmzCaEM1Z6fQ==} engines: {node: '>=18'} hasBin: true @@ -2465,13 +2464,13 @@ packages: resolution: {integrity: sha512-hMhneYm3GCPyQon88SZrVJx+LlqhM1kZFQbuAgXPoh/Az2YvO1B6bitT9qlhpiTdJlsT5lsr3gPmzoVjb5CDXA==} engines: {node: '>=10'} - playwright-core@1.45.1: - resolution: {integrity: sha512-LF4CUUtrUu2TCpDw4mcrAIuYrEjVDfT1cHbJMfwnE2+1b8PZcFzPNgvZCvq2JfQ4aTjRCCHw5EJ2tmr2NSzdPg==} + playwright-core@1.45.2: + resolution: {integrity: sha512-ha175tAWb0dTK0X4orvBIqi3jGEt701SMxMhyujxNrgd8K0Uy5wMSwwcQHtyB4om7INUkfndx02XnQ2p6dvLDw==} engines: {node: '>=18'} hasBin: true - playwright@1.45.1: - resolution: {integrity: sha512-Hjrgae4kpSQBr98nhCj3IScxVeVUixqj+5oyif8TdIn2opTCPEzqAqNMeK42i3cWDCVu9MI+ZsGWw+gVR4ISBg==} + playwright@1.45.2: + resolution: {integrity: sha512-ReywF2t/0teRvNBpfIgh5e4wnrI/8Su8ssdo5XsQKpjxJj+jspm00jSoz9BTg91TT0c9HRjXO7LBNVrgYj9X0g==} engines: {node: '>=18'} hasBin: true @@ -3042,8 +3041,8 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.3.3: - resolution: {integrity: sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==} + vite@5.3.4: + resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3281,7 +3280,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.9 + '@babel/generator': 7.24.10 '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) '@babel/helpers': 7.24.8 @@ -3297,7 +3296,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.24.9': + '@babel/generator@7.24.10': dependencies: '@babel/types': 7.24.9 '@jridgewell/gen-mapping': 0.3.5 @@ -3461,7 +3460,7 @@ snapshots: '@babel/traverse@7.24.8': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.9 + '@babel/generator': 7.24.10 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-function-name': 7.24.7 '@babel/helper-hoist-variables': 7.24.7 @@ -3789,10 +3788,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@melt-ui/pp@0.1.4(@melt-ui/svelte@0.61.3(svelte@4.2.18))(svelte@4.2.18)': + '@melt-ui/pp@0.3.2(@melt-ui/svelte@0.61.3(svelte@4.2.18))(svelte@4.2.18)': dependencies: '@melt-ui/svelte': 0.61.3(svelte@4.2.18) estree-walker: 3.0.3 + magic-string: 0.30.10 svelte: 4.2.18 '@melt-ui/svelte@0.61.3(svelte@4.2.18)': @@ -3817,9 +3817,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@playwright/test@1.45.1': + '@playwright/test@1.45.2': dependencies: - playwright: 1.45.1 + playwright: 1.45.2 '@polka/url@1.0.0-next.25': {} @@ -3970,13 +3970,13 @@ snapshots: '@stripe/stripe-js@3.5.0': {} - '@sveltejs/adapter-static@3.0.2(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))': + '@sveltejs/adapter-static@3.0.2(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)))': dependencies: - '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)) - '@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))': + '@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 @@ -3990,28 +3990,28 @@ snapshots: sirv: 2.0.4 svelte: 4.2.18 tiny-glob: 0.2.9 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + vite: 5.3.4(@types/node@20.14.10)(sass@1.77.8) - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)) debug: 4.3.5 svelte: 4.2.18 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + vite: 5.3.4(@types/node@20.14.10)(sass@1.77.8) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))': + '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)) debug: 4.3.5 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.10 svelte: 4.2.18 svelte-hmr: 0.16.0(svelte@4.2.18) - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) - vitefu: 0.2.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + vite: 5.3.4(@types/node@20.14.10)(sass@1.77.8) + vitefu: 0.2.5(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)) transitivePeerDependencies: - supports-color @@ -5537,7 +5537,7 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.24.9 - '@babel/generator': 7.24.9 + '@babel/generator': 7.24.10 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) '@babel/types': 7.24.9 @@ -5930,11 +5930,11 @@ snapshots: plausible-tracker@0.3.9: {} - playwright-core@1.45.1: {} + playwright-core@1.45.2: {} - playwright@1.45.1: + playwright@1.45.2: dependencies: - playwright-core: 1.45.1 + playwright-core: 1.45.2 optionalDependencies: fsevents: 2.3.2 @@ -6465,7 +6465,7 @@ snapshots: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + vite: 5.3.4(@types/node@20.14.10)(sass@1.77.8) transitivePeerDependencies: - '@types/node' - less @@ -6476,7 +6476,7 @@ snapshots: - supports-color - terser - vite@5.3.3(@types/node@20.14.10)(sass@1.77.8): + vite@5.3.4(@types/node@20.14.10)(sass@1.77.8): dependencies: esbuild: 0.21.5 postcss: 8.4.39 @@ -6486,9 +6486,9 @@ snapshots: fsevents: 2.3.3 sass: 1.77.8 - vitefu@0.2.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)): + vitefu@0.2.5(vite@5.3.4(@types/node@20.14.10)(sass@1.77.8)): optionalDependencies: - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + vite: 5.3.4(@types/node@20.14.10)(sass@1.77.8) vitest@1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@22.1.0)(sass@1.77.8): dependencies: @@ -6509,7 +6509,7 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + vite: 5.3.4(@types/node@20.14.10)(sass@1.77.8) vite-node: 1.6.0(@types/node@20.14.10)(sass@1.77.8) why-is-node-running: 2.3.0 optionalDependencies: diff --git a/src/_service-worker.ts b/src/_service-worker.ts index 84273f8d2..fe2fb5f45 100644 --- a/src/_service-worker.ts +++ b/src/_service-worker.ts @@ -1,49 +1,80 @@ -import { version, build, files } from '$service-worker'; +/// +import { build, files, version } from '$service-worker'; -const name = `cache-${version}`; -const cachedFiles = [...build, ...files]; +// Create a unique cache name for this deployment +const CACHE = `cache-${version}`; -self.addEventListener('install', (event: ExtendableEvent) => { - event.waitUntil(caches.open(name).then((cache) => cache.addAll(cachedFiles))); -}); +const ASSETS = [ + ...build, // the app itself + ...files // everything in `static` +]; -self.addEventListener('activate', (event: ExtendableEvent) => { - event.waitUntil( - caches.keys().then(async (keys) => { - for (const key of keys) { - if (!key.includes(version)) caches.delete(key); - } - }) - ); -}); - -self.addEventListener('fetch', (event: FetchEvent) => { - const { request } = event; - - if (request.method !== 'GET' || request.headers.has('range')) return; - - const url = new URL(request.url); - const cached = caches.match(request); - - if (url.origin === location.origin && cachedFiles.includes(url.pathname)) { - // always return build files from cache - event.respondWith(cached); - } else if (url.protocol === 'https:' || location.hostname === 'localhost') { - // hit the network for everything else... - const promise = fetch(request); - - // ...and cache successful responses... - promise.then((response) => { - // cache successful responses - if (response.ok && response.type === 'basic') { - const clone = response.clone(); - caches.open(name).then((cache) => { - cache.put(request, clone); - }); - } - }); - - // ...but if it fails, fall back to cache if available - event.respondWith(promise.catch(() => cached || promise)); +self.addEventListener('install', (event) => { + // Create a new cache and add all files to it + async function addFilesToCache() { + const cache = await caches.open(CACHE); + await cache.addAll(ASSETS); } + + event.waitUntil(addFilesToCache()); +}); + +self.addEventListener('activate', (event) => { + // Remove previous cached data from disk + async function deleteOldCaches() { + for (const key of await caches.keys()) { + if (key !== CACHE) await caches.delete(key); + } + } + + event.waitUntil(deleteOldCaches()); +}); + +self.addEventListener('fetch', (event) => { + // ignore POST requests etc + if (event.request.method !== 'GET') return; + + async function respond() { + const url = new URL(event.request.url); + const cache = await caches.open(CACHE); + + // `build`/`files` can always be served from the cache + if (ASSETS.includes(url.pathname)) { + const response = await cache.match(url.pathname); + + if (response) { + return response; + } + } + + // for everything else, try the network first, but + // fall back to the cache if we're offline + try { + const response = await fetch(event.request); + + // if we're offline, fetch can return a value that is not a Response + // instead of throwing - and we can't pass this non-Response to respondWith + if (!(response instanceof Response)) { + throw new Error('invalid response from fetch'); + } + + if (response.status === 200) { + cache.put(event.request, response.clone()); + } + + return response; + } catch (err) { + const response = await cache.match(event.request); + + if (response) { + return response; + } + + // if there's no cache, then just error out + // as there is nothing we can do to respond to this request + throw err; + } + } + + event.respondWith(respond()); }); diff --git a/src/app.html b/src/app.html index f0dd566b3..c11434fa0 100644 --- a/src/app.html +++ b/src/app.html @@ -5,7 +5,7 @@ - + - - %sveltekit.head% diff --git a/src/lib/layout/header.svelte b/src/lib/layout/header.svelte index f16fa75ff..3cf6d8090 100644 --- a/src/lib/layout/header.svelte +++ b/src/lib/layout/header.svelte @@ -78,7 +78,7 @@