diff --git a/.gitignore b/.gitignore index cb9b24b9..12ac2c22 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .DS_Store /node_modules -/.svelte +/.svelte-kit /.netlify /.vercel_build_output diff --git a/package-lock.json b/package-lock.json index 854ee6aa..45c8380c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,35 +36,78 @@ } }, "node_modules/@sveltejs/adapter-netlify": { - "version": "1.0.0-next.8", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.8.tgz", - "integrity": "sha512-44WQ3f2za31WI+OVYrDOglY1Co1AL+wMh4GWtXQRJRZZ/2Xlfxvro/5m86NJdbOrjdeTRXGM42TZY+gqerbJKQ==", + "version": "1.0.0-next.12", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.12.tgz", + "integrity": "sha512-34+Xk2YmTDgDJWVliaZtAiDbtEsZurENwALxdD1dDQErxI0HPGZgmmwktLJjf2mU2/DcGJAXZxgq2RsGiDxAZA==", "dev": true, "dependencies": { - "@sveltejs/kit": "1.0.0-next.81", - "esbuild": "^0.11.12", + "@sveltejs/kit": "1.0.0-next.103", + "esbuild": "^0.11.18", "toml": "^3.0.0" } }, + "node_modules/@sveltejs/adapter-netlify/node_modules/@sveltejs/kit": { + "version": "1.0.0-next.103", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.103.tgz", + "integrity": "sha512-g3Q3AnYloJVpXu83yfQLddYcsTYJ5M/NaoRTyv0qCTMNea1L9HTGrI8grdi5kF8wbPCUcX9fLA9RYRDfEkjF/Q==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.9", + "cheap-watch": "^1.0.3", + "sade": "^1.7.4", + "vite": "^2.2.4" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">= 12.17.0" + }, + "peerDependencies": { + "svelte": "^3.38.2" + } + }, "node_modules/@sveltejs/adapter-vercel": { - "version": "1.0.0-next.13", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.13.tgz", - "integrity": "sha512-7/DvjGBW+ldK80E7TsIB3Vpo6QmhdKK1+6pnN3/HrB1Uc+12sxvI76sXQGV0qhcJR3wUdXlHed3p8A8TSx1RhA==", + "version": "1.0.0-next.17", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.17.tgz", + "integrity": "sha512-35Z4R9V4+katvCZz37+E3pjcacQq8goIqwuClIVnnSK7+OUd6LoGb/cFoHm7OdvoSLUKaXSZ9/bLF/hwpmfJhQ==", "dev": true, "dependencies": { - "@sveltejs/kit": "1.0.0-next.81", - "esbuild": "^0.11.12" + "@sveltejs/kit": "1.0.0-next.104", + "esbuild": "^0.11.18" + } + }, + "node_modules/@sveltejs/adapter-vercel/node_modules/@sveltejs/kit": { + "version": "1.0.0-next.104", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.104.tgz", + "integrity": "sha512-1ww5NvpGYJdKXR4bfxo04AM4izcJwTziFIVrImq3jqS2b4d8l3KfrJOqgv+e07RvW/WakrCRPAyZzeHpXLdkZg==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.9", + "cheap-watch": "^1.0.3", + "sade": "^1.7.4", + "vite": "^2.2.4" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">= 12.17.0" + }, + "peerDependencies": { + "svelte": "^3.38.2" } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.81", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.81.tgz", - "integrity": "sha512-v1CxkLYX3xXRdihvpiOOuQs2MZa/f3ENZKeX7sMYDKQ0MzRpmrhzmplVukYD+fZHYUFjMj+yKYPMhOpC/p3ckQ==", + "version": "1.0.0-next.107", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.107.tgz", + "integrity": "sha512-HxomGMWbuWTU8lahk98hqIL/xjW6HzNTAvTZVMnnmlMHN1N8x7+abkz4Y09Zhu8lZkZpFuqBj2UlsgPW4uJXtw==", "dev": true, "dependencies": { - "@sveltejs/vite-plugin-svelte": "^1.0.0-next.7", + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.10", "cheap-watch": "^1.0.3", - "sade": "^1.7.4" + "sade": "^1.7.4", + "vite": "^2.3.1" }, "bin": { "svelte-kit": "svelte-kit.js" @@ -73,31 +116,30 @@ "node": ">= 12.17.0" }, "peerDependencies": { - "svelte": "^3.32.1", - "vite": "^2.1.0" + "svelte": "^3.38.2" } }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "1.0.0-next.7", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.7.tgz", - "integrity": "sha512-ENvKYY36jrvFP7h1G87k5uOoEh5UM1m8n40J2duqV/R3wHnxfW81SCR1aXo+5CVU8Prm3/jtS4TWs8CUTqO1fw==", + "version": "1.0.0-next.10", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.10.tgz", + "integrity": "sha512-ImvxbhPePm2hWNTKBSA3LHAYGwiEjHjvvgfPLXm4R87sfZ+BMXql9jBmDpzUC/URBLT4BB3Jxos/i523qkJBHg==", "dev": true, "dependencies": { "@rollup/pluginutils": "^4.1.0", - "chalk": "^4.1.0", + "chalk": "^4.1.1", "debug": "^4.3.2", "hash-sum": "^2.0.0", "require-relative": "^0.8.7", - "slash": "^3.0.0", + "slash": "^4.0.0", "source-map": "^0.7.3", - "svelte-hmr": "^0.14.0" + "svelte-hmr": "^0.14.2" }, "engines": { "node": ">=12.0.0" }, "peerDependencies": { "svelte": "^3.37.0", - "vite": "^2.1.5" + "vite": "^2.2.3" } }, "node_modules/ansi-styles": { @@ -116,9 +158,9 @@ } }, "node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -190,9 +232,9 @@ } }, "node_modules/esbuild": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.12.tgz", - "integrity": "sha512-c8cso/1RwVj+fbDvLtUgSG4ZJQ0y9Zdrl6Ot/GAjyy4pdMCHaFnDMts5gqFnWRPLajWtEnI+3hlET4R9fVoZng==", + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.23.tgz", + "integrity": "sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==", "dev": true, "hasInstallScript": true, "bin": { @@ -253,9 +295,9 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -292,9 +334,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.1.22", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.22.tgz", - "integrity": "sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -322,13 +364,13 @@ } }, "node_modules/postcss": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.10.tgz", - "integrity": "sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw==", + "version": "8.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", + "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", "dev": true, "dependencies": { "colorette": "^1.2.2", - "nanoid": "^3.1.22", + "nanoid": "^3.1.23", "source-map": "^0.6.1" }, "engines": { @@ -368,9 +410,9 @@ } }, "node_modules/rollup": { - "version": "2.45.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.45.2.tgz", - "integrity": "sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ==", + "version": "2.48.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.48.0.tgz", + "integrity": "sha512-wl9ZSSSsi5579oscSDYSzGn092tCS076YB+TQrzsGuSfYyJeep8eEWj0eaRjuC5McuMNmcnR8icBqiE/FWNB1A==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -395,12 +437,15 @@ } }, "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/source-map": { @@ -425,18 +470,18 @@ } }, "node_modules/svelte": { - "version": "3.37.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.37.0.tgz", - "integrity": "sha512-TRF30F4W4+d+Jr2KzUUL1j8Mrpns/WM/WacxYlo5MMb2E5Qy2Pk1Guj6GylxsW9OnKQl1tnF8q3hG/hQ3h6VUA==", + "version": "3.38.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.38.2.tgz", + "integrity": "sha512-q5Dq0/QHh4BLJyEVWGe7Cej5NWs040LWjMbicBGZ+3qpFWJ1YObRmUDZKbbovddLC9WW7THTj3kYbTOFmU9fbg==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/svelte-hmr": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.0.tgz", - "integrity": "sha512-Rc4w11U+U30m/cHqOJ/xioFSEAY5fd5muiQC7FL6XJuJAuB2OIJoEZl3KEJR2uO1/f4Bw0PdrugtbxcngSsOtQ==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.4.tgz", + "integrity": "sha512-kItFF7vqzStckSigoFmMnxJpTOdB9TWnQAW6Js+yAB4277tLbJIIE5KBlGHNmJNpA7MguqidsPB27Uw5UzQPCA==", "dev": true, "peerDependencies": { "svelte": ">=3.19.0" @@ -449,13 +494,13 @@ "dev": true }, "node_modules/vite": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.1.5.tgz", - "integrity": "sha512-tYU5iaYeUgQYvK/CNNz3tiJ8vYqPWfCE9IQ7K0iuzYovWw7lzty7KRYGWwV3CQPh0NKxWjOczAqiJsCL0Xb+Og==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.3.3.tgz", + "integrity": "sha512-eO1iwRbn3/BfkNVMNJDeANAFCZ5NobYOFPu7IqfY7DcI7I9nFGjJIZid0EViTmLDGwwSUPmRAq3cRBbO3+DsMA==", "dev": true, "dependencies": { - "esbuild": "^0.9.3", - "postcss": "^8.2.1", + "esbuild": "^0.11.23", + "postcss": "^8.2.10", "resolve": "^1.19.0", "rollup": "^2.38.5" }, @@ -468,16 +513,6 @@ "optionalDependencies": { "fsevents": "~2.3.1" } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", - "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - } } }, "dependencies": { @@ -492,51 +527,80 @@ } }, "@sveltejs/adapter-netlify": { - "version": "1.0.0-next.8", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.8.tgz", - "integrity": "sha512-44WQ3f2za31WI+OVYrDOglY1Co1AL+wMh4GWtXQRJRZZ/2Xlfxvro/5m86NJdbOrjdeTRXGM42TZY+gqerbJKQ==", + "version": "1.0.0-next.12", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.12.tgz", + "integrity": "sha512-34+Xk2YmTDgDJWVliaZtAiDbtEsZurENwALxdD1dDQErxI0HPGZgmmwktLJjf2mU2/DcGJAXZxgq2RsGiDxAZA==", "dev": true, "requires": { - "@sveltejs/kit": "1.0.0-next.81", - "esbuild": "^0.11.12", + "@sveltejs/kit": "1.0.0-next.103", + "esbuild": "^0.11.18", "toml": "^3.0.0" + }, + "dependencies": { + "@sveltejs/kit": { + "version": "1.0.0-next.103", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.103.tgz", + "integrity": "sha512-g3Q3AnYloJVpXu83yfQLddYcsTYJ5M/NaoRTyv0qCTMNea1L9HTGrI8grdi5kF8wbPCUcX9fLA9RYRDfEkjF/Q==", + "dev": true, + "requires": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.9", + "cheap-watch": "^1.0.3", + "sade": "^1.7.4", + "vite": "^2.2.4" + } + } } }, "@sveltejs/adapter-vercel": { - "version": "1.0.0-next.13", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.13.tgz", - "integrity": "sha512-7/DvjGBW+ldK80E7TsIB3Vpo6QmhdKK1+6pnN3/HrB1Uc+12sxvI76sXQGV0qhcJR3wUdXlHed3p8A8TSx1RhA==", + "version": "1.0.0-next.17", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.17.tgz", + "integrity": "sha512-35Z4R9V4+katvCZz37+E3pjcacQq8goIqwuClIVnnSK7+OUd6LoGb/cFoHm7OdvoSLUKaXSZ9/bLF/hwpmfJhQ==", "dev": true, "requires": { - "@sveltejs/kit": "1.0.0-next.81", - "esbuild": "^0.11.12" + "@sveltejs/kit": "1.0.0-next.104", + "esbuild": "^0.11.18" + }, + "dependencies": { + "@sveltejs/kit": { + "version": "1.0.0-next.104", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.104.tgz", + "integrity": "sha512-1ww5NvpGYJdKXR4bfxo04AM4izcJwTziFIVrImq3jqS2b4d8l3KfrJOqgv+e07RvW/WakrCRPAyZzeHpXLdkZg==", + "dev": true, + "requires": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.9", + "cheap-watch": "^1.0.3", + "sade": "^1.7.4", + "vite": "^2.2.4" + } + } } }, "@sveltejs/kit": { - "version": "1.0.0-next.81", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.81.tgz", - "integrity": "sha512-v1CxkLYX3xXRdihvpiOOuQs2MZa/f3ENZKeX7sMYDKQ0MzRpmrhzmplVukYD+fZHYUFjMj+yKYPMhOpC/p3ckQ==", + "version": "1.0.0-next.107", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.107.tgz", + "integrity": "sha512-HxomGMWbuWTU8lahk98hqIL/xjW6HzNTAvTZVMnnmlMHN1N8x7+abkz4Y09Zhu8lZkZpFuqBj2UlsgPW4uJXtw==", "dev": true, "requires": { - "@sveltejs/vite-plugin-svelte": "^1.0.0-next.7", + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.10", "cheap-watch": "^1.0.3", - "sade": "^1.7.4" + "sade": "^1.7.4", + "vite": "^2.3.1" } }, "@sveltejs/vite-plugin-svelte": { - "version": "1.0.0-next.7", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.7.tgz", - "integrity": "sha512-ENvKYY36jrvFP7h1G87k5uOoEh5UM1m8n40J2duqV/R3wHnxfW81SCR1aXo+5CVU8Prm3/jtS4TWs8CUTqO1fw==", + "version": "1.0.0-next.10", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.10.tgz", + "integrity": "sha512-ImvxbhPePm2hWNTKBSA3LHAYGwiEjHjvvgfPLXm4R87sfZ+BMXql9jBmDpzUC/URBLT4BB3Jxos/i523qkJBHg==", "dev": true, "requires": { "@rollup/pluginutils": "^4.1.0", - "chalk": "^4.1.0", + "chalk": "^4.1.1", "debug": "^4.3.2", "hash-sum": "^2.0.0", "require-relative": "^0.8.7", - "slash": "^3.0.0", + "slash": "^4.0.0", "source-map": "^0.7.3", - "svelte-hmr": "^0.14.0" + "svelte-hmr": "^0.14.2" } }, "ansi-styles": { @@ -549,9 +613,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -600,9 +664,9 @@ } }, "esbuild": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.12.tgz", - "integrity": "sha512-c8cso/1RwVj+fbDvLtUgSG4ZJQ0y9Zdrl6Ot/GAjyy4pdMCHaFnDMts5gqFnWRPLajWtEnI+3hlET4R9fVoZng==", + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.23.tgz", + "integrity": "sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==", "dev": true }, "estree-walker": { @@ -646,9 +710,9 @@ "dev": true }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dev": true, "requires": { "has": "^1.0.3" @@ -673,9 +737,9 @@ "dev": true }, "nanoid": { - "version": "3.1.22", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.22.tgz", - "integrity": "sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "dev": true }, "path-parse": { @@ -691,13 +755,13 @@ "dev": true }, "postcss": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.10.tgz", - "integrity": "sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw==", + "version": "8.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", + "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", "dev": true, "requires": { "colorette": "^1.2.2", - "nanoid": "^3.1.22", + "nanoid": "^3.1.23", "source-map": "^0.6.1" }, "dependencies": { @@ -726,9 +790,9 @@ } }, "rollup": { - "version": "2.45.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.45.2.tgz", - "integrity": "sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ==", + "version": "2.48.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.48.0.tgz", + "integrity": "sha512-wl9ZSSSsi5579oscSDYSzGn092tCS076YB+TQrzsGuSfYyJeep8eEWj0eaRjuC5McuMNmcnR8icBqiE/FWNB1A==", "dev": true, "requires": { "fsevents": "~2.3.1" @@ -744,9 +808,9 @@ } }, "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true }, "source-map": { @@ -765,15 +829,15 @@ } }, "svelte": { - "version": "3.37.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.37.0.tgz", - "integrity": "sha512-TRF30F4W4+d+Jr2KzUUL1j8Mrpns/WM/WacxYlo5MMb2E5Qy2Pk1Guj6GylxsW9OnKQl1tnF8q3hG/hQ3h6VUA==", + "version": "3.38.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.38.2.tgz", + "integrity": "sha512-q5Dq0/QHh4BLJyEVWGe7Cej5NWs040LWjMbicBGZ+3qpFWJ1YObRmUDZKbbovddLC9WW7THTj3kYbTOFmU9fbg==", "dev": true }, "svelte-hmr": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.0.tgz", - "integrity": "sha512-Rc4w11U+U30m/cHqOJ/xioFSEAY5fd5muiQC7FL6XJuJAuB2OIJoEZl3KEJR2uO1/f4Bw0PdrugtbxcngSsOtQ==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.4.tgz", + "integrity": "sha512-kItFF7vqzStckSigoFmMnxJpTOdB9TWnQAW6Js+yAB4277tLbJIIE5KBlGHNmJNpA7MguqidsPB27Uw5UzQPCA==", "dev": true, "requires": {} }, @@ -784,24 +848,16 @@ "dev": true }, "vite": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.1.5.tgz", - "integrity": "sha512-tYU5iaYeUgQYvK/CNNz3tiJ8vYqPWfCE9IQ7K0iuzYovWw7lzty7KRYGWwV3CQPh0NKxWjOczAqiJsCL0Xb+Og==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.3.3.tgz", + "integrity": "sha512-eO1iwRbn3/BfkNVMNJDeANAFCZ5NobYOFPu7IqfY7DcI7I9nFGjJIZid0EViTmLDGwwSUPmRAq3cRBbO3+DsMA==", "dev": true, "requires": { - "esbuild": "^0.9.3", + "esbuild": "^0.11.23", "fsevents": "~2.3.1", - "postcss": "^8.2.1", + "postcss": "^8.2.10", "resolve": "^1.19.0", "rollup": "^2.38.5" - }, - "dependencies": { - "esbuild": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", - "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==", - "dev": true - } } } } diff --git a/src/hooks/index.js b/src/hooks/index.js index f491d9c9..fd92cbf6 100644 --- a/src/hooks/index.js +++ b/src/hooks/index.js @@ -1,21 +1,15 @@ import * as cookie from 'cookie'; - -export function getContext({ headers }) { +export function getSession({ headers }) { const cookies = cookie.parse(headers.cookie || ''); const jwt = cookies.jwt && Buffer.from(cookies.jwt, 'base64').toString('utf-8'); + const user = jwt ? JSON.parse(jwt) : null; return { - user: jwt ? JSON.parse(jwt) : null - }; -} - -export function getSession({ context }) { - return { - user: context.user && { - username: context.user.username, - email: context.user.email, - image: context.user.image, - bio: context.user.bio + user: user && { + username: user.username, + email: user.email, + image: user.image, + bio: user.bio } }; } diff --git a/src/routes/$error.svelte b/src/routes/__error.svelte similarity index 100% rename from src/routes/$error.svelte rename to src/routes/__error.svelte diff --git a/src/routes/$layout.svelte b/src/routes/__layout.svelte similarity index 100% rename from src/routes/$layout.svelte rename to src/routes/__layout.svelte diff --git a/src/routes/article/[slug]/comments/[id].json.js b/src/routes/article/[slug]/comments/[id].json.js index cbaab63e..c115b8cf 100644 --- a/src/routes/article/[slug]/comments/[id].json.js +++ b/src/routes/article/[slug]/comments/[id].json.js @@ -1,12 +1,12 @@ import * as api from '$lib/api.js'; -export async function del({ params, context }) { - if (!context.user) { +export async function del({ params, locals }) { + if (!locals.user) { return { status: 401 }; } const { slug, id } = params; - const { status, error } = await api.del(`articles/${slug}/comments/${id}`, context.user.token); + const { status, error } = await api.del(`articles/${slug}/comments/${id}`, locals.user.token); if (error) { return { status, body: { error } }; diff --git a/src/routes/article/[slug]/comments/index.json.js b/src/routes/article/[slug]/comments/index.json.js index 60a128b8..750723ed 100644 --- a/src/routes/article/[slug]/comments/index.json.js +++ b/src/routes/article/[slug]/comments/index.json.js @@ -1,10 +1,10 @@ import * as api from '$lib/api.js'; -export async function get({ params, context }) { +export async function get({ params, locals }) { const { slug } = params; const { comments } = await api.get( `articles/${slug}/comments`, - context.user && context.user.token + locals.user && locals.user.token ); return { @@ -12,8 +12,8 @@ export async function get({ params, context }) { }; } -export async function post({ params, body: form, headers, context }) { - if (!context.user) { +export async function post({ params, body: form, headers, locals }) { + if (!locals.user) { return { status: 401 }; } @@ -23,7 +23,7 @@ export async function post({ params, body: form, headers, context }) { const { comment } = await api.post( `articles/${slug}/comments`, { comment: { body } }, - context.user.token + locals.user.token ); // for AJAX requests, return the newly created comment diff --git a/src/routes/article/[slug]/index.json.js b/src/routes/article/[slug]/index.json.js index 51165bce..f94eb859 100644 --- a/src/routes/article/[slug]/index.json.js +++ b/src/routes/article/[slug]/index.json.js @@ -1,8 +1,8 @@ import * as api from '$lib/api.js'; -export async function get({ params, context }) { +export async function get({ params, locals }) { const { slug } = params; - const { article } = await api.get(`articles/${slug}`, context.user && context.user.token); + const { article } = await api.get(`articles/${slug}`, locals.user && locals.user.token); return { body: article diff --git a/src/routes/articles.json.js b/src/routes/articles.json.js index fc9b256b..1476c92e 100644 --- a/src/routes/articles.json.js +++ b/src/routes/articles.json.js @@ -1,7 +1,7 @@ import * as api from '$lib/api'; import { page_size } from '$lib/constants'; -export async function get({ query, context }) { +export async function get({ query, locals }) { const tab = query.get('tab') || 'all'; const tag = query.get('tag'); const page = +query.get('page') || 1; @@ -19,7 +19,7 @@ export async function get({ query, context }) { const { articles, articlesCount } = await api.get( `${endpoint}?${q}`, - context.user && context.user.token + locals.user && locals.user.token ); return { diff --git a/src/routes/auth/save.js b/src/routes/auth/save.js index 8b5bf7d8..78f6558b 100644 --- a/src/routes/auth/save.js +++ b/src/routes/auth/save.js @@ -1,14 +1,14 @@ import * as api from '$lib/api.js'; import { respond } from './_respond'; -export async function post({ body: user, context }) { - if (!context.user) { +export async function post({ body: user, locals }) { + if (!locals.user) { return { status: 401 }; } - const { token } = context.user; + const { token } = locals.user; const body = await api.put( 'user', { diff --git a/src/routes/profile/@[user]/$layout.svelte b/src/routes/profile/@[user]/__layout.svelte similarity index 100% rename from src/routes/profile/@[user]/$layout.svelte rename to src/routes/profile/@[user]/__layout.svelte diff --git a/src/routes/profile/@[user]/_get_articles.js b/src/routes/profile/@[user]/_get_articles.js index d0479d91..949514a6 100644 --- a/src/routes/profile/@[user]/_get_articles.js +++ b/src/routes/profile/@[user]/_get_articles.js @@ -1,7 +1,7 @@ import * as api from '$lib/api.js'; import { page_size } from '$lib/constants.js'; -export async function get_articles({ query, params, context }, type) { +export async function get_articles({ query, params, locals }, type) { const p = +query.get('page') || 1; const q = new URLSearchParams([ @@ -12,7 +12,7 @@ export async function get_articles({ query, params, context }, type) { const { articles, articlesCount } = await api.get( `articles?${q}`, - context.user && context.user.token + locals.user && locals.user.token ); return { diff --git a/src/routes/profile/@[user]/follow.js b/src/routes/profile/@[user]/follow.js index b199c73e..46fb43d7 100644 --- a/src/routes/profile/@[user]/follow.js +++ b/src/routes/profile/@[user]/follow.js @@ -1,13 +1,13 @@ import * as api from '$lib/api.js'; -export async function post({ params, context }) { +export async function post({ params, locals }) { return { - body: await api.post(`profiles/${params.user}/follow`, null, context.user.token) + body: await api.post(`profiles/${params.user}/follow`, null, locals.user.token) }; } -export async function del({ params, context }) { +export async function del({ params, locals }) { return { - body: await api.del(`profiles/${params.user}/follow`, context.user.token) + body: await api.del(`profiles/${params.user}/follow`, locals.user.token) }; } diff --git a/svelte.config.cjs b/svelte.config.cjs deleted file mode 100644 index f794202b..00000000 --- a/svelte.config.cjs +++ /dev/null @@ -1,19 +0,0 @@ -const netlify = require('@sveltejs/adapter-netlify'); -const vercel = require('@sveltejs/adapter-vercel'); -const pkg = require('./package.json'); - -module.exports = { - kit: { - adapter: process.env.VERCEL ? vercel() : netlify(), - target: '#svelte', - vite: { - ssr: { - // TODO the adapter should make this unnecessary - noExternal: process.env.NODE_ENV === 'production' ? [ - ...Object.keys(pkg.dependencies), - ...Object.keys(pkg.devDependencies) - ] : [] - } - } - } -}; diff --git a/svelte.config.js b/svelte.config.js new file mode 100644 index 00000000..d7103157 --- /dev/null +++ b/svelte.config.js @@ -0,0 +1,9 @@ +import netlify from '@sveltejs/adapter-netlify'; +import vercel from '@sveltejs/adapter-vercel'; + +export default { + kit: { + adapter: process.env.VERCEL ? vercel() : netlify(), + target: '#svelte' + } +};