improve notification and performance

This commit is contained in:
reya 2023-11-30 16:02:28 +07:00
parent 6f68c2762b
commit 80f675cb54
11 changed files with 356 additions and 291 deletions

View File

@ -20,7 +20,7 @@
"dependencies": {
"@evilmartians/harmony": "^1.2.0",
"@getalby/sdk": "^2.7.0",
"@nostr-dev-kit/ndk": "^2.1.1",
"@nostr-dev-kit/ndk": "^2.1.3",
"@nostr-fetch/adapter-ndk": "^0.13.1",
"@radix-ui/react-accordion": "^1.1.2",
"@radix-ui/react-alert-dialog": "^1.0.5",
@ -33,7 +33,7 @@
"@radix-ui/react-switch": "^1.0.3",
"@radix-ui/react-toolbar": "^1.0.4",
"@radix-ui/react-tooltip": "^1.0.7",
"@tanstack/react-query": "^5.8.7",
"@tanstack/react-query": "^5.10.0",
"@tanstack/react-query-devtools": "^5.10.0",
"@tauri-apps/api": "2.0.0-alpha.11",
"@tauri-apps/cli": "2.0.0-alpha.17",
@ -61,13 +61,13 @@
"@tiptap/starter-kit": "^2.1.12",
"@tiptap/suggestion": "^2.1.12",
"dayjs": "^1.11.10",
"framer-motion": "^10.16.5",
"framer-motion": "^10.16.7",
"html-to-text": "^9.0.5",
"idb-keyval": "^6.2.1",
"light-bolt11-decoder": "^3.0.0",
"lru-cache": "^10.1.0",
"markdown-to-jsx": "^7.3.2",
"media-chrome": "^1.5.3",
"media-chrome": "^1.5.4",
"minidenticons": "^4.2.0",
"nanoid": "^5.0.3",
"nostr-fetch": "^0.13.1",
@ -82,10 +82,10 @@
"react-router-dom": "^6.20.0",
"react-string-replace": "^1.1.1",
"reactflow": "^11.10.1",
"sonner": "^1.2.3",
"sonner": "^1.2.4",
"tauri-controls": "github:reyamir/tauri-controls",
"tippy.js": "^6.3.7",
"tiptap-markdown": "^0.8.4",
"tiptap-markdown": "^0.8.7",
"virtua": "^0.16.7",
"zustand": "^4.4.7"
},
@ -94,11 +94,11 @@
"@tailwindcss/typography": "^0.5.10",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/html-to-text": "^9.0.4",
"@types/node": "^20.10.0",
"@types/node": "^20.10.1",
"@types/react": "^18.2.39",
"@types/react-dom": "^18.2.17",
"@typescript-eslint/eslint-plugin": "^6.13.0",
"@typescript-eslint/parser": "^6.13.0",
"@typescript-eslint/eslint-plugin": "^6.13.1",
"@typescript-eslint/parser": "^6.13.1",
"@vitejs/plugin-react-swc": "^3.5.0",
"autoprefixer": "^10.4.16",
"clsx": "^2.0.0",

View File

