detached 43a5817

init

commit
43a5817035b71515f9e709a8ef970c38001b6d12
author
Kit · · 2025-02-09 17:10 UTC
parent
none (root commit)
signature
SSH UnverifiedSHA256:H91DFuEG4jpk5edzLA4aUKkpv4zv9Q339ipRmkph6Tk The key is unknown
21 files · +3993 -0
A .gitignore +23 -0
@@ -0,0 +1,23 @@
1+node_modules
2+
3+# Output
4+.output
5+.vercel
6+.netlify
7+.wrangler
8+/.svelte-kit
9+/build
10+
11+# OS
12+.DS_Store
13+Thumbs.db
14+
15+# Env
16+.env
17+.env.*
18+!.env.example
19+!.env.test
20+
21+# Vite
22+vite.config.js.timestamp-*
23+vite.config.ts.timestamp-*
@@ -0,0 +1,23 @@
1+node_modules
2+
3+# Output
4+.output
5+.vercel
6+.netlify
7+.wrangler
8+/.svelte-kit
9+/build
10+
11+# OS
12+.DS_Store
13+Thumbs.db
14+
15+# Env
16+.env
17+.env.*
18+!.env.example
19+!.env.test
20+
21+# Vite
22+vite.config.js.timestamp-*
23+vite.config.ts.timestamp-*
A .npmrc +1 -0
@@ -0,0 +1,1 @@
1+engine-strict=true
@@ -0,0 +1,1 @@
1+engine-strict=true
A .prettierignore +4 -0
@@ -0,0 +1,4 @@
1+# Package Managers
2+package-lock.json
3+pnpm-lock.yaml
4+yarn.lock
@@ -0,0 +1,4 @@
1+# Package Managers
2+package-lock.json
3+pnpm-lock.yaml
4+yarn.lock
A .prettierrc +15 -0
@@ -0,0 +1,15 @@
1+{
2+ "useTabs": true,
3+ "singleQuote": true,
4+ "trailingComma": "none",
5+ "printWidth": 100,
6+ "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
7+ "overrides": [
8+ {
9+ "files": "*.svelte",
10+ "options": {
11+ "parser": "svelte"
12+ }
13+ }
14+ ]
15+}
@@ -0,0 +1,15 @@
1+{
2+ "useTabs": true,
3+ "singleQuote": true,
4+ "trailingComma": "none",
5+ "printWidth": 100,
6+ "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
7+ "overrides": [
8+ {
9+ "files": "*.svelte",
10+ "options": {
11+ "parser": "svelte"
12+ }
13+ }
14+ ]
15+}
A README.md +38 -0
@@ -0,0 +1,38 @@
1+# sv
2+
3+Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
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+npx sv create
12+
13+# create a new project in my-app
14+npx sv create 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://svelte.dev/docs/kit/adapters) for your target environment.
@@ -0,0 +1,38 @@
1+# sv
2+
3+Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
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+npx sv create
12+
13+# create a new project in my-app
14+npx sv create 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://svelte.dev/docs/kit/adapters) for your target environment.
A eslint.config.js +34 -0
@@ -0,0 +1,34 @@
1+import prettier from 'eslint-config-prettier';
2+import js from '@eslint/js';
3+import { includeIgnoreFile } from '@eslint/compat';
4+import svelte from 'eslint-plugin-svelte';
5+import globals from 'globals';
6+import { fileURLToPath } from 'node:url';
7+import ts from 'typescript-eslint';
8+const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url));
9+
10+export default ts.config(
11+ includeIgnoreFile(gitignorePath),
12+ js.configs.recommended,
13+ ...ts.configs.recommended,
14+ ...svelte.configs['flat/recommended'],
15+ prettier,
16+ ...svelte.configs['flat/prettier'],
17+ {
18+ languageOptions: {
19+ globals: {
20+ ...globals.browser,
21+ ...globals.node
22+ }
23+ }
24+ },
25+ {
26+ files: ['**/*.svelte'],
27+
28+ languageOptions: {
29+ parserOptions: {
30+ parser: ts.parser
31+ }
32+ }
33+ }
34+);
@@ -0,0 +1,34 @@
1+import prettier from 'eslint-config-prettier';
2+import js from '@eslint/js';
3+import { includeIgnoreFile } from '@eslint/compat';
4+import svelte from 'eslint-plugin-svelte';
5+import globals from 'globals';
6+import { fileURLToPath } from 'node:url';
7+import ts from 'typescript-eslint';
8+const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url));
9+
10+export default ts.config(
11+ includeIgnoreFile(gitignorePath),
12+ js.configs.recommended,
13+ ...ts.configs.recommended,
14+ ...svelte.configs['flat/recommended'],
15+ prettier,
16+ ...svelte.configs['flat/prettier'],
17+ {
18+ languageOptions: {
19+ globals: {
20+ ...globals.browser,
21+ ...globals.node
22+ }
23+ }
24+ },
25+ {
26+ files: ['**/*.svelte'],
27+
28+ languageOptions: {
29+ parserOptions: {
30+ parser: ts.parser
31+ }
32+ }
33+ }
34+);
A package.json +43 -0
@@ -0,0 +1,43 @@
1+{
2+ "name": "pdraim",
3+ "private": true,
4+ "version": "0.0.1",
5+ "type": "module",
6+ "scripts": {
7+ "dev": "vite dev",
8+ "build": "vite build",
9+ "preview": "vite preview",
10+ "prepare": "svelte-kit sync || echo ''",
11+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
12+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
13+ "format": "prettier --write .",
14+ "lint": "prettier --check . && eslint .",
15+ "test:unit": "vitest",
16+ "test": "npm run test:unit -- --run"
17+ },
18+ "devDependencies": {
19+ "@eslint/compat": "^1.2.5",
20+ "@eslint/js": "^9.18.0",
21+ "@sveltejs/adapter-cloudflare": "^5.0.1",
22+ "@sveltejs/kit": "^2.16.0",
23+ "@sveltejs/vite-plugin-svelte": "^5.0.0",
24+ "@tailwindcss/container-queries": "^0.1.1",
25+ "@tailwindcss/forms": "^0.5.10",
26+ "@tailwindcss/typography": "^0.5.16",
27+ "autoprefixer": "^10.4.20",
28+ "eslint": "^9.18.0",
29+ "eslint-config-prettier": "^10.0.1",
30+ "eslint-plugin-svelte": "^2.46.1",
31+ "globals": "^15.14.0",
32+ "prettier": "^3.4.2",
33+ "prettier-plugin-svelte": "^3.3.3",
34+ "prettier-plugin-tailwindcss": "^0.6.10",
35+ "svelte": "^5.0.0",
36+ "svelte-check": "^4.0.0",
37+ "tailwindcss": "^3.4.17",
38+ "typescript": "^5.0.0",
39+ "typescript-eslint": "^8.20.0",
40+ "vite": "^6.0.0",
41+ "vitest": "^3.0.0"
42+ }
43+}
@@ -0,0 +1,43 @@
1+{
2+ "name": "pdraim",
3+ "private": true,
4+ "version": "0.0.1",
5+ "type": "module",
6+ "scripts": {
7+ "dev": "vite dev",
8+ "build": "vite build",
9+ "preview": "vite preview",
10+ "prepare": "svelte-kit sync || echo ''",
11+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
12+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
13+ "format": "prettier --write .",
14+ "lint": "prettier --check . && eslint .",
15+ "test:unit": "vitest",
16+ "test": "npm run test:unit -- --run"
17+ },
18+ "devDependencies": {
19+ "@eslint/compat": "^1.2.5",
20+ "@eslint/js": "^9.18.0",
21+ "@sveltejs/adapter-cloudflare": "^5.0.1",
22+ "@sveltejs/kit": "^2.16.0",
23+ "@sveltejs/vite-plugin-svelte": "^5.0.0",
24+ "@tailwindcss/container-queries": "^0.1.1",
25+ "@tailwindcss/forms": "^0.5.10",
26+ "@tailwindcss/typography": "^0.5.16",
27+ "autoprefixer": "^10.4.20",
28+ "eslint": "^9.18.0",
29+ "eslint-config-prettier": "^10.0.1",
30+ "eslint-plugin-svelte": "^2.46.1",
31+ "globals": "^15.14.0",
32+ "prettier": "^3.4.2",
33+ "prettier-plugin-svelte": "^3.3.3",
34+ "prettier-plugin-tailwindcss": "^0.6.10",
35+ "svelte": "^5.0.0",
36+ "svelte-check": "^4.0.0",
37+ "tailwindcss": "^3.4.17",
38+ "typescript": "^5.0.0",
39+ "typescript-eslint": "^8.20.0",
40+ "vite": "^6.0.0",
41+ "vitest": "^3.0.0"
42+ }
43+}
A pnpm-lock.yaml +3724 -0 generated file: collapsed
A postcss.config.js +6 -0
@@ -0,0 +1,6 @@
1+export default {
2+ plugins: {
3+ tailwindcss: {},
4+ autoprefixer: {}
5+ }
6+};
@@ -0,0 +1,6 @@
1+export default {
2+ plugins: {
3+ tailwindcss: {},
4+ autoprefixer: {}
5+ }
6+};
A src/app.css +3 -0
@@ -0,0 +1,3 @@
1+@import 'tailwindcss/base';
2+@import 'tailwindcss/components';
3+@import 'tailwindcss/utilities';
@@ -0,0 +1,3 @@
1+@import 'tailwindcss/base';
2+@import 'tailwindcss/components';
3+@import 'tailwindcss/utilities';
A src/app.d.ts +13 -0
@@ -0,0 +1,13 @@
1+// See https://svelte.dev/docs/kit/types#app.d.ts
2+// for information about these interfaces
3+declare global {
4+ namespace App {
5+ // interface Error {}
6+ // interface Locals {}
7+ // interface PageData {}
8+ // interface PageState {}
9+ // interface Platform {}
10+ }
11+}
12+
13+export {};
@@ -0,0 +1,13 @@
1+// See https://svelte.dev/docs/kit/types#app.d.ts
2+// for information about these interfaces
3+declare global {
4+ namespace App {
5+ // interface Error {}
6+ // interface Locals {}
7+ // interface PageData {}
8+ // interface PageState {}
9+ // interface Platform {}
10+ }
11+}
12+
13+export {};
A src/app.html +12 -0
@@ -0,0 +1,12 @@
1+<!doctype html>
2+<html lang="en">
3+ <head>
4+ <meta charset="utf-8" />
5+ <link rel="icon" href="%sveltekit.assets%/favicon.png" />
6+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7+ %sveltekit.head%
8+ </head>
9+ <body data-sveltekit-preload-data="hover">
10+ <div style="display: contents">%sveltekit.body%</div>
11+ </body>
12+</html>
@@ -0,0 +1,12 @@
1+<!doctype html>
2+<html lang="en">
3+ <head>
4+ <meta charset="utf-8" />
5+ <link rel="icon" href="%sveltekit.assets%/favicon.png" />
6+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7+ %sveltekit.head%
8+ </head>
9+ <body data-sveltekit-preload-data="hover">
10+ <div style="display: contents">%sveltekit.body%</div>
11+ </body>
12+</html>
A src/demo.spec.ts +7 -0
@@ -0,0 +1,7 @@
1+import { describe, it, expect } from 'vitest';
2+
3+describe('sum test', () => {
4+ it('adds 1 + 2 to equal 3', () => {
5+ expect(1 + 2).toBe(3);
6+ });
7+});
@@ -0,0 +1,7 @@
1+import { describe, it, expect } from 'vitest';
2+
3+describe('sum test', () => {
4+ it('adds 1 + 2 to equal 3', () => {
5+ expect(1 + 2).toBe(3);
6+ });
7+});
A src/lib/index.ts +1 -0
@@ -0,0 +1,1 @@
1+// place files you want to import through the `$lib` alias in this folder.
@@ -0,0 +1,1 @@
1+// place files you want to import through the `$lib` alias in this folder.
A src/routes/+layout.svelte +6 -0
@@ -0,0 +1,6 @@
1+<script lang="ts">
2+ import '../app.css';
3+ let { children } = $props();
4+</script>
5+
6+{@render children()}
@@ -0,0 +1,6 @@
1+<script lang="ts">
2+ import '../app.css';
3+ let { children } = $props();
4+</script>
5+
6+{@render children()}
A src/routes/+page.svelte +2 -0
@@ -0,0 +1,2 @@
1+<h1>Welcome to SvelteKit</h1>
2+<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p>
@@ -0,0 +1,2 @@
1+<h1>Welcome to SvelteKit</h1>
2+<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p>
A static/favicon.png +0 -0 binary file: no text diff

