├── sk-form-actions ├── .eslintignore ├── .eslintrc.cjs ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── README.md ├── package-lock.json ├── package.json ├── src │ ├── app.html │ ├── lib │ │ └── server │ │ │ └── secrets.js │ └── routes │ │ ├── +page.svelte │ │ ├── auth-modal │ │ └── +page.svelte │ │ ├── auth │ │ ├── +page.server.js │ │ ├── +page.svelte │ │ └── +server.js │ │ ├── contact │ │ ├── +page.js │ │ └── +page.svelte │ │ └── news │ │ ├── +page.server.js │ │ └── +page.svelte ├── static │ └── favicon.png ├── svelte.config.js └── vite.config.js ├── sk-loading-data ├── .eslintignore ├── .eslintrc.cjs ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── README.md ├── db.json ├── package-lock.json ├── package.json ├── src │ ├── app.html │ └── routes │ │ ├── +layout.js │ │ ├── +layout.svelte │ │ ├── +page.js │ │ ├── +page.svelte │ │ ├── address │ │ ├── +page.js │ │ └── +page.svelte │ │ ├── api │ │ ├── current-time │ │ │ └── +server.js │ │ └── postcodes │ │ │ └── +server.js │ │ ├── products │ │ ├── +layout.js │ │ ├── +layout.svelte │ │ ├── +page.js │ │ ├── +page.server.js │ │ ├── +page.svelte │ │ ├── [productId] │ │ │ ├── +error.svelte │ │ │ ├── +page.server.js │ │ │ └── +page.svelte │ │ └── product.svelte │ │ └── stocks │ │ ├── +layout.js │ │ ├── +layout.svelte │ │ ├── +page.js │ │ └── +page.svelte ├── static │ └── favicon.png ├── svelte.config.js └── vite.config.js └── sk-routing ├── .eslintignore ├── .eslintrc.cjs ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── README.md ├── package-lock.json ├── package.json ├── src ├── app.html ├── lib │ ├── comments.js │ ├── footer.svelte │ └── header.svelte ├── params │ └── integer.js └── routes │ ├── (auth) │ ├── +layout.svelte │ ├── login │ │ └── +page.svelte │ ├── password │ │ ├── +layout.svelte │ │ ├── forgot │ │ │ └── +page@.svelte │ │ └── reset │ │ │ └── +page.svelte │ └── register │ │ └── +page.svelte │ ├── +layout.svelte │ ├── +page.svelte │ ├── about │ └── +page.svelte │ ├── api │ └── comments │ │ ├── +server.js │ │ └── [commentId] │ │ └── +server.js │ ├── blog │ ├── +page.svelte │ ├── first │ │ └── +page.svelte │ └── second │ │ └── +page.svelte │ ├── demo-api │ └── +server.js │ ├── docs │ └── [...slug] │ │ └── +page.svelte │ ├── marketing │ └── [[lang]] │ │ └── +page.svelte │ └── products │ ├── +page.svelte │ └── [productId=integer] │ ├── +layout.svelte │ ├── +page.svelte │ └── review │ └── [reviewId] │ └── +page.svelte ├── static └── favicon.png ├── svelte.config.js └── vite.config.js /sk-form-actions/.eslintignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /sk-form-actions/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['eslint:recommended', 'prettier'], 4 | plugins: ['svelte3'], 5 | overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], 6 | parserOptions: { 7 | sourceType: 'module', 8 | ecmaVersion: 2020 9 | }, 10 | env: { 11 | browser: true, 12 | es2017: true, 13 | node: true 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /sk-form-actions/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | -------------------------------------------------------------------------------- /sk-form-actions/.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /sk-form-actions/.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /sk-form-actions/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "pluginSearchDirs": ["."], 8 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 9 | } 10 | -------------------------------------------------------------------------------- /sk-form-actions/README.md: -------------------------------------------------------------------------------- 1 | # create-svelte 2 | 3 | Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). 4 | 5 | ## Creating a project 6 | 7 | If you're seeing this, you've probably already done this step. Congrats! 8 | 9 | ```bash 10 | # create a new project in the current directory 11 | npm create svelte@latest 12 | 13 | # create a new project in my-app 14 | npm create svelte@latest my-app 15 | ``` 16 | 17 | ## Developing 18 | 19 | Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 20 | 21 | ```bash 22 | npm run dev 23 | 24 | # or start the server and open the app in a new browser tab 25 | npm run dev -- --open 26 | ``` 27 | 28 | ## Building 29 | 30 | To create a production version of your app: 31 | 32 | ```bash 33 | npm run build 34 | ``` 35 | 36 | You can preview the production build with `npm run preview`. 37 | 38 | > To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. 39 | -------------------------------------------------------------------------------- /sk-form-actions/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sk-form-actions", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "lint": "prettier --plugin-search-dir . --check . && eslint .", 10 | "format": "prettier --plugin-search-dir . --write ." 11 | }, 12 | "devDependencies": { 13 | "@sveltejs/adapter-auto": "^2.0.0", 14 | "@sveltejs/kit": "^1.7.2", 15 | "eslint": "^8.28.0", 16 | "eslint-config-prettier": "^8.5.0", 17 | "eslint-plugin-svelte3": "^4.0.0", 18 | "prettier": "^2.8.0", 19 | "prettier-plugin-svelte": "^2.8.1", 20 | "svelte": "^3.54.0", 21 | "vite": "^4.0.0" 22 | }, 23 | "type": "module" 24 | } 25 | -------------------------------------------------------------------------------- /sk-form-actions/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /sk-form-actions/src/lib/server/secrets.js: -------------------------------------------------------------------------------- 1 | export const secretKey = 'secret-key'; 2 | -------------------------------------------------------------------------------- /sk-form-actions/src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 |

