Skip to content

Commit 87d5697

Browse files
committed
Rework into a functional modern sveltekit frontend
1 parent abde9e7 commit 87d5697

71 files changed

Lines changed: 997 additions & 3482 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

frontend/.eslintrc.js

Lines changed: 0 additions & 113 deletions
This file was deleted.

frontend/.gitignore

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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-*

frontend/bun.lock

Lines changed: 496 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/eslint.config.js

Lines changed: 206 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
// import prettier from "eslint-config-prettier";
2+
import js from "@eslint/js";
3+
import svelte from "eslint-plugin-svelte";
4+
import globals from "globals";
5+
import ts from "typescript-eslint";
6+
import svelteConfig from "./svelte.config.js";
7+
8+
9+
export default ts.config(
10+
js.configs.recommended,
11+
...ts.configs.recommended,
12+
...svelte.configs["flat/recommended"],
13+
// prettier,
14+
// ...svelte.configs["flat/prettier"],
15+
{
16+
languageOptions: {
17+
globals: {
18+
...globals.browser,
19+
...globals.node
20+
}
21+
}
22+
},
23+
{
24+
files: ["**/*.svelte"],
25+
26+
languageOptions: {
27+
parserOptions: {
28+
projectService: true,
29+
extraFileExtensions: [".svelte"],
30+
parser: ts.parser,
31+
svelteConfig
32+
}
33+
}
34+
},
35+
{
36+
ignores: ["build/", ".svelte-kit/", "dist/", "wailsjs/"]
37+
},
38+
{
39+
rules: {
40+
"accessor-pairs": "error",
41+
"block-spacing": ["error", "never"],
42+
"brace-style": ["error", "stroustrup", {allowSingleLine: true}],
43+
"curly": ["error", "multi-line", "consistent"],
44+
"dot-location": ["error", "property"],
45+
"dot-notation": "error",
46+
"func-call-spacing": "error",
47+
"handle-callback-err": "error",
48+
"key-spacing": "error",
49+
"keyword-spacing": "error",
50+
// "new-cap": ["error", {newIsCap: true}],
51+
"no-array-constructor": "error",
52+
"no-caller": "error",
53+
"no-console": "error",
54+
"no-duplicate-imports": "error",
55+
"no-else-return": "error",
56+
"no-eval": "error",
57+
"no-floating-decimal": "error",
58+
"no-implied-eval": "error",
59+
"no-iterator": "error",
60+
"no-label-var": "error",
61+
"no-labels": "error",
62+
"no-lone-blocks": "error",
63+
"no-mixed-spaces-and-tabs": "error",
64+
"no-multi-spaces": "error",
65+
"no-multi-str": "error",
66+
"no-new": "error",
67+
"no-new-func": "error",
68+
"no-new-object": "error",
69+
"no-new-wrappers": "error",
70+
"no-octal-escape": "error",
71+
"no-path-concat": "error",
72+
"no-proto": "error",
73+
"no-prototype-builtins": "off",
74+
"no-redeclare": ["error", {builtinGlobals: true}],
75+
"no-self-compare": "error",
76+
"no-sequences": "error",
77+
"no-shadow": ["warn", {builtinGlobals: false, hoist: "functions"}],
78+
"no-tabs": "error",
79+
"no-template-curly-in-string": "error",
80+
"no-throw-literal": "error",
81+
"no-undef": "error",
82+
"no-undef-init": "error",
83+
"no-unmodified-loop-condition": "error",
84+
"no-unneeded-ternary": "error",
85+
"no-useless-call": "error",
86+
"no-useless-computed-key": "error",
87+
"no-useless-constructor": "error",
88+
"no-useless-rename": "error",
89+
"no-var": "error",
90+
"no-whitespace-before-property": "error",
91+
"object-curly-spacing": ["error", "never", {objectsInObjects: false}],
92+
"object-property-newline": ["error", {allowAllPropertiesOnSameLine: true}],
93+
"operator-linebreak": [
94+
"error",
95+
"none",
96+
{overrides: {"?": "before", ":": "before", "&&": "before"}}
97+
],
98+
"prefer-const": "error",
99+
"quote-props": ["error", "consistent-as-needed", {keywords: true}],
100+
"quotes": ["error", "double", {allowTemplateLiterals: true}],
101+
"rest-spread-spacing": "error",
102+
"semi": "error",
103+
"semi-spacing": "error",
104+
"space-before-blocks": "error",
105+
"space-in-parens": "error",
106+
"space-infix-ops": "error",
107+
"space-unary-ops": [
108+
"error",
109+
{words: true, nonwords: false, overrides: {"typeof": false}}
110+
],
111+
"spaced-comment": ["error", "always", {exceptions: ["-", "*"]}],
112+
"template-curly-spacing": "error",
113+
"wrap-iife": ["error", "inside"],
114+
"yield-star-spacing": "error",
115+
"yoda": "error"
116+
},
117+
},
118+
{
119+
rules: {
120+
"@typescript-eslint/no-unused-vars": ["error", {argsIgnorePattern: "^_", varsIgnorePattern: "^_"}]
121+
}
122+
},
123+
{
124+
rules: {
125+
// Errors
126+
"svelte/infinite-reactive-loop": "error",
127+
"svelte/no-dom-manipulating": "off",
128+
"svelte/no-dupe-else-if-blocks": "error",
129+
"svelte/no-dupe-on-directives": "error",
130+
"svelte/no-dupe-style-properties": "error",
131+
"svelte/no-dupe-use-directives": "error",
132+
"svelte/no-dynamic-slot-name": "error",
133+
"svelte/no-export-load-in-svelte-module-in-kit-pages": "error",
134+
"svelte/no-not-function-handler": "error",
135+
"svelte/no-object-in-text-mustaches": "error",
136+
"svelte/no-reactive-reassign": "error",
137+
"svelte/no-shorthand-style-property-overrides": "error",
138+
"svelte/no-store-async": "error",
139+
"svelte/no-unknown-style-directive-property": "error",
140+
"svelte/require-store-callbacks-use-set-param": "error",
141+
"svelte/require-store-reactive-access": "error",
142+
"svelte/valid-compile": "error",
143+
"svelte/valid-prop-names-in-kit-pages": "error",
144+
145+
// Security
146+
"svelte/no-at-html-tags": "error",
147+
"svelte/no-target-blank": "error",
148+
149+
// Best Practices
150+
"svelte/block-lang": ["error", {script: "ts"}],
151+
"svelte/button-has-type": "error",
152+
"svelte/no-at-debug-tags": "error",
153+
"svelte/no-ignored-unsubscribe": "error",
154+
"svelte/no-immutable-reactive-statements": "error",
155+
"svelte/no-inline-styles": "off",
156+
"svelte/no-reactive-functions": "error",
157+
"svelte/no-reactive-literals": "error",
158+
"svelte/no-svelte-internal": "error",
159+
"svelte/no-unused-class-name": "error",
160+
"svelte/no-unused-svelte-ignore": "error",
161+
"svelte/no-useless-mustaches": "error",
162+
"svelte/prefer-destructured-store-props": "error",
163+
"svelte/require-each-key": "error",
164+
"svelte/require-event-dispatcher-types": "error",
165+
"svelte/require-optimized-style-attribute": "error",
166+
"svelte/require-stores-init": "error",
167+
"svelte/valid-each-key": "error",
168+
169+
// Stylistic Issues
170+
"svelte/derived-has-same-inputs-outputs": "error",
171+
"svelte/first-attribute-linebreak": ["error", {multiline: "below", singleline: "beside"}],
172+
"svelte/html-closing-bracket-spacing": "error",
173+
"svelte/html-quotes": ["error", {prefer: "double"}],
174+
"svelte/html-self-closing": ["error", {"void": "always", "component": "always", "svelte": "always", "normal": "ignore"}],
175+
"svelte/indent": "off",
176+
"svelte/max-attributes-per-line": "off",
177+
"svelte/mustache-spacing": "error",
178+
"svelte/no-extra-reactive-curlies": "error",
179+
// "svelte/no-restricted-html-elements": "error",
180+
"svelte/no-spaces-around-equal-signs-in-attribute": "error",
181+
"svelte/prefer-class-directive": ["error", {prefer: "always"}],
182+
"svelte/prefer-style-directive": "error",
183+
"svelte/shorthand-attribute": "error",
184+
"svelte/shorthand-directive": "error",
185+
"svelte/sort-attributes": "off",
186+
"svelte/spaced-html-comment": "error",
187+
188+
// Extension Rules
189+
"svelte/no-inner-declarations": "error",
190+
"svelte/no-trailing-spaces": "error",
191+
192+
// SvelteKit
193+
"svelte/no-goto-without-base": "error",
194+
195+
// System
196+
"svelte/comment-directive": ["error", {reportUnusedDisableDirectives: true}],
197+
"svelte/system": "error",
198+
},
199+
languageOptions: {
200+
globals: {
201+
__INSTALLER_LICENSE__: "readonly",
202+
__APP_VERSION__: "readonly"
203+
}
204+
}
205+
}
206+
);

frontend/index.html

Lines changed: 0 additions & 12 deletions
This file was deleted.

frontend/jsconfig.json

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)