binary file: no text diff

A svelte.config.js +18 -0
@@ -0,0 +1,18 @@
1+import adapter from '@sveltejs/adapter-cloudflare';
2+import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
3+
4+/** @type {import('@sveltejs/kit').Config} */
5+const config = {
6+ // Consult https://svelte.dev/docs/kit/integrations
7+ // for more information about preprocessors
8+ preprocess: vitePreprocess(),
9+
10+ kit: {
11+ // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
12+ // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
13+ // See https://svelte.dev/docs/kit/adapters for more information about adapters.
14+ adapter: adapter()
15+ }
16+};
17+
18+export default config;
@@ -0,0 +1,18 @@
1+import adapter from '@sveltejs/adapter-cloudflare';
2+import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
3+
4+/** @type {import('@sveltejs/kit').Config} */
5+const config = {
6+ // Consult https://svelte.dev/docs/kit/integrations
7+ // for more information about preprocessors
8+ preprocess: vitePreprocess(),
9+
10+ kit: {
11+ // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
12+ // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
13+ // See https://svelte.dev/docs/kit/adapters for more information about adapters.
14+ adapter: adapter()
15+ }
16+};
17+
18+export default config;
A tailwind.config.ts +14 -0
@@ -0,0 +1,14 @@
1+import containerQueries from '@tailwindcss/container-queries';
2+import forms from '@tailwindcss/forms';
3+import typography from '@tailwindcss/typography';
4+import type { Config } from 'tailwindcss';
5+
6+export default {
7+ content: ['./src/**/*.{html,js,svelte,ts}'],
8+
9+ theme: {
10+ extend: {}
11+ },
12+
13+ plugins: [typography, forms, containerQueries]
14+} satisfies Config;
@@ -0,0 +1,14 @@
1+import containerQueries from '@tailwindcss/container-queries';
2+import forms from '@tailwindcss/forms';
3+import typography from '@tailwindcss/typography';
4+import type { Config } from 'tailwindcss';
5+
6+export default {
7+ content: ['./src/**/*.{html,js,svelte,ts}'],
8+
9+ theme: {
10+ extend: {}
11+ },
12+
13+ plugins: [typography, forms, containerQueries]
14+} satisfies Config;
A tsconfig.json +19 -0
@@ -0,0 +1,19 @@
1+{
2+ "extends": "./.svelte-kit/tsconfig.json",
3+ "compilerOptions": {
4+ "allowJs": true,
5+ "checkJs": true,
6+ "esModuleInterop": true,
7+ "forceConsistentCasingInFileNames": true,
8+ "resolveJsonModule": true,
9+ "skipLibCheck": true,
10+ "sourceMap": true,
11+ "strict": true,
12+ "moduleResolution": "bundler"
13+ }
14+ // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
15+ // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
16+ //
17+ // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
18+ // from the referenced tsconfig.json - TypeScript does not merge them in
19+}
@@ -0,0 +1,19 @@
1+{
2+ "extends": "./.svelte-kit/tsconfig.json",
3+ "compilerOptions": {
4+ "allowJs": true,
5+ "checkJs": true,
6+ "esModuleInterop": true,
7+ "forceConsistentCasingInFileNames": true,
8+ "resolveJsonModule": true,
9+ "skipLibCheck": true,
10+ "sourceMap": true,
11+ "strict": true,
12+ "moduleResolution": "bundler"
13+ }
14+ // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
15+ // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
16+ //
17+ // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
18+ // from the referenced tsconfig.json - TypeScript does not merge them in
19+}
A vite.config.ts +10 -0
@@ -0,0 +1,10 @@
1+import { defineConfig } from 'vitest/config';
2+import { sveltekit } from '@sveltejs/kit/vite';
3+
4+export default defineConfig({
5+ plugins: [sveltekit()],
6+
7+ test: {
8+ include: ['src/**/*.{test,spec}.{js,ts}']
9+ }
10+});
@@ -0,0 +1,10 @@
1+import { defineConfig } from 'vitest/config';
2+import { sveltekit } from '@sveltejs/kit/vite';
3+
4+export default defineConfig({
5+ plugins: [sveltekit()],
6+
7+ test: {
8+ include: ['src/**/*.{test,spec}.{js,ts}']
9+ }
10+});

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 3

Tags 9

↑↓ moveenter openesc close