Welcome to SvelteKit

2 |

Visit kit.svelte.dev to read the documentation

3 | -------------------------------------------------------------------------------- /sk-form-actions/src/routes/auth-modal/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |

{form?.message || ''}

7 | 8 | 9 | 10 | 11 |
12 | -------------------------------------------------------------------------------- /sk-form-actions/src/routes/auth/+page.server.js: -------------------------------------------------------------------------------- 1 | import { fail, redirect } from '@sveltejs/kit'; 2 | 3 | export const actions = { 4 | login: async ({ request, cookies, url }) => { 5 | const data = await request.formData(); 6 | const username = data.get('username'); 7 | const password = data.get('password'); 8 | if (!username || !password) { 9 | return fail(400, { username, message: 'Missing username or password' }); 10 | } 11 | cookies.set('username', username, { path: '/' }); 12 | throw redirect(303, url.searchParams.get('redirectTo') || '/'); 13 | }, 14 | register: async ({ request, cookies, url }) => { 15 | const data = await request.formData(); 16 | const username = data.get('username'); 17 | const password = data.get('password'); 18 | if (!username || !password) { 19 | return fail(400, { username, message: 'Missing username or password' }); 20 | } 21 | cookies.set('username', username, { path: '/' }); 22 | throw redirect(303, url.searchParams.get('redirectTo') || '/'); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /sk-form-actions/src/routes/auth/+page.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |

{form?.message || ''}

10 | 11 | 12 | 13 | 14 |
15 | -------------------------------------------------------------------------------- /sk-form-actions/src/routes/auth/+server.js: -------------------------------------------------------------------------------- 1 | import { json } from '@sveltejs/kit'; 2 | 3 | export async function POST({ request, cookies }) { 4 | const data = await request.json(); 5 | const { username, password } = data; 6 | if (!username || !password) { 7 | return json( 8 | { message: 'Missing username or password' }, 9 | { 10 | status: 400 11 | } 12 | ); 13 | } 14 | cookies.set('username', username, { path: '/' }); 15 | return json({ message: 'Logged in' }); 16 | } 17 | -------------------------------------------------------------------------------- /sk-form-actions/src/routes/contact/+page.js: -------------------------------------------------------------------------------- 1 | import { PUBLIC_ANALYTICS_KEY } from '$env/static/public'; 2 | 3 | export const load = () => { 4 | console.log(PUBLIC_ANALYTICS_KEY); 5 | return {}; 6 | }; 7 | -------------------------------------------------------------------------------- /sk-form-actions/src/routes/contact/+page.svelte: -------------------------------------------------------------------------------- 1 | 21 | 22 |

Contact form

23 | 24 |
25 |
26 |
27 |