├── .gitignore ├── .npmrc ├── README.md ├── jsconfig.json ├── package-lock.json ├── package.json ├── src ├── app.html ├── global.d.ts └── routes │ ├── index.svelte │ └── static.svelte ├── static ├── favicon.png └── twitter.png └── svelte.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /.svelte-kit 4 | /package 5 | .vercel_build_output -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [](https://vercel.com/new/git/external?repository-url=https%3A%2F%2Fgithub.com%2Fleerob%2Fsveltekit-graphql&project-name=sveltekit-vercel&repository-name=sveltekit-vercel&demo-title=SvelteKit%20%2B%20Vercel&demo-description=SvelteKit%20app%20fetching%20data%20from%20the%20SpaceX%20GraphQL%20API.&demo-url=https%3A%2F%2Fsveltekit-gql.vercel.app%2F&demo-image=https%3A%2F%2Fsveltekit-gql.vercel.app%2Ftwitter.png) 2 | 3 | # SvelteKit + GraphQL 4 | 5 | Example project using SvelteKit with the [SpaceX GraphQL API](https://api.spacex.land/graphql/), deployed to [Vercel](https://vercel.com). 6 | 7 | ## Developing 8 | 9 | Once you've created a project and installed dependencies with `npm install`, start a development server: 10 | 11 | ```bash 12 | npm run dev 13 | 14 | # or start the server and open the app in a new browser tab 15 | npm run dev -- --open 16 | ``` 17 | 18 | ## Building 19 | 20 | This uses the [Vercel Adapter](https://github.com/sveltejs/kit/tree/master/packages/adapter-vercel) for SvelteKit. 21 | 22 | ```bash 23 | npm run build 24 | ``` 25 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "$lib": ["src/lib"], 6 | "$lib/*": ["src/lib/*"] 7 | } 8 | }, 9 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] 10 | } 11 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltekit-graphql", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@rollup/pluginutils": { 8 | "version": "4.1.1", 9 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", 10 | "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", 11 | "dev": true, 12 | "requires": { 13 | "estree-walker": "^2.0.1", 14 | "picomatch": "^2.2.2" 15 | } 16 | }, 17 | "@sveltejs/adapter-vercel": { 18 | "version": "1.0.0-next.26", 19 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.26.tgz", 20 | "integrity": "sha512-t1/Gl9GF62HV99VOmI0clguuSHdJvGD2t8/y7tv9N55tLAHWk4yRV/UOilBQhX+KKjCkPn40Oln2jTXPhlr/lA==", 21 | "dev": true, 22 | "requires": { 23 | "esbuild": "^0.12.5" 24 | } 25 | }, 26 | "@sveltejs/kit": { 27 | "version": "1.0.0-next.137", 28 | "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.137.tgz", 29 | "integrity": "sha512-YdcwaN9zWcbz4jLZS4j9/7fNZIVO8WkXDuwGTiKARhOLIuuJAjCvSuOZ3btJdV/ySpizTWX22u632weVPLECdw==", 30 | "dev": true, 31 | "requires": { 32 | "@sveltejs/vite-plugin-svelte": "^1.0.0-next.14", 33 | "cheap-watch": "^1.0.3", 34 | "sade": "^1.7.4", 35 | "vite": "^2.4.3" 36 | } 37 | }, 38 | "@sveltejs/vite-plugin-svelte": { 39 | "version": "1.0.0-next.14", 40 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.14.tgz", 41 | "integrity": "sha512-46IKPtoGcdo6YLyUhvsXyC1Dg3m2HlbgreZqxM/h5DzavgUa75c/WHT5cIxxLppG+gxtct7V08/WNEdpFdmM3Q==", 42 | "dev": true, 43 | "requires": { 44 | "@rollup/pluginutils": "^4.1.1", 45 | "debug": "^4.3.2", 46 | "kleur": "^4.1.4", 47 | "magic-string": "^0.25.7", 48 | "require-relative": "^0.8.7", 49 | "svelte-hmr": "^0.14.7" 50 | } 51 | }, 52 | "cheap-watch": { 53 | "version": "1.0.3", 54 | "resolved": "https://registry.npmjs.org/cheap-watch/-/cheap-watch-1.0.3.tgz", 55 | "integrity": "sha512-xC5CruMhLzjPwJ5ecUxGu1uGmwJQykUhqd2QrCrYbwvsFYdRyviu6jG9+pccwDXJR/OpmOTOJ9yLFunVgQu9wg==", 56 | "dev": true 57 | }, 58 | "colorette": { 59 | "version": "1.2.2", 60 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", 61 | "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", 62 | "dev": true 63 | }, 64 | "debug": { 65 | "version": "4.3.2", 66 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 67 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 68 | "dev": true, 69 | "requires": { 70 | "ms": "2.1.2" 71 | } 72 | }, 73 | "esbuild": { 74 | "version": "0.12.15", 75 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.15.tgz", 76 | "integrity": "sha512-72V4JNd2+48eOVCXx49xoSWHgC3/cCy96e7mbXKY+WOWghN00cCmlGnwVLRhRHorvv0dgCyuMYBZlM2xDM5OQw==", 77 | "dev": true 78 | }, 79 | "estree-walker": { 80 | "version": "2.0.2", 81 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 82 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 83 | "dev": true 84 | }, 85 | "fsevents": { 86 | "version": "2.3.2", 87 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 88 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 89 | "dev": true, 90 | "optional": true 91 | }, 92 | "function-bind": { 93 | "version": "1.1.1", 94 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 95 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 96 | "dev": true 97 | }, 98 | "has": { 99 | "version": "1.0.3", 100 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 101 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 102 | "dev": true, 103 | "requires": { 104 | "function-bind": "^1.1.1" 105 | } 106 | }, 107 | "is-core-module": { 108 | "version": "2.5.0", 109 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", 110 | "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", 111 | "dev": true, 112 | "requires": { 113 | "has": "^1.0.3" 114 | } 115 | }, 116 | "kleur": { 117 | "version": "4.1.4", 118 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", 119 | "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", 120 | "dev": true 121 | }, 122 | "magic-string": { 123 | "version": "0.25.7", 124 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 125 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 126 | "dev": true, 127 | "requires": { 128 | "sourcemap-codec": "^1.4.4" 129 | } 130 | }, 131 | "mri": { 132 | "version": "1.1.6", 133 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", 134 | "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", 135 | "dev": true 136 | }, 137 | "ms": { 138 | "version": "2.1.2", 139 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 140 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 141 | "dev": true 142 | }, 143 | "nanoid": { 144 | "version": "3.1.23", 145 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", 146 | "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", 147 | "dev": true 148 | }, 149 | "path-parse": { 150 | "version": "1.0.7", 151 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 152 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 153 | "dev": true 154 | }, 155 | "picomatch": { 156 | "version": "2.3.0", 157 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 158 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 159 | "dev": true 160 | }, 161 | "postcss": { 162 | "version": "8.3.6", 163 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz", 164 | "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==", 165 | "dev": true, 166 | "requires": { 167 | "colorette": "^1.2.2", 168 | "nanoid": "^3.1.23", 169 | "source-map-js": "^0.6.2" 170 | } 171 | }, 172 | "prettier": { 173 | "version": "2.3.2", 174 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", 175 | "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==" 176 | }, 177 | "prettier-plugin-svelte": { 178 | "version": "2.3.1", 179 | "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.3.1.tgz", 180 | "integrity": "sha512-F1/r6OYoBq8Zgurhs1MN25tdrhPw0JW5JjioPRqpxbYdmrZ3gY/DzHGs0B6zwd4DLyRsfGB2gqhxUCbHt/D1fw==" 181 | }, 182 | "require-relative": { 183 | "version": "0.8.7", 184 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 185 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 186 | "dev": true 187 | }, 188 | "resolve": { 189 | "version": "1.20.0", 190 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 191 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 192 | "dev": true, 193 | "requires": { 194 | "is-core-module": "^2.2.0", 195 | "path-parse": "^1.0.6" 196 | } 197 | }, 198 | "rollup": { 199 | "version": "2.53.3", 200 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.3.tgz", 201 | "integrity": "sha512-79QIGP5DXz5ZHYnCPi3tLz+elOQi6gudp9YINdaJdjG0Yddubo6JRFUM//qCZ0Bap/GJrsUoEBVdSOc4AkMlRA==", 202 | "dev": true, 203 | "requires": { 204 | "fsevents": "~2.3.2" 205 | } 206 | }, 207 | "sade": { 208 | "version": "1.7.4", 209 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", 210 | "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", 211 | "dev": true, 212 | "requires": { 213 | "mri": "^1.1.0" 214 | } 215 | }, 216 | "source-map-js": { 217 | "version": "0.6.2", 218 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", 219 | "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", 220 | "dev": true 221 | }, 222 | "sourcemap-codec": { 223 | "version": "1.4.8", 224 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 225 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 226 | "dev": true 227 | }, 228 | "svelte": { 229 | "version": "3.38.3", 230 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.38.3.tgz", 231 | "integrity": "sha512-N7bBZJH0iF24wsalFZF+fVYMUOigaAUQMIcEKHO3jstK/iL8VmP9xE+P0/a76+FkNcWt+TDv2Gx1taUoUscrvw==", 232 | "dev": true 233 | }, 234 | "svelte-hmr": { 235 | "version": "0.14.7", 236 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.7.tgz", 237 | "integrity": "sha512-pDrzgcWSoMaK6AJkBWkmgIsecW0GChxYZSZieIYfCP0v2oPyx2CYU/zm7TBIcjLVUPP714WxmViE9Thht4etog==", 238 | "dev": true 239 | }, 240 | "vite": { 241 | "version": "2.4.3", 242 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.4.3.tgz", 243 | "integrity": "sha512-iT6NPeiUUZ2FkzC3eazytOEMRaM4J+xgRQcNcpRcbmfYjakCFP4WKPJpeEz1U5JEKHAtwv3ZBQketQUFhFU3ng==", 244 | "dev": true, 245 | "requires": { 246 | "esbuild": "^0.12.8", 247 | "fsevents": "~2.3.2", 248 | "postcss": "^8.3.5", 249 | "resolve": "^1.20.0", 250 | "rollup": "^2.38.5" 251 | } 252 | } 253 | } 254 | } 255 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltekit-graphql", 3 | "version": "1.0.0", 4 | "private": true, 5 | "type": "module", 6 | "scripts": { 7 | "dev": "svelte-kit dev", 8 | "build": "svelte-kit build --verbose", 9 | "preview": "svelte-kit preview" 10 | }, 11 | "devDependencies": { 12 | "@sveltejs/adapter-vercel": "next", 13 | "@sveltejs/kit": "next", 14 | "svelte": "^3.38.3" 15 | }, 16 | "dependencies": { 17 | "prettier": "^2.3.2", 18 | "prettier-plugin-svelte": "^2.3.1" 19 | }, 20 | "prettier": { 21 | "arrowParens": "always", 22 | "singleQuote": true, 23 | "tabWidth": 2, 24 | "trailingComma": "none" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 |43 | This is an example SvelteKit 49 | application fetching GraphQL data from the public 50 | SpaceX API. View source on 56 | GitHub. 62 |
63 |{new Date(launch.launch_date_local).toLocaleString()}
74 | 75 |3 | This page is completely static. View source on 4 | GitHub. 10 |
11 | 25 | 26 | 55 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leerob/sveltekit-graphql/0f13982c0758803ec71722c8b0441141ab113cab/static/favicon.png -------------------------------------------------------------------------------- /static/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leerob/sveltekit-graphql/0f13982c0758803ec71722c8b0441141ab113cab/static/twitter.png -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import vercel from '@sveltejs/adapter-vercel'; 2 | 3 | export default { 4 | kit: { 5 | adapter: vercel(), 6 | target: '#svelte', 7 | }, 8 | }; 9 | --------------------------------------------------------------------------------