@ -12,11 +12,11 @@ dependencies:
specifier: ^2.7.0
version: 2.7.0(typescript@5.3.2)
'@nostr-dev-kit/ndk':
specifier: ^2.1.1
version: 2.1.1(typescript@5.3.2)
specifier: ^2.1.3
version: 2.1.3(typescript@5.3.2)
'@nostr-fetch/adapter-ndk':
specifier: ^0.13.1
version: 0.13.1(@nostr-dev-kit/ndk@2.1.1)(nostr-fetch@0.13.1)
version: 0.13.1(@nostr-dev-kit/ndk@2.1.3)(nostr-fetch@0.13.1)
'@radix-ui/react-accordion':
specifier: ^1.1.2
version: 1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
@ -51,11 +51,11 @@ dependencies:
specifier: ^1.0.7
version: 1.0.7(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@tanstack/react-query':
specifier: ^5.8.7
version: 5.8.7(react-dom@18.2.0)(react@18.2.0)
specifier: ^5.10.0
version: 5.10.0(react@18.2.0)
'@tanstack/react-query-devtools':
specifier: ^5.10.0
version: 5.10.0(@tanstack/react-query@5.8.7)(react@18.2.0)
version: 5.10.0(@tanstack/react-query@5.10.0)(react@18.2.0)
'@tauri-apps/api':
specifier: 2.0.0-alpha.11
version: 2.0.0-alpha.11
@ -135,8 +135,8 @@ dependencies:
specifier: ^1.11.10
version: 1.11.10
framer-motion:
specifier: ^10.16.5
version: 10.16.5(react-dom@18.2.0)(react@18.2.0)
specifier: ^10.16.7
version: 10.16.7(react-dom@18.2.0)(react@18.2.0)
html-to-text:
specifier: ^9.0.5
version: 9.0.5
@ -153,8 +153,8 @@ dependencies:
specifier: ^7.3.2
version: 7.3.2(react@18.2.0)
media-chrome:
specifier: ^1.5.3
version: 1.5.3
specifier: ^1.5.4
version: 1.5.4
minidenticons:
specifier: ^4.2.0
version: 4.2.0
@ -198,8 +198,8 @@ dependencies:
specifier: ^11.10.1
version: 11.10.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
sonner:
specifier: ^1.2.3
version: 1.2.3(react-dom@18.2.0)(react@18.2.0)
specifier: ^1.2.4
version: 1.2.4(react-dom@18.2.0)(react@18.2.0)
tauri-controls:
specifier: github:reyamir/tauri-controls
version: github.com/reyamir/tauri-controls/079b1262f9b75c84b97613174836101b01d61c37(@tauri-apps/api@2.0.0-alpha.11)(@tauri-apps/plugin-os@2.0.0-alpha.4)(clsx@2.0.0)(react-dom@18.2.0)(react@18.2.0)(tailwind-merge@1.14.0)
@ -207,8 +207,8 @@ dependencies:
specifier: ^6.3.7
version: 6.3.7
tiptap-markdown:
specifier: ^0.8.4
version: 0.8.4(@tiptap/core@2.1.12)
specifier: ^0.8.7
version: 0.8.7(@tiptap/core@2.1.12)
virtua:
specifier: ^0.16.7
version: 0.16.7(react-dom@18.2.0)(react@18.2.0)
@ -230,8 +230,8 @@ devDependencies:
specifier: ^9.0.4
version: 9.0.4
'@types/node':
specifier: ^20.10.0
version: 20.10.0
specifier: ^20.10.1
version: 20.10.1
'@types/react':
specifier: ^18.2.39
version: 18.2.39
@ -239,11 +239,11 @@ devDependencies:
specifier: ^18.2.17
version: 18.2.17
'@typescript-eslint/eslint-plugin':
specifier: ^6.13.0
version: 6.13.0(@typescript-eslint/parser@6.13.0)(eslint@8.54.0)(typescript@5.3.2)
specifier: ^6.13.1
version: 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.2)
'@typescript-eslint/parser':
specifier: ^6.13.0
version: 6.13.0(eslint@8.54.0)(typescript@5.3.2)
specifier: ^6.13.1
version: 6.13.1(eslint@8.54.0)(typescript@5.3.2)
'@vitejs/plugin-react-swc':
specifier: ^3.5.0
version: 3.5.0(vite@4.5.0)
@ -306,7 +306,7 @@ devDependencies:
version: 5.3.2
vite:
specifier: ^4.5.0
version: 4.5.0(@types/node@20.10.0)
version: 4.5.0(@types/node@20.10.1)
vite-tsconfig-paths:
specifier: ^4.2.1
version: 4.2.1(typescript@5.3.2)(vite@4.5.0)
@ -323,8 +323,8 @@ packages:
engines: {node: '>=10'}
dev: true
/@babel/code-frame@7.23.4:
resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==}
/@babel/code-frame@7.23.5:
resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/highlight': 7.23.4
@ -340,11 +340,11 @@ packages:
source-map: 0.5.7
dev: true
/@babel/generator@7.23.4:
resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==}
/@babel/generator@7.23.5:
resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.4
'@babel/types': 7.23.5
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.20
jsesc: 2.5.2
@ -360,21 +360,21 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/template': 7.22.15
'@babel/types': 7.23.4
'@babel/types': 7.23.5
dev: true
/@babel/helper-hoist-variables@7.22.5:
resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.4
'@babel/types': 7.23.5
dev: true
/@babel/helper-split-export-declaration@7.22.6:
resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.4
'@babel/types': 7.23.5
dev: true
/@babel/helper-string-parser@7.23.4:
@ -396,16 +396,16 @@ packages:
js-tokens: 4.0.0
dev: true
/@babel/parser@7.23.4:
resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==}
/@babel/parser@7.23.5:
resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==}
engines: {node: '>=6.0.0'}
hasBin: true
dependencies:
'@babel/types': 7.17.0
dev: true
/@babel/runtime@7.23.4:
resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==}
/@babel/runtime@7.23.5:
resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.0
@ -414,23 +414,23 @@ packages:
resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.23.4
'@babel/parser': 7.23.4
'@babel/types': 7.23.4
'@babel/code-frame': 7.23.5
'@babel/parser': 7.23.5
'@babel/types': 7.23.5
dev: true
/@babel/traverse@7.23.2:
resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.23.4
'@babel/generator': 7.23.4
'@babel/code-frame': 7.23.5
'@babel/generator': 7.23.5
'@babel/helper-environment-visitor': 7.22.20
'@babel/helper-function-name': 7.23.0
'@babel/helper-hoist-variables': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.4
'@babel/types': 7.23.4
'@babel/parser': 7.23.5
'@babel/types': 7.23.5
debug: 4.3.4
globals: 11.12.0
transitivePeerDependencies:
@ -445,8 +445,8 @@ packages:
to-fast-properties: 2.0.0
dev: true
/@babel/types@7.23.4:
resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==}
/@babel/types@7.23.5:
resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-string-parser': 7.23.4
@ -847,8 +847,8 @@ packages:
fastq: 1.15.0
dev: true
/@nostr-dev-kit/ndk@2.1.1(typescript@5.3.2):
resolution: {integrity: sha512-sMD4re3QVpSVMzoyvJAFiftPxJBXkhjRInrK5DcjhSkkPTlJhI+oiVXCpcvCJ3PHT5PilhDgKkg3LyOvv135UQ==}
/@nostr-dev-kit/ndk@2.1.3(typescript@5.3.2):
resolution: {integrity: sha512-GUJNc69kSvQWEjPlAUh6pyvAehnzApPPTjv97Mrmk8C/frPt5O2jHr62OgSVlXlj5AWUegDn2hnbtiZjGVPtWw==}
dependencies:
'@noble/hashes': 1.3.2
'@noble/secp256k1': 2.0.0
@ -866,13 +866,13 @@ packages:
- typescript
dev: false
/@nostr-fetch/adapter-ndk@0.13.1(@nostr-dev-kit/ndk@2.1.1)(nostr-fetch@0.13.1):
/@nostr-fetch/adapter-ndk@0.13.1(@nostr-dev-kit/ndk@2.1.3)(nostr-fetch@0.13.1):
resolution: {integrity: sha512-B3xeFR/qZHOzyy68WZCL+v+OjOZHG9YBW6jEpp1b1hzogAkoqSYJfYHo55Heka/CUp8z7dteYV/tmabtTCVcPA==}
peerDependencies:
'@nostr-dev-kit/ndk': ^0.8.4
nostr-fetch: ^0.13.1
dependencies:
'@nostr-dev-kit/ndk': 2.1.1(typescript@5.3.2)
'@nostr-dev-kit/ndk': 2.1.3(typescript@5.3.2)
'@nostr-fetch/kernel': 0.13.1
nostr-fetch: 0.13.1
dev: false
@ -891,7 +891,7 @@ packages:
/@radix-ui/primitive@1.0.1:
resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
dev: false
/@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0):
@ -907,7 +907,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
@ -936,7 +936,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -962,7 +962,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.39
'@types/react-dom': 18.2.17
@ -983,7 +983,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1007,7 +1007,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1035,7 +1035,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
@ -1055,7 +1055,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@types/react': 18.2.39
react: 18.2.0
dev: false
@ -1069,7 +1069,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@types/react': 18.2.39
react: 18.2.0
dev: false
@ -1087,7 +1087,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1117,7 +1117,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@types/react': 18.2.39
react: 18.2.0
dev: false
@ -1135,7 +1135,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
@ -1160,7 +1160,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1183,7 +1183,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@types/react': 18.2.39
react: 18.2.0
dev: false
@ -1201,7 +1201,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1224,7 +1224,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1249,7 +1249,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@types/react': 18.2.39
react: 18.2.0
@ -1268,7 +1268,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1306,7 +1306,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1341,7 +1341,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1371,7 +1371,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.39
'@types/react-dom': 18.2.17
@ -1392,7 +1392,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@types/react': 18.2.39
@ -1414,7 +1414,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-slot': 1.0.2(@types/react@18.2.39)(react@18.2.0)
'@types/react': 18.2.39
'@types/react-dom': 18.2.17
@ -1435,7 +1435,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1464,7 +1464,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.39
'@types/react-dom': 18.2.17
@ -1481,7 +1481,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@types/react': 18.2.39
react: 18.2.0
@ -1500,7 +1500,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1527,7 +1527,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-direction': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1554,7 +1554,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1577,7 +1577,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-direction': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1604,7 +1604,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.39)(react@18.2.0)
@ -1632,7 +1632,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@types/react': 18.2.39
react: 18.2.0
dev: false
@ -1646,7 +1646,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@types/react': 18.2.39
react: 18.2.0
@ -1661,7 +1661,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@types/react': 18.2.39
react: 18.2.0
@ -1676,7 +1676,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@types/react': 18.2.39
react: 18.2.0
dev: false
@ -1690,7 +1690,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@types/react': 18.2.39
react: 18.2.0
dev: false
@ -1704,7 +1704,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/rect': 1.0.1
'@types/react': 18.2.39
react: 18.2.0
@ -1719,7 +1719,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.39)(react@18.2.0)
'@types/react': 18.2.39
react: 18.2.0
@ -1738,7 +1738,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.39
'@types/react-dom': 18.2.17
@ -1749,7 +1749,7 @@ packages:
/@radix-ui/rect@1.0.1:
resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
dev: false
/@reactflow/background@11.3.6(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0):
@ -2057,40 +2057,32 @@ packages:
tailwindcss: 3.3.5
dev: true
/@tanstack/query-core@5.8.7:
resolution: {integrity: sha512-58xOSkxxZK4SGQ/uzX8MDZHLGZCkxlgkPxnfhxUOL2uchnNHyay2UVcR3mQNMgaMwH1e2l+0n+zfS7+UJ/MAJw==}
/@tanstack/query-core@5.10.0:
resolution: {integrity: sha512-wlw/l2E+U70iABaJnOtZIJN/5VMhuj4RPViafwUYiIGoqw1VqqqaxBnBL90qLhWswoOaK8RAj3+NiG0duk+cRg==}
dev: false
/@tanstack/query-devtools@5.10.0:
resolution: {integrity: sha512-ZN17ZHiPFc8B1AZplueTLI6qxqNPuelV/8Q6gx2coNac2++AD1gq8NvCQxfq9HoaqFJM8xqS3oPYxa3HZZTo8w==}
dev: false
/@tanstack/react-query-devtools@5.10.0(@tanstack/react-query@5.8.7)(react@18.2.0):
/@tanstack/react-query-devtools@5.10.0(@tanstack/react-query@5.10.0)(react@18.2.0):
resolution: {integrity: sha512-amQN/6BdSMiYtILISk5j3IrZZiWz+HOHjJdcJNZHaTpzS7aIM1Z82bghCSoPdBtS7P1KbdoW35aD4glm9EkIuQ==}
peerDependencies:
'@tanstack/react-query': ^5.10.0
react: ^18.0.0
dependencies:
'@tanstack/query-devtools': 5.10.0
'@tanstack/react-query': 5.8.7(react-dom@18.2.0)(react@18.2.0)
'@tanstack/react-query': 5.10.0(react@18.2.0)
react: 18.2.0
dev: false
/@tanstack/react-query@5.8.7(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-RYSSMmkhbJ7tPkf8w+MSRIXQLoUCm7DRnTLDcdf+uampupnriEsob3fVWTt9oaEj+AJWEKeCErDBdZeNcAzURQ==}
/@tanstack/react-query@5.10.0(react@18.2.0):
resolution: {integrity: sha512-LeJsyXUvhq1TBsEbt3SSEaxP2Att1sv/qW588GL/bvjxPxsLUBWKGuFJ5Z1YP+/nJqVmcXJE8AtvZaaxE9rsKQ==}
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
react-native: '*'
peerDependenciesMeta:
react-dom:
optional: true
react-native:
optional: true
dependencies:
'@tanstack/query-core': 5.8.7
'@tanstack/query-core': 5.10.0
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
/@tauri-apps/api@2.0.0-alpha.11:
@ -2518,7 +2510,7 @@ packages:
prosemirror-schema-basic: 1.2.2
prosemirror-schema-list: 1.3.0
prosemirror-state: 1.4.3
prosemirror-tables: 1.3.4
prosemirror-tables: 1.3.5
prosemirror-trailing-node: 2.0.7(prosemirror-model@1.19.3)(prosemirror-state@1.4.3)(prosemirror-view@1.32.4)
prosemirror-transform: 1.8.0
prosemirror-view: 1.32.4
@ -2586,7 +2578,7 @@ packages:
optional: true
dependencies:
'@babel/generator': 7.17.7
'@babel/parser': 7.23.4
'@babel/parser': 7.23.5
'@babel/traverse': 7.23.2
'@babel/types': 7.17.0
javascript-natural-sort: 0.7.1
@ -2802,8 +2794,8 @@ packages:
resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==}
dev: false
/@types/node@20.10.0:
resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==}
/@types/node@20.10.1:
resolution: {integrity: sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==}
dependencies:
undici-types: 5.26.5
dev: true
@ -2842,8 +2834,8 @@ packages:
resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==}
dev: false
/@typescript-eslint/eslint-plugin@6.13.0(@typescript-eslint/parser@6.13.0)(eslint@8.54.0)(typescript@5.3.2):
resolution: {integrity: sha512-HTvbSd0JceI2GW5DHS3R9zbarOqjkM9XDR7zL8eCsBUO/eSiHcoNE7kSL5sjGXmVa9fjH5LCfHDXNnH4QLp7tQ==}
/@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.2):
resolution: {integrity: sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@ -2854,11 +2846,11 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.10.0
'@typescript-eslint/parser': 6.13.0(eslint@8.54.0)(typescript@5.3.2)
'@typescript-eslint/scope-manager': 6.13.0
'@typescript-eslint/type-utils': 6.13.0(eslint@8.54.0)(typescript@5.3.2)
'@typescript-eslint/utils': 6.13.0(eslint@8.54.0)(typescript@5.3.2)
'@typescript-eslint/visitor-keys': 6.13.0
'@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2)
'@typescript-eslint/scope-manager': 6.13.1
'@typescript-eslint/type-utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2)
'@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2)
'@typescript-eslint/visitor-keys': 6.13.1
debug: 4.3.4
eslint: 8.54.0
graphemer: 1.4.0
@ -2871,8 +2863,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser@6.13.0(eslint@8.54.0)(typescript@5.3.2):
resolution: {integrity: sha512-VpG+M7GNhHLI/aTDctqAV0XbzB16vf+qDX9DXuMZSe/0bahzDA9AKZB15NDbd+D9M4cDsJvfkbGOA7qiZ/bWJw==}
/@typescript-eslint/parser@6.13.1(eslint@8.54.0)(typescript@5.3.2):
resolution: {integrity: sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -2881,10 +2873,10 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 6.13.0
'@typescript-eslint/types': 6.13.0
'@typescript-eslint/typescript-estree': 6.13.0(typescript@5.3.2)
'@typescript-eslint/visitor-keys': 6.13.0
'@typescript-eslint/scope-manager': 6.13.1
'@typescript-eslint/types': 6.13.1
'@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2)
'@typescript-eslint/visitor-keys': 6.13.1
debug: 4.3.4
eslint: 8.54.0
typescript: 5.3.2
@ -2892,16 +2884,16 @@ packages:
- supports-color
dev: true
/@typescript-eslint/scope-manager@6.13.0:
resolution: {integrity: sha512-2x0K2/CujsokIv+LN2T0l5FVDMtsCjkUyYtlcY4xxnxLAW+x41LXr16duoicHpGtLhmtN7kqvuFJ3zbz00Ikhw==}
/@typescript-eslint/scope-manager@6.13.1:
resolution: {integrity: sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.13.0
'@typescript-eslint/visitor-keys': 6.13.0
'@typescript-eslint/types': 6.13.1
'@typescript-eslint/visitor-keys': 6.13.1
dev: true
/@typescript-eslint/type-utils@6.13.0(eslint@8.54.0)(typescript@5.3.2):
resolution: {integrity: sha512-YHufAmZd/yP2XdoD3YeFEjq+/Tl+myhzv+GJHSOz+ro/NFGS84mIIuLU3pVwUcauSmwlCrVXbBclkn1HfjY0qQ==}
/@typescript-eslint/type-utils@6.13.1(eslint@8.54.0)(typescript@5.3.2):
resolution: {integrity: sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -2910,8 +2902,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 6.13.0(typescript@5.3.2)
'@typescript-eslint/utils': 6.13.0(eslint@8.54.0)(typescript@5.3.2)
'@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2)
'@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2)
debug: 4.3.4
eslint: 8.54.0
ts-api-utils: 1.0.3(typescript@5.3.2)
@ -2920,13 +2912,13 @@ packages:
- supports-color
dev: true
/@typescript-eslint/types@6.13.0:
resolution: {integrity: sha512-oXg7DFxx/GmTrKXKKLSoR2rwiutOC7jCQ5nDH5p5VS6cmHE1TcPTaYQ0VPSSUvj7BnNqCgQ/NXcTBxn59pfPTQ==}
/@typescript-eslint/types@6.13.1:
resolution: {integrity: sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
/@typescript-eslint/typescript-estree@6.13.0(typescript@5.3.2):
resolution: {integrity: sha512-IT4O/YKJDoiy/mPEDsfOfp+473A9GVqXlBKckfrAOuVbTqM8xbc0LuqyFCcgeFWpqu3WjQexolgqN2CuWBYbog==}
/@typescript-eslint/typescript-estree@6.13.1(typescript@5.3.2):
resolution: {integrity: sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@ -2934,8 +2926,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 6.13.0
'@typescript-eslint/visitor-keys': 6.13.0
'@typescript-eslint/types': 6.13.1
'@typescript-eslint/visitor-keys': 6.13.1
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
@ -2946,8 +2938,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/utils@6.13.0(eslint@8.54.0)(typescript@5.3.2):
resolution: {integrity: sha512-V+txaxARI8yznDkcQ6FNRXxG+T37qT3+2NsDTZ/nKLxv6VfGrRhTnuvxPUxpVuWWr+eVeIxU53PioOXbz8ratQ==}
/@typescript-eslint/utils@6.13.1(eslint@8.54.0)(typescript@5.3.2):
resolution: {integrity: sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -2955,9 +2947,9 @@ packages:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0)
'@types/json-schema': 7.0.15
'@types/semver': 7.5.6
'@typescript-eslint/scope-manager': 6.13.0
'@typescript-eslint/types': 6.13.0
'@typescript-eslint/typescript-estree': 6.13.0(typescript@5.3.2)
'@typescript-eslint/scope-manager': 6.13.1
'@typescript-eslint/types': 6.13.1
'@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2)
eslint: 8.54.0
semver: 7.5.4
transitivePeerDependencies:
@ -2965,11 +2957,11 @@ packages:
- typescript
dev: true
/@typescript-eslint/visitor-keys@6.13.0:
resolution: {integrity: sha512-UQklteCEMCRoq/1UhKFZsHv5E4dN1wQSzJoxTfABasWk1HgJRdg1xNUve/Kv/Sdymt4x+iEzpESOqRFlQr/9Aw==}
/@typescript-eslint/visitor-keys@6.13.1:
resolution: {integrity: sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.13.0
'@typescript-eslint/types': 6.13.1
eslint-visitor-keys: 3.4.3
dev: true
@ -2983,7 +2975,7 @@ packages:
vite: ^4 || ^5
dependencies:
'@swc/core': 1.3.99
vite: 4.5.0(@types/node@20.10.0)
vite: 4.5.0(@types/node@20.10.1)
transitivePeerDependencies:
- '@swc/helpers'
dev: true
@ -3216,7 +3208,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001565
electron-to-chromium: 1.4.595
electron-to-chromium: 1.4.597
node-releases: 2.0.13
update-browserslist-db: 1.0.13(browserslist@4.22.1)
dev: true
@ -3596,8 +3588,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
/electron-to-chromium@1.4.595:
resolution: {integrity: sha512-+ozvXuamBhDOKvMNUQvecxfbyICmIAwS4GpLmR0bsiSBlGnLaOcs2Cj7J8XSbW+YEaN3Xl3ffgpm+srTUWFwFQ==}
/electron-to-chromium@1.4.597:
resolution: {integrity: sha512-0XOQNqHhg2YgRVRUrS4M4vWjFCFIP2ETXcXe/0KIQBjXE9Cpy+tgzzYfuq6HGai3hWq0YywtG+5XK8fyG08EjA==}
dev: true
/emoji-regex@9.2.2:
@ -3792,7 +3784,7 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
'@babel/runtime': 7.23.4
'@babel/runtime': 7.23.5
aria-query: 5.3.0
array-includes: 3.1.7
array.prototype.flatmap: 1.3.2
@ -4055,8 +4047,8 @@ packages:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
dev: true
/framer-motion@10.16.5(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-GEzVjOYP2MIpV9bT/GbhcsBNoImG3/2X3O/xVNWmktkv9MdJ7P/44zELm/7Fjb+O3v39SmKFnoDQB32giThzpg==}
/framer-motion@10.16.7(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-iJrX0RXxbRI3qSvDjMIp0hj+Rq6eAx+GotpX8fnZhI88Texkhlj5QHifY4BdokCh4C0oYKPsyf0wL+kwM6/taw==}
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
@ -4770,8 +4762,8 @@ packages:
resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
dev: false
/media-chrome@1.5.3:
resolution: {integrity: sha512-XiE29yNa9jyCMdshDLvSgXb0e/RJauMaTXT9kL9dTJmmZXz0RK+Ol/TsE2z4uO68x+rqZauoGEANUbDEyN8NLg==}
/media-chrome@1.5.4:
resolution: {integrity: sha512-BKWxw21Y6WZX4WX5WfwtmyMlnCKf4IrVbG7n5dWbQQew1ZFtKEUjR0xYqKDqOi1fkZkP3T2j2+MCRNuRB5YT+A==}
dev: false
/merge-stream@2.0.0:
@ -5371,8 +5363,8 @@ packages:
prosemirror-view: 1.32.4
dev: false
/prosemirror-tables@1.3.4:
resolution: {integrity: sha512-z6uLSQ1BLC3rgbGwZmpfb+xkdvD7W/UOsURDfognZFYaTtc0gsk7u/t71Yijp2eLflVpffMk6X0u0+u+MMDvIw==}
/prosemirror-tables@1.3.5:
resolution: {integrity: sha512-JSZ2cCNlApu/ObAhdPyotrjBe2cimniniTpz60YXzbL0kZ+47nEYk2LWbfKU2lKpBkUNquta2PjteoNi4YCluQ==}
dependencies:
prosemirror-keymap: 1.2.2
prosemirror-model: 1.19.3
@ -5794,8 +5786,8 @@ packages:
is-fullwidth-code-point: 4.0.0
dev: true
/sonner@1.2.3(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-LMr155izOFA8hudzuUVQT0H93VqmcF9ODP475YjjC/4INESYWN1/ioC5SYRG20jmDmwuQDR8ugP7y6ELghT6JQ==}
/sonner@1.2.4(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-WGLP2QQnomgewaCTsK7YWiLcy5n1Yj83vsL5cP4zHMmpSkmFsCYTpQKhlXJrPE5kzjwbqCkCFXcOpbKc4vaUaA==}
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
@ -5995,8 +5987,8 @@ packages:
'@popperjs/core': 2.11.8
dev: false
/tiptap-markdown@0.8.4(@tiptap/core@2.1.12):
resolution: {integrity: sha512-aCwr8cpVdZeb/2J0ffz8PvpLmQBcFE9GOxk2vB0Y9zlJEGWnSiGo1BWnwaeiyAdQqfBzV7NyNg+oz2A/MbC/Sg==}
/tiptap-markdown@0.8.7(@tiptap/core@2.1.12):
resolution: {integrity: sha512-jHnAm/yyKSCGL4xh2/73PNMI0+sZ1qrmZAda2fMwtpVs9LMYi8aYPilJLn4mL5RNrALE6jx+KRmGsq3DGpvnaQ==}
peerDependencies:
'@tiptap/core': ^2.0.3
dependencies:
@ -6251,13 +6243,13 @@ packages:
debug: 4.3.4
globrex: 0.1.2
tsconfck: 2.1.2(typescript@5.3.2)
vite: 4.5.0(@types/node@20.10.0)
vite: 4.5.0(@types/node@20.10.1)
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/vite@4.5.0(@types/node@20.10.0):
/vite@4.5.0(@types/node@20.10.1):
resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
@ -6285,7 +6277,7 @@ packages:
terser:
optional: true
dependencies:
'@types/node': 20.10.0
'@types/node': 20.10.1
esbuild: 0.18.20
postcss: 8.4.31
rollup: 3.29.4

40
src-tauri/Cargo.lock generated
View File

@ -382,11 +382,11 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "atomic-write-file"
version = "0.1.0"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c232177ba50b16fe7a4588495bd474a62a9e45a8e4ca6fd7d0b7ac29d164631e"
checksum = "9ae364a6c1301604bbc6dfbf8c385c47ff82301dd01eef506195a029196d8d04"
dependencies = [
"nix 0.26.4",
"nix 0.27.1",
"rand 0.8.5",
]
@ -731,9 +731,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.4.9"
version = "4.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46ca43acc1b21c6cc2d1d3129c19e323a613935b5bc28fb3b33b5b2e5fb00030"
checksum = "41fffed7514f420abec6d183b1d3acfd9099c79c3a10a06ade4f8203f1411272"
dependencies = [
"clap_builder",
"clap_derive",
@ -1330,12 +1330,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
version = "0.3.7"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8"
checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
dependencies = [
"libc",
"windows-sys 0.48.0",
"windows-sys 0.52.0",
]
[[package]]
@ -2961,7 +2961,17 @@ dependencies = [
"cfg-if",
"libc",
"memoffset 0.7.1",
"pin-utils",
]
[[package]]
name = "nix"
version = "0.27.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
dependencies = [
"bitflags 2.4.1",
"cfg-if",
"libc",
]
[[package]]
@ -3993,9 +4003,9 @@ dependencies = [
[[package]]
name = "rsa"
version = "0.9.4"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a3211b01eea83d80687da9eef70e39d65144a3894866a5153a2723e425a157f"
checksum = "af6c4b23d99685a1408194da11270ef8e9809aff951cc70ec9b17350b087e474"
dependencies = [
"const-oid",
"digest",
@ -4470,9 +4480,9 @@ dependencies = [
[[package]]
name = "spki"
version = "0.7.2"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
dependencies = [
"base64ct",
"der",
@ -6005,9 +6015,9 @@ dependencies = [
[[package]]
name = "web-sys"
version = "0.3.65"
version = "0.3.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85"
checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
dependencies = [
"js-sys",
"wasm-bindgen",

View File

@ -35,18 +35,18 @@ export function HomeScreen() {
queryFn: async () => {
const dbWidgets = await db.getWidgets();
const defaultWidgets = [
{
id: '9998',
title: 'Notification',
content: '',
kind: WIDGET_KIND.notification,
},
{
id: '9999',
title: 'Newsfeed',
content: '',
kind: WIDGET_KIND.newsfeed,
},
{
id: '9998',
title: 'Notification',
content: '',
kind: WIDGET_KIND.notification,
},
];
return [...defaultWidgets, ...dbWidgets];

View File

@ -66,7 +66,7 @@ export const NDKInstance = () => {
// connect
await instance.connect();
const tmpFetcher = NostrFetcher.withCustomPool(ndkAdapter(instance));
const _fetcher = NostrFetcher.withCustomPool(ndkAdapter(instance));
// update account's metadata
if (db.account) {
@ -88,7 +88,7 @@ export const NDKInstance = () => {
const rootIds = new Set();
const dedupQueue = new Set();
const events = await tmpFetcher.fetchLatestEvents(
const events = await _fetcher.fetchLatestEvents(
explicitRelayUrls,
{
kinds: [NDKKind.Text, NDKKind.Repost],
@ -127,7 +127,7 @@ export const NDKInstance = () => {
signal: AbortSignal;
pageParam: number;
}) => {
const events = await tmpFetcher.fetchLatestEvents(
const events = await _fetcher.fetchLatestEvents(
explicitRelayUrls,
{
kinds: [NDKKind.Text, NDKKind.Repost, NDKKind.Reaction, NDKKind.Zap],
@ -147,7 +147,7 @@ export const NDKInstance = () => {
}
setNDK(instance);
setFetcher(tmpFetcher);
setFetcher(_fetcher);
setRelayUrls(explicitRelayUrls);
} catch (e) {
const yes = await ask(

View File

@ -73,7 +73,7 @@ export class LumeStorage {
[pubkey]
);
if (results.length < 1) return null;
if (!results.length) return null;
if (typeof results[0].profile === 'string')
results[0].profile = JSON.parse(results[0].profile);
@ -87,7 +87,7 @@ export class LumeStorage {
[id]
);
if (results.length < 1) return null;
if (!results.length) return null;
return results[0];
}
@ -98,7 +98,7 @@ export class LumeStorage {
`SELECT * FROM ndk_events WHERE id IN (${idsArr}) ORDER BY id;`
);
if (results.length < 1) return [];
if (!results.length) return [];
return results;
}
@ -108,7 +108,7 @@ export class LumeStorage {
[pubkey]
);
if (results.length < 1) return [];
if (!results.length) return [];
return results;
}
@ -118,7 +118,7 @@ export class LumeStorage {
[kind]
);
if (results.length < 1) return [];
if (!results.length) return [];
return results;
}
@ -128,7 +128,7 @@ export class LumeStorage {
[kind, pubkey]
);
if (results.length < 1) return [];
if (!results.length) return [];
return results;
}
@ -138,7 +138,7 @@ export class LumeStorage {
[tagValue]
);
if (results.length < 1) return [];
if (!results.length) return [];
return results;
}

View File

@ -12,6 +12,9 @@ const queryClient = new QueryClient({
defaultOptions: {
queries: {
gcTime: 1000 * 60 * 60 * 24, // 24 hours
queries: {
retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 10000), // 10 seconds
},
},
},
});
@ -22,7 +25,7 @@ const root = createRoot(container);
root.render(
<QueryClientProvider client={queryClient}>
<ReactQueryDevtools initialIsOpen={false} />
<Toaster position="top-center" closeButton theme="system" />
<Toaster position="top-center" theme="system" closeButton />
<StorageProvider>
<NDKProvider>
<App />

View File

@ -7,14 +7,14 @@ export function TextKind({ content, textmode }: { content: string; textmode?: bo
if (textmode) {
return (
<div className="break-p line-clamp-3 select-text leading-normal text-neutral-900 dark:text-neutral-100">
<div className="line-clamp-3 select-text leading-normal text-neutral-900 dark:text-neutral-100">
{parsedContent}
</div>
);
}
return (
<div className={'min-w-0 px-3'}>
<div className="min-w-0 px-3">
<div className="break-p select-text leading-normal text-neutral-900 dark:text-neutral-100">
{parsedContent}
</div>

View File

@ -1,109 +1,158 @@
import { NDKEvent, NDKKind } from '@nostr-dev-kit/ndk';
import { memo } from 'react';
import { ShareIcon } from '@shared/icons';
import {
MemoizedArticleKind,
MemoizedFileKind,
MemoizedTextKind,
NoteSkeleton,
} from '@shared/notes';
import { ReplyIcon, RepostIcon } from '@shared/icons';
import { ChildNote, TextKind } from '@shared/notes';
import { User } from '@shared/user';
import { WIDGET_KIND } from '@stores/constants';
import { formatCreatedAt } from '@utils/createdAt';
import { useEvent } from '@utils/hooks/useEvent';
import { useNostr } from '@utils/hooks/useNostr';
import { useWidget } from '@utils/hooks/useWidget';
export function NotifyNote({ event }: { event: NDKEvent }) {
const createdAt = formatCreatedAt(event.created_at, false);
const rootEventId = event.tags.find((el) => el[0] === 'e')?.[1];
const { status, data } = useEvent(rootEventId);
const { getEventThread } = useNostr();
const { addWidget } = useWidget();
const renderKind = (event: NDKEvent) => {
switch (event.kind) {
case NDKKind.Text:
return <MemoizedTextKind key={event.id} content={event.content} textmode />;
case NDKKind.Article:
return <MemoizedArticleKind key={event.id} id={event.id} tags={event.tags} />;
case 1063:
return <MemoizedFileKind key={event.id} tags={event.tags} />;
default:
return (
<div className="break-p line-clamp-3 select-text leading-normal text-neutral-900 dark:text-neutral-100">
{event.content}
</div>
);
}
};
const renderText = (kind: number) => {
switch (kind) {
case NDKKind.Text:
return 'replied';
case NDKKind.Reaction: {
return `reacted your post`;
}
case NDKKind.Repost:
return 'reposted your post';
case NDKKind.Zap:
return 'zapped your post';
default:
return 'unknown';
}
};
if (status === 'pending') {
return (
<div className="h-min w-full px-3 pb-3">
<div className="relative overflow-hidden rounded-xl bg-white/10 px-3 py-3 backdrop-blur-xl">
<NoteSkeleton />
</div>
</div>
);
}
const thread = getEventThread(event.tags);
const createdAt = formatCreatedAt(event.created_at, false);
if (event.kind === NDKKind.Reaction) {
return (
<div className="mb-3 h-min w-full px-3">
<div className="flex flex-col gap-2 rounded-xl bg-neutral-50 p-3 dark:bg-neutral-950">
<div className="flex h-10 items-center justify-between">
<div className="relative flex w-full items-center gap-2 px-3 pt-2">
<div className="absolute -left-0.5 -top-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-blue-100 text-xs ring-2 ring-neutral-50 dark:bg-blue-900 dark:ring-neutral-950">
{event.kind === 7 ? (event.content === '+' ? '👍' : event.content) : '⚡️'}
{event.content === '+' ? '👍' : event.content}
</div>
<div className="flex flex-1 items-center justify-between">
<div className="inline-flex items-center gap-1.5">
<User pubkey={event.pubkey} variant="notify" />
<p className="text-neutral-900 dark:text-neutral-100">
{renderText(event.kind)}
</p>
<p className="text-neutral-700 dark:text-neutral-300">reacted</p>
</div>
<div className="text-neutral-500 dark:text-neutral-400">{createdAt}</div>
</div>
</div>
</div>
<div className="flex gap-2">
<div className="flex-1">{data ? renderKind(data) : <p>Loading...</p>}</div>
<div className="flex flex-col gap-2">
<div className="w-full px-3">
<div className="flex h-min w-full flex-col gap-3 rounded-lg bg-neutral-100 p-3 dark:bg-neutral-900">
{thread.rootEventId ? <ChildNote id={thread.rootEventId} /> : null}
</div>
</div>
<button
type="button"
onClick={() =>
addWidget.mutate({
kind: WIDGET_KIND.thread,
title: 'Thread',
content: data.id,
content: thread.rootEventId,
})
}
className="inline-flex min-h-full w-10 shrink-0 items-center justify-center rounded-lg text-neutral-600 hover:text-blue-500 dark:text-neutral-400"
className="self-start text-blue-500 hover:text-blue-600"
>
<ShareIcon className="h-5 w-5" />
Show original post
</button>
</div>
</div>
</div>
);
}
if (event.kind === NDKKind.Repost) {
return (
<div className="mb-3 h-min w-full px-3">
<div className="flex flex-col gap-2 rounded-xl bg-neutral-50 p-3 dark:bg-neutral-950">
<div className="flex h-10 items-center justify-between">
<div className="relative flex w-full items-center gap-2 px-3 pt-2">
<div className="absolute -left-0.5 -top-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-teal-500 text-xs ring-2 ring-neutral-50 dark:ring-neutral-950">
<RepostIcon className="h-4 w-4 text-white" />
</div>
<div className="flex flex-1 items-center justify-between">
<div className="inline-flex items-center gap-1.5">
<User pubkey={event.pubkey} variant="notify" />
<p className="text-neutral-700 dark:text-neutral-300">reposted</p>
</div>
<div className="text-neutral-500 dark:text-neutral-400">{createdAt}</div>
</div>
</div>
</div>
<div className="flex flex-col gap-2">
<div className="w-full px-3">
<div className="flex h-min w-full flex-col gap-3 rounded-lg bg-neutral-100 p-3 dark:bg-neutral-900">
{thread.rootEventId ? <ChildNote id={thread.rootEventId} /> : null}
</div>
</div>
<button
type="button"
onClick={() =>
addWidget.mutate({
kind: WIDGET_KIND.thread,
title: 'Thread',
content: thread.rootEventId,
})
}
className="self-start text-blue-500 hover:text-blue-600"
>
Show original post
</button>
</div>
</div>
</div>
);
}
if (event.kind === NDKKind.Text) {
return (
<div className="mb-3 h-min w-full px-3">
<div className="flex flex-col gap-2 rounded-xl bg-neutral-50 p-3 dark:bg-neutral-950">
<div className="flex h-10 items-center justify-between">
<div className="relative flex w-full items-center gap-2 px-3 pt-2">
<div className="absolute -left-0.5 -top-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-blue-500 text-xs ring-2 ring-neutral-50 dark:ring-neutral-950">
<ReplyIcon className="h-4 w-4 text-white" />
</div>
<div className="flex flex-1 items-center justify-between">
<div className="inline-flex items-center gap-1.5">
<User pubkey={event.pubkey} variant="notify" />
<p className="text-neutral-700 dark:text-neutral-300">replied</p>
</div>
<div className="text-neutral-500 dark:text-neutral-400">{createdAt}</div>
</div>
</div>
</div>
<div className="flex flex-col gap-2">
<div className="w-full px-3">
<div className="flex h-min w-full flex-col gap-3 rounded-lg bg-neutral-100 p-3 dark:bg-neutral-900">
{thread.replyEventId ? (
<ChildNote id={thread.replyEventId} />
) : thread.rootEventId ? (
<ChildNote id={thread.rootEventId} isRoot />
) : null}
<button
type="button"
onClick={() =>
addWidget.mutate({
kind: WIDGET_KIND.thread,
title: 'Thread',
content: thread.replyEventId
? thread.replyEventId
: thread.rootEventId,
})
}
className="self-start text-blue-500 hover:text-blue-600"
>
Show full thread
</button>
</div>
</div>
<TextKind content={event.content} textmode />
</div>
</div>
</div>
);
}
}
export const MemoizedNotifyNote = memo(NotifyNote);

View File

@ -50,7 +50,7 @@ export function NoteReplyForm({ rootEvent }: { rootEvent: NDKEvent }) {
value={value}
onChange={(e) => setValue(e.target.value)}
placeholder="Reply to this post..."
className="h-28 w-full resize-none rounded-t-xl bg-neutral-100 px-5 py-4 text-neutral-900 !outline-none placeholder:text-neutral-600 dark:bg-neutral-900 dark:text-neutral-100 dark:placeholder:text-neutral-400"
className="h-28 w-full resize-none rounded-t-xl border-transparent bg-neutral-100 px-5 py-4 text-neutral-900 !outline-none placeholder:text-neutral-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:bg-neutral-900 dark:text-neutral-100 dark:placeholder:text-neutral-400 dark:focus:ring-blue-800"
spellCheck={false}
/>
<div className="inline-flex items-center justify-end gap-2 rounded-b-xl p-2">

View File

@ -1,10 +1,11 @@
import { NDKUserProfile } from '@nostr-dev-kit/ndk';
import { useQuery } from '@tanstack/react-query';
import { useQuery, useQueryClient } from '@tanstack/react-query';
import { nip19 } from 'nostr-tools';
import { useNDK } from '@libs/ndk/provider';
export function useProfile(pubkey: string, embed?: string) {
const queryClient = useQueryClient();
const { ndk } = useNDK();
const {
status,
@ -13,24 +14,34 @@ export function useProfile(pubkey: string, embed?: string) {
} = useQuery({
queryKey: ['user', pubkey],
queryFn: async () => {
// parse data from nostr.band api
if (embed) {
const profile: NDKUserProfile = JSON.parse(embed);
return profile;
}
// get clean pubkey without any special characters
let hexstring = pubkey.replace(/[^a-zA-Z0-9]/g, '');
if (hexstring.startsWith('npub1'))
hexstring = nip19.decode(hexstring).data as string;
if (hexstring.startsWith('npub1') || hexstring.startsWith('nprofile1')) {
const decoded = nip19.decode(hexstring);
if (decoded.type === 'nprofile') hexstring = decoded.data.pubkey;
if (decoded.type === 'npub') hexstring = decoded.data;
}
const user = ndk.getUser({ pubkey: hexstring });
if (!user) return Promise.reject(new Error("user's profile not found"));
const profile = await user.fetchProfile();
return await user.fetchProfile();
if (!profile)
throw new Error(
`Cannot get metadata for ${pubkey}, will be retry after 10 seconds`
);
return profile;
},
staleTime: Infinity,
refetchOnMount: false,
initialData: () => queryClient.getQueryData(['user', pubkey]),
refetchOnWindowFocus: false,
refetchOnReconnect: false,
retry: 2,
});
return { status, user, error };