From 4553cba8b243ed76c029d723f79761e3553e51fb Mon Sep 17 00:00:00 2001 From: "u-sho (Shouhei Uechi)" <26079835+u-sho@users.noreply.github.com> Date: Sun, 17 Mar 2024 16:41:01 +0900 Subject: [PATCH] v0.7.0 Fix endpoints of static files (#204) * update tsconfig & sveltekit from 2.5.0 to 2.5.2 (#192) * update sveltekit from 2.5.0 to 2.5.2 * remove unused properties on tsconfig * fix: format * [Snyk] Upgrade prettier-plugin-svelte from 3.1.2 to 3.2.0 (#195) * fix: upgrade prettier-plugin-svelte from 3.1.2 to 3.2.0 Snyk has created this PR to upgrade prettier-plugin-svelte from 3.1.2 to 3.2.0. See this package in npm: https://www.npmjs.com/package/prettier-plugin-svelte See this project in Snyk: https://app.snyk.io/org/u-sho/project/56523540-5a4b-485d-ae86-4b4f9b0ef853?utm_source=github&utm_medium=referral&page=upgrade-pr * fetch package-lock.json --------- Co-authored-by: snyk-bot * [Snyk] Upgrade vitest from 1.2.2 to 1.3.1 (#198) * fix: upgrade @vitest/coverage-v8 from 1.2.2 to 1.3.0 Snyk has created this PR to upgrade @vitest/coverage-v8 from 1.2.2 to 1.3.0. See this package in npm: https://www.npmjs.com/package/@vitest/coverage-v8 See this project in Snyk: https://app.snyk.io/org/u-sho/project/56523540-5a4b-485d-ae86-4b4f9b0ef853?utm_source=github&utm_medium=referral&page=upgrade-pr * upgrade vitest from 1.2.2 to 1.3.1 --------- Co-authored-by: snyk-bot * Update build tool packages (#201) * update vite(st) to the latest * update SvelteKit and its toolchanis to the latest * fix: file access conflict on coverage directory * fix: type safety of service-worker see https://kit.svelte.dev/docs/service-workers#type-safety * save static files to cache & don't separate cache with online/offline (#202) * Fix: deployments and analytics (vercel) (#203) * fix CSP setting for vercel/analytics * fix: trailing slash of static files * update sitemap: last modified date --------- Co-authored-by: snyk-bot --- package-lock.json | 233 +++++++++--------- package.json | 19 +- src/service-worker.ts | 79 ++++++ src/service-worker/index.ts | 69 ------ static/sitemap.xml | 6 +- svelte.config.js | 3 +- .../tests => tests/types}/generics.test-d.ts | 0 tsconfig.eslint.json | 10 +- tsconfig.json | 1 - tsconfig.vitest-typecheck.json | 10 +- vercel.json | 4 + 11 files changed, 222 insertions(+), 212 deletions(-) create mode 100644 src/service-worker.ts delete mode 100644 src/service-worker/index.ts rename {src/lib/types/tests => tests/types}/generics.test-d.ts (100%) create mode 100644 vercel.json diff --git a/package-lock.json b/package-lock.json index 4e053bb..4561c4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,29 +13,29 @@ "@vercel/speed-insights": "^1.0.10" }, "devDependencies": { - "@sveltejs/adapter-vercel": "^5.1.0", - "@sveltejs/kit": "^2.5.0", + "@sveltejs/adapter-vercel": "^5.1.1", + "@sveltejs/kit": "^2.5.4", "@sveltejs/vite-plugin-svelte": "^3.0.2", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "@typescript/lib-dom": "npm:@types/web@^0.0.130", - "@vitest/coverage-v8": "^1.2.2", + "@vitest/coverage-v8": "^1.4.0", "better-typescript-lib": "^2.6.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.35.1", "npm-run-all": "^4.1.5", "prettier": "^3.2.5", - "prettier-plugin-svelte": "^3.1.2", - "sass": "^1.70.0", + "prettier-plugin-svelte": "^3.2.2", + "sass": "^1.72.0", "svelte": "^4.2.12", - "svelte-check": "^3.6.3", + "svelte-check": "^3.6.7", "svelte-scrollto": "0.2.0", "tslib": "^2.6.2", "typescript": "~5.3.2", "typescript-eslint-language-service": "^5.0.5", - "vite": "^5.0.12", - "vitest": "^1.2.2", + "vite": "^5.1.6", + "vitest": "^1.4.0", "vscode-emmet-helper": "npm:@vscode/emmet-helper@^2.9.2" }, "engines": { @@ -84,9 +84,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -96,9 +96,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -656,9 +656,9 @@ "devOptional": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "devOptional": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -915,9 +915,9 @@ "dev": true }, "node_modules/@sveltejs/adapter-vercel": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-5.1.0.tgz", - "integrity": "sha512-Z9yRJ4H2/7LcBlvN2/TKu1H0hWoRGonr8kPhP1GJ23LRW76IbiiX5gs/MLc6+ZGogCZYVJ4USmx6m+RFtvQTRw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-5.1.1.tgz", + "integrity": "sha512-OBb4/she4MCat+topk8x2EHXX2qX3Ju3xGumHCDtVq4zLEZ3LEomhht79jO+7Q1qia2bKk9o6hYEO0JLZjv7XQ==", "dev": true, "dependencies": { "@vercel/nft": "^0.26.1", @@ -928,9 +928,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.0.tgz", - "integrity": "sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.4.tgz", + "integrity": "sha512-eDxK2d4EGzk99QsZNoPXe7jlzA5EGqfcCpUwZ912bhnalsZ2ZsG5wGRthkydupVjYyqdmzEanVKFhLxU2vkPSQ==", "devOptional": true, "hasInstallScript": true, "dependencies": { @@ -1432,9 +1432,9 @@ } }, "node_modules/@vercel/nft": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.26.2.tgz", - "integrity": "sha512-bxe2iShmKZi7476xYamyKvhhKwQ6JPEtQ2FSq1AjMUH2buMd8LQMkdoHinTqZYc+1sMTh3G0ARdjzNvV1FEisA==", + "version": "0.26.4", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.26.4.tgz", + "integrity": "sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==", "dev": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.5", @@ -1492,9 +1492,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.2.2.tgz", - "integrity": "sha512-IHyKnDz18SFclIEEAHb9Y4Uxx0sPKC2VO1kdDCs1BF6Ip4S8rQprs971zIsooLUn7Afs71GRxWMWpkCGZpRMhw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.4.0.tgz", + "integrity": "sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", @@ -1502,12 +1502,13 @@ "debug": "^4.3.4", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^4.0.1", + "istanbul-lib-source-maps": "^5.0.4", "istanbul-reports": "^3.1.6", "magic-string": "^0.30.5", "magicast": "^0.3.3", "picocolors": "^1.0.0", "std-env": "^3.5.0", + "strip-literal": "^2.0.0", "test-exclude": "^6.0.0", "v8-to-istanbul": "^9.2.0" }, @@ -1515,17 +1516,17 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "^1.0.0" + "vitest": "1.4.0" } }, "node_modules/@vitest/expect": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.2.tgz", - "integrity": "sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.4.0.tgz", + "integrity": "sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==", "dev": true, "dependencies": { - "@vitest/spy": "1.2.2", - "@vitest/utils": "1.2.2", + "@vitest/spy": "1.4.0", + "@vitest/utils": "1.4.0", "chai": "^4.3.10" }, "funding": { @@ -1533,12 +1534,12 @@ } }, "node_modules/@vitest/runner": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.2.2.tgz", - "integrity": "sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.4.0.tgz", + "integrity": "sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==", "dev": true, "dependencies": { - "@vitest/utils": "1.2.2", + "@vitest/utils": "1.4.0", "p-limit": "^5.0.0", "pathe": "^1.1.1" }, @@ -1574,9 +1575,9 @@ } }, "node_modules/@vitest/snapshot": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.2.2.tgz", - "integrity": "sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.4.0.tgz", + "integrity": "sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==", "dev": true, "dependencies": { "magic-string": "^0.30.5", @@ -1588,9 +1589,9 @@ } }, "node_modules/@vitest/spy": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.2.2.tgz", - "integrity": "sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.4.0.tgz", + "integrity": "sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==", "dev": true, "dependencies": { "tinyspy": "^2.2.0" @@ -1600,9 +1601,9 @@ } }, "node_modules/@vitest/utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.2.2.tgz", - "integrity": "sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.4.0.tgz", + "integrity": "sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==", "dev": true, "dependencies": { "diff-sequences": "^29.6.3", @@ -3680,23 +3681,23 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.4.tgz", + "integrity": "sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "istanbul-lib-coverage": "^3.0.0" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -3706,6 +3707,12 @@ "node": ">=8" } }, + "node_modules/js-tokens": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz", + "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==", + "dev": true + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -4052,9 +4059,9 @@ } }, "node_modules/mlly": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz", - "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", + "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", "dev": true, "dependencies": { "acorn": "^8.11.3", @@ -4357,9 +4364,9 @@ } }, "node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -4664,9 +4671,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "devOptional": true, "funding": [ { @@ -4763,9 +4770,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -4800,9 +4807,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.1.2.tgz", - "integrity": "sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.2.tgz", + "integrity": "sha512-ZzzE/wMuf48/1+Lf2Ffko0uDa6pyCfgHV6+uAhtg2U0AAXGrhCSW88vEJNAkAxW5qyrFY1y1zZ4J8TgHrjW++Q==", "dev": true, "peerDependencies": { "prettier": "^3.0.0", @@ -5131,9 +5138,9 @@ } }, "node_modules/sass": { - "version": "1.70.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", - "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", + "version": "1.72.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz", + "integrity": "sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -5302,15 +5309,6 @@ "sorcery": "bin/sorcery" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -5507,12 +5505,12 @@ } }, "node_modules/strip-literal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", - "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.0.0.tgz", + "integrity": "sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==", "dev": true, "dependencies": { - "acorn": "^8.10.0" + "js-tokens": "^8.0.2" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -5568,9 +5566,9 @@ } }, "node_modules/svelte-check": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.3.tgz", - "integrity": "sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==", + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.7.tgz", + "integrity": "sha512-tKEjemK9FYCySAseCaIt+ps5o0XRvLC7ECjyJXXtO7vOQhR9E6JavgoUbGP1PCulD2OTcB/fi9RjV3nyF1AROw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", @@ -5579,7 +5577,7 @@ "import-fresh": "^3.2.1", "picocolors": "^1.0.0", "sade": "^1.7.4", - "svelte-preprocess": "^5.1.0", + "svelte-preprocess": "^5.1.3", "typescript": "^5.0.3" }, "bin": { @@ -5793,9 +5791,9 @@ } }, "node_modules/tinyspy": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", - "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dev": true, "engines": { "node": ">=14.0.0" @@ -5978,9 +5976,9 @@ } }, "node_modules/ufo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", - "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.1.tgz", + "integrity": "sha512-HGyF79+/qZ4soRvM+nHERR2pJ3VXDZ/8sL1uLahdgEDf580NkgiWOxLk33FetExqOWp352JZRsgXbG/4MaGOSg==", "dev": true }, "node_modules/unbox-primitive": { @@ -6038,13 +6036,13 @@ } }, "node_modules/vite": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", - "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", + "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", "devOptional": true, "dependencies": { "esbuild": "^0.19.3", - "postcss": "^8.4.32", + "postcss": "^8.4.35", "rollup": "^4.2.0" }, "bin": { @@ -6093,9 +6091,9 @@ } }, "node_modules/vite-node": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.2.2.tgz", - "integrity": "sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.4.0.tgz", + "integrity": "sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -6129,18 +6127,17 @@ } }, "node_modules/vitest": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.2.2.tgz", - "integrity": "sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.4.0.tgz", + "integrity": "sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==", "dev": true, "dependencies": { - "@vitest/expect": "1.2.2", - "@vitest/runner": "1.2.2", - "@vitest/snapshot": "1.2.2", - "@vitest/spy": "1.2.2", - "@vitest/utils": "1.2.2", + "@vitest/expect": "1.4.0", + "@vitest/runner": "1.4.0", + "@vitest/snapshot": "1.4.0", + "@vitest/spy": "1.4.0", + "@vitest/utils": "1.4.0", "acorn-walk": "^8.3.2", - "cac": "^6.7.14", "chai": "^4.3.10", "debug": "^4.3.4", "execa": "^8.0.1", @@ -6149,11 +6146,11 @@ "pathe": "^1.1.1", "picocolors": "^1.0.0", "std-env": "^3.5.0", - "strip-literal": "^1.3.0", + "strip-literal": "^2.0.0", "tinybench": "^2.5.1", "tinypool": "^0.8.2", "vite": "^5.0.0", - "vite-node": "1.2.2", + "vite-node": "1.4.0", "why-is-node-running": "^2.2.2" }, "bin": { @@ -6168,8 +6165,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "^1.0.0", - "@vitest/ui": "^1.0.0", + "@vitest/browser": "1.4.0", + "@vitest/ui": "1.4.0", "happy-dom": "*", "jsdom": "*" }, diff --git a/package.json b/package.json index 6d3d796..0b2d806 100644 --- a/package.json +++ b/package.json @@ -33,37 +33,38 @@ "check": "run-p typecheck:*", "typecheck:svelte": "svelte-check", "typecheck:vitest": "vitest --typecheck", - "ci": "run-p format:dry lint:dry check test", + "ci": "run-p format:dry lint:dry typecheck:svelte vitest:all", "test": "vitest", + "vitest:all": "run-s typecheck:vitest test", "format:dry": "prettier --cache --check .", "lint:dry": "eslint --cache --cache-location ./node_modules/.cache/eslint/.eslintcache .", "format": "prettier --cache --write .", "lint": "eslint --fix --cache --cache-location ./node_modules/.cache/eslint/.eslintcache ." }, "devDependencies": { - "@sveltejs/adapter-vercel": "^5.1.0", - "@sveltejs/kit": "^2.5.0", + "@sveltejs/adapter-vercel": "^5.1.1", + "@sveltejs/kit": "^2.5.4", "@sveltejs/vite-plugin-svelte": "^3.0.2", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "@typescript/lib-dom": "npm:@types/web@^0.0.130", - "@vitest/coverage-v8": "^1.2.2", + "@vitest/coverage-v8": "^1.4.0", "better-typescript-lib": "^2.6.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.35.1", "npm-run-all": "^4.1.5", "prettier": "^3.2.5", - "prettier-plugin-svelte": "^3.1.2", - "sass": "^1.70.0", + "prettier-plugin-svelte": "^3.2.2", + "sass": "^1.72.0", "svelte": "^4.2.12", - "svelte-check": "^3.6.3", + "svelte-check": "^3.6.7", "svelte-scrollto": "0.2.0", "tslib": "^2.6.2", "typescript": "~5.3.2", "typescript-eslint-language-service": "^5.0.5", - "vite": "^5.0.12", - "vitest": "^1.2.2", + "vite": "^5.1.6", + "vitest": "^1.4.0", "vscode-emmet-helper": "npm:@vscode/emmet-helper@^2.9.2" }, "engines": { diff --git a/src/service-worker.ts b/src/service-worker.ts new file mode 100644 index 0000000..3fb3666 --- /dev/null +++ b/src/service-worker.ts @@ -0,0 +1,79 @@ +/// +/// +/// +/// + +import { build, files, version } from '$service-worker'; + +declare const self: ServiceWorkerGlobalScope; + +const ASSETS = `cache${version}`; +const cached = [...build, ...files]; + +self.addEventListener('install', (event) => { + event.waitUntil( + caches + .open(ASSETS) + .then(async (cache) => cache.addAll(cached)) + .then(() => { + void self.skipWaiting(); + }) + ); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil( + caches.keys().then(async (keys) => { + // delete old caches + for (const key of keys) { + if (key !== ASSETS) await caches.delete(key); + } + void self.clients.claim(); + }) + ); +}); + +self.addEventListener('fetch', (event) => { + if (event.request.method !== 'GET' || event.request.headers.has('range')) return; + + const url = new URL(event.request.url); + + // don't try to handle e.g. data: URIs + if (!url.protocol.startsWith('http')) return; + + // ignore dev server requests + if (url.hostname === self.location.hostname && url.port !== self.location.port) return; + + async function respond(): Promise { + const cache = await caches.open(ASSETS); + + // always serve static files and bundler-generated assets from cache + if (url.host === self.location.host && cached.includes(url.pathname)) { + const response = await cache.match(event.request); + if (response) return response; + } + + // if (event.request.cache === 'only-if-cached') return; + + // for everything else, try the network first, falling back to + // cache if the user is offline. (If the pages never change, you + // might prefer a cache-first approach to a network-first one.) + try { + const response = await fetch(event.request); + if (!(response instanceof Response)) { + throw new Error('invalid response from fetch'); + } + if (response.status === 200) { + void cache.put(event.request, response.clone()); + } + return response; + } catch (err) { + const response = await cache.match(event.request); + if (response) return response; + + throw err; + } + } + + event.respondWith(respond()); +}); diff --git a/src/service-worker/index.ts b/src/service-worker/index.ts deleted file mode 100644 index 4be6104..0000000 --- a/src/service-worker/index.ts +++ /dev/null @@ -1,69 +0,0 @@ -/// - -import { build, files, version } from '$service-worker'; - -declare const self: ServiceWorkerGlobalScope; - -const ASSETS = `cache${version}`; -const cached = new Set(files); - -self.addEventListener('install', (event) => { - event.waitUntil( - caches - .open(ASSETS) - .then(async (cache) => cache.addAll(build)) - .then(() => { - void self.skipWaiting(); - }) - ); -}); - -self.addEventListener('activate', (event) => { - event.waitUntil( - caches.keys().then(async (keys) => { - // delete old caches - for (const key of keys) { - if (key !== ASSETS) await caches.delete(key); - } - void self.clients.claim(); - }) - ); -}); - -self.addEventListener('fetch', (event) => { - if (event.request.method !== 'GET' || event.request.headers.has('range')) return; - - const url = new URL(event.request.url); - - // don't try to handle e.g. data: URIs - if (!url.protocol.startsWith('http')) return; - - // ignore dev server requests - if (url.hostname === self.location.hostname && url.port !== self.location.port) return; - - // always serve static files and bundler-generated assets from cache - if (url.host === self.location.host && cached.has(url.pathname)) { - event.respondWith(caches.match(event.request) as Promise); - return; - } - - if (event.request.cache === 'only-if-cached') return; - - // for everything else, try the network first, falling back to - // cache if the user is offline. (If the pages never change, you - // might prefer a cache-first approach to a network-first one.) - event.respondWith( - caches.open(`offline${version}`).then(async (cache) => { - try { - const response = await fetch(event.request); - void cache.put(event.request, response.clone()); - return response; - } catch (err: unknown) { - const response = await cache.match(event.request); - if (response) return response; - - throw err; - } - }) - ); -}); diff --git a/static/sitemap.xml b/static/sitemap.xml index 4a06b97..7236442 100644 --- a/static/sitemap.xml +++ b/static/sitemap.xml @@ -2,7 +2,7 @@ https://qgame.app - 2022-09-29 + 2023-12-22 monthly 0.8 @@ -16,13 +16,13 @@ https://qgame.app/games/quantum-tictactoe/tutorial - 2022-09-29 + 2023-09-23 yearly https://qgame.app/games/quantum-tictactoe/play/human - 2022-09-29 + 2023-12-22 monthly 1.0 diff --git a/svelte.config.js b/svelte.config.js index 1070cb8..3846748 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -15,7 +15,8 @@ const config = { 'https://pbs.twimg.com/profile_banners/1398377057772470274/1623818332/*', 'vitals.vercel-insights.com' ], - 'style-src': ['self', 'unsafe-inline', 'vitals.vercel-insights.com'] + 'style-src': ['self', 'unsafe-inline', 'vitals.vercel-insights.com'], + 'script-src-elem': ['self', 'va.vercel-scripts.com'] } }, prerender: { diff --git a/src/lib/types/tests/generics.test-d.ts b/tests/types/generics.test-d.ts similarity index 100% rename from src/lib/types/tests/generics.test-d.ts rename to tests/types/generics.test-d.ts diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 8dd8cb7..4ca24ec 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -2,16 +2,16 @@ "extends": "./tsconfig.json", "include": [ "./.svelte-kit/ambient.d.ts", + "./.svelte-kit/non-ambient.d.ts", "./.svelte-kit/types/**/$types.d.ts", + "./svelte.config.js", "./vite.config.ts", "./src/**/*.ts", "./src/**/*.svelte", "./tests/**/*.ts", "./tests/**/*.svelte", - "./**/*.test.ts", - "./**/*.test-d.ts", - "./.eslintrc.cjs", - "./svelte.config.js" - ] + "./.eslintrc.cjs" + ], + "exclude": ["./node_modules/**"] } diff --git a/tsconfig.json b/tsconfig.json index ca64a2f..e816908 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,7 +21,6 @@ "downlevelIteration": true, "importHelpers": true, - "verbatimModuleSyntax": true, "newLine": "lf", "noEmitHelpers": true, "removeComments": true, diff --git a/tsconfig.vitest-typecheck.json b/tsconfig.vitest-typecheck.json index 80b0b4c..99bcf68 100644 --- a/tsconfig.vitest-typecheck.json +++ b/tsconfig.vitest-typecheck.json @@ -8,7 +8,7 @@ "verbatimModuleSyntax": true, "isolatedModules": true, "lib": ["esnext", "DOM", "DOM.Iterable"], - "moduleResolution": "node", + "moduleResolution": "Bundler", "module": "esnext", "target": "esnext", @@ -41,16 +41,14 @@ }, "include": [ "./.svelte-kit/ambient.d.ts", + "./.svelte-kit/non-ambient.d.ts", "./.svelte-kit/types/**/$types.d.ts", + "./svelte.config.js", "./vite.config.ts", "./src/**/*.ts", "./src/**/*.svelte", "./tests/**/*.ts", "./tests/**/*.svelte" ], - "exclude": [ - "./node_modules/**", - "./.svelte-kit/[!ambient.d.ts]**", - "./src/service-worker/index.ts" - ] + "exclude": ["./node_modules/**"] } diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..735c72f --- /dev/null +++ b/vercel.json @@ -0,0 +1,4 @@ +{ + "$schema": "http://openapi.vercel.sh/vercel.json", + "trailingSlash": false +}