Update eslint config

This commit is contained in:
Jon Staab 2024-09-02 10:57:53 -07:00
parent 29565184c4
commit cf84423109
7 changed files with 120 additions and 109 deletions

View File

@ -1,53 +0,0 @@
module.exports = {
root: true,
env: {
browser: true,
es2021: true,
},
plugins: ["@typescript-eslint"],
overrides: [
{
files: ["*.svelte"],
parser: "svelte-eslint-parser",
parserOptions: {
parser: "@typescript-eslint/parser",
},
},
],
extends: [
"eslint:recommended",
"plugin:svelte/recommended",
"plugin:@typescript-eslint/recommended",
],
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
tsconfigRootDir: __dirname,
project: ["./tsconfig.json"],
extraFileExtensions: [".svelte"],
},
settings: {
"svelte3/typescript": require("typescript"),
},
rules: {
"a11y-click-events-have-key-events": "off",
"a11y-autofocus": "off",
"no-constant-condition": "off",
"no-unused-vars": "off",
"no-useless-escape": "off",
"no-extra-semi": "off",
"no-async-promise-executor": "off",
"prefer-const": ["error", {destructuring: "all"}],
"svelte/valid-compile": "off",
"svelte/no-at-html-tags": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-extra-semi": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{args: "none", destructuredArrayIgnorePattern: "^_d?$"},
],
},
ignorePatterns: ["*.svg"],
}

54
eslint.config.js Normal file
View File

@ -0,0 +1,54 @@
import js from "@eslint/js"
import ts from "typescript-eslint"
import svelte from "eslint-plugin-svelte"
import prettier from "eslint-config-prettier"
import globals from "globals"
/** @type {import('eslint').Linter.Config[]} */
export default [
js.configs.recommended,
...ts.configs.recommended,
...svelte.configs["flat/recommended"],
prettier,
...svelte.configs["flat/prettier"],
{
languageOptions: {
globals: {
...globals.browser,
...globals.node,
},
},
},
{
files: ["**/*.svelte"],
languageOptions: {
parserOptions: {
parser: ts.parser,
},
},
},
{
ignores: ["build/", "dist/", "*.svg"],
},
{
rules: {
"a11y-click-events-have-key-events": "off",
"a11y-autofocus": "off",
"no-constant-condition": "off",
"no-unused-vars": "off",
"no-useless-escape": "off",
"no-extra-semi": "off",
"no-async-promise-executor": "off",
"prefer-const": ["error", {destructuring: "all"}],
"svelte/valid-compile": "off",
"svelte/no-at-html-tags": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-extra-semi": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{args: "none", destructuredArrayIgnorePattern: "^_d?$", caughtErrors: "none"},
],
},
},
]

BIN
package-lock.json generated

Binary file not shown.

View File

@ -20,8 +20,6 @@
"@tsconfig/svelte": "^5.0.4",
"@types/ramda": "^0.30.2",
"@types/throttle-debounce": "^5.0.2",
"@typescript-eslint/eslint-plugin": "^8.4.0",
"@typescript-eslint/parser": "^8.4.0",
"@vite-pwa/assets-generator": "^0.2.4",
"autoprefixer": "^10.4.20",
"cypress": "^13.14.1",
@ -65,6 +63,7 @@
"classnames": "^2.5.1",
"compressorjs": "^1.2.1",
"date-picker-svelte": "^2.13.0",
"eslint-config-prettier": "^9.1.0",
"fuse.js": "^7.0.0",
"hls.js": "^1.5.15",
"hurdak": "^0.2.10",
@ -87,6 +86,7 @@
"svelte-switch": "^0.0.5",
"throttle-debounce": "^5.0.2",
"tippy.js": "^6.3.7",
"typescript-eslint": "^8.4.0",
"uuid": "^10.0.0"
}
}

View File

@ -40,59 +40,59 @@
// Routes
router.register("/about", import("src/app/views/About.svelte"))
router.register("/search", import("src/app/views/Search.svelte"))
router.register("/events", import("src/app/views/Calendar.svelte"))
router.register("/about", () => import("src/app/views/About.svelte"))
router.register("/search", () => import("src/app/views/Search.svelte"))
router.register("/events", () => import("src/app/views/Calendar.svelte"))
router.register("/channels", import("src/app/views/ChannelsList.svelte"), {
router.register("/channels", () => import("src/app/views/ChannelsList.svelte"), {
requireSigner: true,
})
router.register("/channels/create", import("src/app/views/ChannelCreate.svelte"), {
router.register("/channels/create", () => import("src/app/views/ChannelCreate.svelte"), {
requireSigner: true,
})
router.register("/channels/requests", import("src/app/views/ChannelsList.svelte"), {
router.register("/channels/requests", () => import("src/app/views/ChannelsList.svelte"), {
requireSigner: true,
})
router.register("/channels/:channelId", import("src/app/views/ChannelsDetail.svelte"), {
router.register("/channels/:channelId", () => import("src/app/views/ChannelsDetail.svelte"), {
requireSigner: true,
serializers: {
channelId: asChannelId,
},
})
router.register("/events/:address", import("src/app/views/EventDetail.svelte"), {
router.register("/events/:address", () => import("src/app/views/EventDetail.svelte"), {
serializers: {
address: asNaddr("address"),
},
})
router.register("/events/:address/edit", import("src/app/views/EventEdit.svelte"), {
router.register("/events/:address/edit", () => import("src/app/views/EventEdit.svelte"), {
serializers: {
address: asNaddr("address"),
},
})
router.register("/events/:address/delete", import("src/app/views/EventDelete.svelte"), {
router.register("/events/:address/delete", () => import("src/app/views/EventDelete.svelte"), {
serializers: {
address: asNaddr("address"),
},
})
router.register("/groups", import("src/app/views/GroupList.svelte"))
router.register("/groups/new", import("src/app/views/GroupCreate.svelte"), {
router.register("/groups", () => import("src/app/views/GroupList.svelte"))
router.register("/groups/new", () => import("src/app/views/GroupCreate.svelte"), {
requireSigner: true,
})
router.register("/groups/:address/edit", import("src/app/views/GroupEdit.svelte"), {
router.register("/groups/:address/edit", () => import("src/app/views/GroupEdit.svelte"), {
requireSigner: true,
serializers: {
address: asNaddr("address"),
},
})
router.register("/groups/:address/delete", import("src/app/views/GroupDelete.svelte"), {
router.register("/groups/:address/delete", () => import("src/app/views/GroupDelete.svelte"), {
requireSigner: true,
serializers: {
address: asNaddr("address"),
},
})
router.register("/groups/:address/info", import("src/app/views/GroupInfo.svelte"), {
router.register("/groups/:address/info", () => import("src/app/views/GroupInfo.svelte"), {
serializers: {
address: asNaddr("address"),
},
@ -106,7 +106,7 @@
},
},
)
router.register("/groups/:address/rotate", import("src/app/views/GroupRotate.svelte"), {
router.register("/groups/:address/rotate", () => import("src/app/views/GroupRotate.svelte"), {
requireSigner: true,
serializers: {
address: asNaddr("address"),
@ -114,46 +114,46 @@
removeMembers: asCsv("removeMembers"),
},
})
router.register("/groups/:address/:activeTab", import("src/app/views/GroupDetail.svelte"), {
router.register("/groups/:address/:activeTab", () => import("src/app/views/GroupDetail.svelte"), {
serializers: {
address: asNaddr("address"),
claim: asString("claim"),
},
})
router.register("/groups/:address", import("src/app/views/GroupDetail.svelte"), {
router.register("/groups/:address", () => import("src/app/views/GroupDetail.svelte"), {
serializers: {
address: asNaddr("address"),
claim: asString("claim"),
},
})
router.register("/help/:topic", import("src/app/views/Help.svelte"))
router.register("/help/:topic", () => import("src/app/views/Help.svelte"))
router.register("/invite", import("src/app/views/InviteAccept.svelte"), {
router.register("/invite", () => import("src/app/views/InviteAccept.svelte"), {
serializers: {
people: asCsv("people"),
relays: asCsv("relays"),
groups: asCsv("groups"),
},
})
router.register("/invite/create", import("src/app/views/InviteCreate.svelte"), {
router.register("/invite/create", () => import("src/app/views/InviteCreate.svelte"), {
serializers: {
initialPubkey: asUrlComponent("initialPubkey"),
initialGroupAddress: asUrlComponent("initialGroupAddress"),
},
})
router.register("/feeds", import("src/app/views/FeedList.svelte"))
router.register("/feeds/create", import("src/app/views/FeedCreate.svelte"))
router.register("/feeds/:address", import("src/app/views/FeedEdit.svelte"), {
router.register("/feeds", () => import("src/app/views/FeedList.svelte"))
router.register("/feeds/create", () => import("src/app/views/FeedCreate.svelte"))
router.register("/feeds/:address", () => import("src/app/views/FeedEdit.svelte"), {
serializers: {
address: asNaddr("address"),
},
})
router.register("/lists", import("src/app/views/ListList.svelte"))
router.register("/lists/create", import("src/app/views/ListCreate.svelte"))
router.register("/lists/:address", import("src/app/views/ListDetail.svelte"), {
router.register("/lists", () => import("src/app/views/ListList.svelte"))
router.register("/lists/create", () => import("src/app/views/ListCreate.svelte"))
router.register("/lists/:address", () => import("src/app/views/ListDetail.svelte"), {
serializers: {
address: asNaddr("address"),
},
@ -250,76 +250,80 @@
pubkeys: asCsv("pubkeys"),
},
})
router.register("/people/:entity", import("src/app/views/PersonDetail.svelte"), {
router.register("/people/:entity", () => import("src/app/views/PersonDetail.svelte"), {
required: ["pubkey"],
serializers: {
entity: asPerson,
},
})
router.register("/people/:entity/followers", import("src/app/views/PersonFollowers.svelte"), {
router.register(
"/people/:entity/followers",
() => import("src/app/views/PersonFollowers.svelte"),
{
required: ["pubkey"],
serializers: {
entity: asPerson,
},
},
)
router.register("/people/:entity/follows", () => import("src/app/views/PersonFollows.svelte"), {
required: ["pubkey"],
serializers: {
entity: asPerson,
},
})
router.register("/people/:entity/follows", import("src/app/views/PersonFollows.svelte"), {
required: ["pubkey"],
serializers: {
entity: asPerson,
},
})
router.register("/people/:entity/info", import("src/app/views/PersonInfo.svelte"), {
router.register("/people/:entity/info", () => import("src/app/views/PersonInfo.svelte"), {
required: ["pubkey"],
serializers: {
entity: asPerson,
},
})
router.register("/qrcode/:code", import("src/app/views/QRCode.svelte"), {
router.register("/qrcode/:code", () => import("src/app/views/QRCode.svelte"), {
serializers: {
code: asUrlComponent("code"),
},
})
router.register("/publishes", import("src/app/views/Publishes.svelte"))
router.register("/publishes", () => import("src/app/views/Publishes.svelte"))
router.register("/relays/:entity", import("src/app/views/RelayDetail.svelte"), {
router.register("/relays/:entity", () => import("src/app/views/RelayDetail.svelte"), {
serializers: {
entity: asRelay,
},
})
router.register("/relays/:entity/review", import("src/app/views/RelayReview.svelte"), {
router.register("/relays/:entity/review", () => import("src/app/views/RelayReview.svelte"), {
serializers: {
entity: asRelay,
},
})
router.register("/settings", import("src/app/views/UserSettings.svelte"), {
router.register("/settings", () => import("src/app/views/UserSettings.svelte"), {
requireUser: true,
})
router.register("/settings/content", import("src/app/views/UserContent.svelte"), {
router.register("/settings/content", () => import("src/app/views/UserContent.svelte"), {
requireUser: true,
})
router.register("/settings/data", import("src/app/views/UserData.svelte"), {
router.register("/settings/data", () => import("src/app/views/UserData.svelte"), {
requireUser: true,
})
router.register("/settings/data/export", import("src/app/views/DataExport.svelte"), {
router.register("/settings/data/export", () => import("src/app/views/DataExport.svelte"), {
requireUser: true,
})
router.register("/settings/data/import", import("src/app/views/DataImport.svelte"), {
router.register("/settings/data/import", () => import("src/app/views/DataImport.svelte"), {
requireUser: true,
})
router.register("/settings/keys", import("src/app/views/UserKeys.svelte"), {
router.register("/settings/keys", () => import("src/app/views/UserKeys.svelte"), {
requireUser: true,
})
router.register("/settings/profile", import("src/app/views/UserProfile.svelte"), {
router.register("/settings/profile", () => import("src/app/views/UserProfile.svelte"), {
requireUser: true,
})
router.register("/settings/relays", import("src/app/views/RelayList.svelte"))
router.register("/settings/relays", () => import("src/app/views/RelayList.svelte"))
router.register("/topics/:topic", import("src/app/views/TopicFeed.svelte"))
router.register("/topics/:topic", () => import("src/app/views/TopicFeed.svelte"))
router.register("/zap", import("src/app/views/Zap.svelte"), {
router.register("/zap", () => import("src/app/views/Zap.svelte"), {
required: ["splits"],
serializers: {
eid: asNote,
@ -329,12 +333,12 @@
},
})
router.register("/:entity", import("src/app/views/Bech32Entity.svelte"), {
router.register("/:entity", () => import("src/app/views/Bech32Entity.svelte"), {
serializers: {
entity: asEntity,
},
})
router.register("/:entity/*", import("src/app/views/Bech32Entity.svelte"), {
router.register("/:entity/*", () => import("src/app/views/Bech32Entity.svelte"), {
serializers: {
entity: asEntity,
},

View File

@ -62,7 +62,7 @@
"pointer-events-none": $menuIsOpen,
})}>
{#if $page}
{@const promise = router.getMatch($page.path).route.component}
{@const promise = router.getMatch($page.path).route.component()}
{#key router.getKey($page)}
<div class="m-auto flex w-full max-w-2xl flex-grow flex-col gap-4 p-4">
{#await promise}

View File

@ -44,7 +44,13 @@
let date = toDate(value)
$: date ? setDate(date) : setValue(null)
$: {
if (date) {
setDate(date)
} else {
setValue(null)
}
}
</script>
<div class={cx(className, "relative")}>