mirror of
https://github.com/lumehq/lume.git
synced 2025-03-28 02:31:49 +01:00
polish
This commit is contained in:
parent
36b2acba6a
commit
bb089bb259
14
package.json
14
package.json
@ -19,16 +19,12 @@
|
||||
"dependencies": {
|
||||
"@ctrl/magnet-link": "^3.1.2",
|
||||
"@headlessui/react": "^1.7.16",
|
||||
"@noble/ciphers": "^0.2.0",
|
||||
"@noble/curves": "^1.1.0",
|
||||
"@noble/hashes": "^1.3.1",
|
||||
"@nostr-dev-kit/ndk": "^0.8.7",
|
||||
"@nostr-dev-kit/ndk": "^0.8.11",
|
||||
"@nostr-fetch/adapter-ndk": "^0.11.0",
|
||||
"@radix-ui/react-collapsible": "^1.0.3",
|
||||
"@radix-ui/react-dialog": "^1.0.4",
|
||||
"@radix-ui/react-popover": "^1.0.6",
|
||||
"@radix-ui/react-tooltip": "^1.0.6",
|
||||
"@scure/base": "^1.1.1",
|
||||
"@tanstack/react-query": "^4.32.6",
|
||||
"@tanstack/react-query-devtools": "^4.32.6",
|
||||
"@tanstack/react-virtual": "3.0.0-beta.54",
|
||||
@ -63,7 +59,7 @@
|
||||
"html-to-text": "^9.0.5",
|
||||
"immer": "^10.0.2",
|
||||
"light-bolt11-decoder": "^3.0.0",
|
||||
"lru-cache": "^10.0.0",
|
||||
"lru-cache": "^10.0.1",
|
||||
"nostr-fetch": "^0.12.2",
|
||||
"nostr-tools": "^1.14.0",
|
||||
"qrcode.react": "^3.1.0",
|
||||
@ -73,7 +69,7 @@
|
||||
"react-hotkeys-hook": "^4.4.1",
|
||||
"react-markdown": "^8.0.7",
|
||||
"react-player": "^2.12.0",
|
||||
"react-router-dom": "^6.14.2",
|
||||
"react-router-dom": "^6.15.0",
|
||||
"react-string-replace": "^1.1.1",
|
||||
"react-virtuoso": "^4.5.0",
|
||||
"remark-gfm": "^3.0.1",
|
||||
@ -85,7 +81,7 @@
|
||||
"@tauri-apps/cli": "2.0.0-alpha.10",
|
||||
"@trivago/prettier-plugin-sort-imports": "^4.2.0",
|
||||
"@types/html-to-text": "^9.0.1",
|
||||
"@types/node": "^18.17.4",
|
||||
"@types/node": "^18.17.5",
|
||||
"@types/react": "^18.2.20",
|
||||
"@types/react-dom": "^18.2.7",
|
||||
"@types/youtube-player": "^5.5.7",
|
||||
@ -97,7 +93,7 @@
|
||||
"cross-env": "^7.0.3",
|
||||
"csstype": "^3.1.2",
|
||||
"encoding": "^0.1.13",
|
||||
"eslint": "^8.46.0",
|
||||
"eslint": "^8.47.0",
|
||||
"eslint-config-prettier": "^8.10.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.7.1",
|
||||
"eslint-plugin-react": "^7.33.1",
|
||||
|
364
pnpm-lock.yaml
generated
364
pnpm-lock.yaml
generated
@ -7,21 +7,12 @@ dependencies:
|
||||
'@headlessui/react':
|
||||
specifier: ^1.7.16
|
||||
version: 1.7.16(react-dom@18.2.0)(react@18.2.0)
|
||||
'@noble/ciphers':
|
||||
specifier: ^0.2.0
|
||||
version: 0.2.0
|
||||
'@noble/curves':
|
||||
specifier: ^1.1.0
|
||||
version: 1.1.0
|
||||
'@noble/hashes':
|
||||
specifier: ^1.3.1
|
||||
version: 1.3.1
|
||||
'@nostr-dev-kit/ndk':
|
||||
specifier: ^0.8.7
|
||||
version: 0.8.7(typescript@4.9.5)
|
||||
specifier: ^0.8.11
|
||||
version: 0.8.11(typescript@4.9.5)
|
||||
'@nostr-fetch/adapter-ndk':
|
||||
specifier: ^0.11.0
|
||||
version: 0.11.0(@nostr-dev-kit/ndk@0.8.7)(nostr-fetch@0.12.2)
|
||||
version: 0.11.0(@nostr-dev-kit/ndk@0.8.11)(nostr-fetch@0.12.2)
|
||||
'@radix-ui/react-collapsible':
|
||||
specifier: ^1.0.3
|
||||
version: 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
|
||||
@ -34,9 +25,6 @@ dependencies:
|
||||
'@radix-ui/react-tooltip':
|
||||
specifier: ^1.0.6
|
||||
version: 1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@scure/base':
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1
|
||||
'@tanstack/react-query':
|
||||
specifier: ^4.32.6
|
||||
version: 4.32.6(react-dom@18.2.0)(react@18.2.0)
|
||||
@ -51,46 +39,46 @@ dependencies:
|
||||
version: 2.0.0-alpha.5
|
||||
'@tauri-apps/plugin-app':
|
||||
specifier: github:tauri-apps/tauri-plugin-app#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-app/dbfef70e44dc82156e79301742b656fd797a1473
|
||||
version: github.com/tauri-apps/tauri-plugin-app/f8b21651dfa42f42e080488568010ff3bbeb7350
|
||||
'@tauri-apps/plugin-autostart':
|
||||
specifier: github:tauri-apps/tauri-plugin-autostart#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-autostart/33968b8b0aae857f045aeb17741bcff27440f6d3
|
||||
version: github.com/tauri-apps/tauri-plugin-autostart/0b6ccaa31eccdeec47ca0425f7696846aa3a5f46
|
||||
'@tauri-apps/plugin-clipboard-manager':
|
||||
specifier: github:tauri-apps/tauri-plugin-clipboard-manager#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-clipboard-manager/549ca993a47ae7aafff635d99fc3e6dc124b9181
|
||||
version: github.com/tauri-apps/tauri-plugin-clipboard-manager/32e302b07e3ea11b59c55d4fc100516ac49a4968
|
||||
'@tauri-apps/plugin-dialog':
|
||||
specifier: github:tauri-apps/tauri-plugin-dialog#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-dialog/2a358d18e865b31c6878f91bd068cfe36d00d639
|
||||
version: github.com/tauri-apps/tauri-plugin-dialog/2d74ae009691b50e6498fb814a77c59b6798f2ac
|
||||
'@tauri-apps/plugin-fs':
|
||||
specifier: github:tauri-apps/tauri-plugin-fs#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-fs/60e8dec66d2582cc39ebdd7b7101e9c96c23e52a
|
||||
version: github.com/tauri-apps/tauri-plugin-fs/0dd45ead4ca3cc8b426614fa47ad9227e9ed2053
|
||||
'@tauri-apps/plugin-http':
|
||||
specifier: github:tauri-apps/tauri-plugin-http#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-http/6d45e3ecae761f1990ed6366e6138c69775c58d8
|
||||
version: github.com/tauri-apps/tauri-plugin-http/27b519b63419db048d2d30945ff34b2234975ccd
|
||||
'@tauri-apps/plugin-notification':
|
||||
specifier: github:tauri-apps/tauri-plugin-notification#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-notification/9989c95217af5abcf847e790cb74dda485c0459a
|
||||
version: github.com/tauri-apps/tauri-plugin-notification/7878980ee8cb97437f343cc31b97a1b666e324d4
|
||||
'@tauri-apps/plugin-os':
|
||||
specifier: github:tauri-apps/tauri-plugin-os#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-os/a63d34fddb1bd97d6a634a1881e5cc26910e115f
|
||||
version: github.com/tauri-apps/tauri-plugin-os/e4dda0ceff72cbc762937e79c104522a8866b840
|
||||
'@tauri-apps/plugin-process':
|
||||
specifier: github:tauri-apps/tauri-plugin-process#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-process/ed3f8f78ddecc72c926239f5a10ec6ce1b8c353e
|
||||
version: github.com/tauri-apps/tauri-plugin-process/eec5dc8d37c80b2c1ebb7eb8e4cb976eed221a9d
|
||||
'@tauri-apps/plugin-shell':
|
||||
specifier: github:tauri-apps/tauri-plugin-shell#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-shell/e538c5178508060d6fc1d1f8b03fa8f40fb53626
|
||||
version: github.com/tauri-apps/tauri-plugin-shell/f76cb0019364f40b9411eac5f5fdf6fd04b3e538
|
||||
'@tauri-apps/plugin-sql':
|
||||
specifier: github:tauri-apps/tauri-plugin-sql#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-sql/0591e9f63e0f86be79c209f4bcb564ccce4bd05c
|
||||
version: github.com/tauri-apps/tauri-plugin-sql/62eb3e4c9f084c1238cf7ab00d47148c034be207
|
||||
'@tauri-apps/plugin-store':
|
||||
specifier: github:tauri-apps/tauri-plugin-store#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-store/2f5e470ba6d746b54da46fcb3eb10325fa224351
|
||||
version: github.com/tauri-apps/tauri-plugin-store/ddb10b0776a670028c1a56bbe922aba02fd32484
|
||||
'@tauri-apps/plugin-stronghold':
|
||||
specifier: github:tauri-apps/tauri-plugin-stronghold#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-stronghold/a87861766f3520b5fc1ea1f34665d814bbee9b06
|
||||
version: github.com/tauri-apps/tauri-plugin-stronghold/9b2878280d1ab9da3d1a56c6f73bc1384b93f705
|
||||
'@tauri-apps/plugin-upload':
|
||||
specifier: github:tauri-apps/tauri-plugin-upload#v2
|
||||
version: github.com/tauri-apps/tauri-plugin-upload/3c17e7170f54aa3bad3ee4c534f423ace2b06552
|
||||
version: github.com/tauri-apps/tauri-plugin-upload/58fa4ca197cfd55292f77ede59f241014806963a
|
||||
'@tauri-apps/plugin-window':
|
||||
specifier: 2.0.0-alpha.0
|
||||
version: 2.0.0-alpha.0
|
||||
@ -140,8 +128,8 @@ dependencies:
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.0
|
||||
lru-cache:
|
||||
specifier: ^10.0.0
|
||||
version: 10.0.0
|
||||
specifier: ^10.0.1
|
||||
version: 10.0.1
|
||||
nostr-fetch:
|
||||
specifier: ^0.12.2
|
||||
version: 0.12.2
|
||||
@ -170,8 +158,8 @@ dependencies:
|
||||
specifier: ^2.12.0
|
||||
version: 2.12.0(react@18.2.0)
|
||||
react-router-dom:
|
||||
specifier: ^6.14.2
|
||||
version: 6.14.2(react-dom@18.2.0)(react@18.2.0)
|
||||
specifier: ^6.15.0
|
||||
version: 6.15.0(react-dom@18.2.0)(react@18.2.0)
|
||||
react-string-replace:
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1
|
||||
@ -202,8 +190,8 @@ devDependencies:
|
||||
specifier: ^9.0.1
|
||||
version: 9.0.1
|
||||
'@types/node':
|
||||
specifier: ^18.17.4
|
||||
version: 18.17.4
|
||||
specifier: ^18.17.5
|
||||
version: 18.17.5
|
||||
'@types/react':
|
||||
specifier: ^18.2.20
|
||||
version: 18.2.20
|
||||
@ -215,10 +203,10 @@ devDependencies:
|
||||
version: 5.5.7
|
||||
'@typescript-eslint/eslint-plugin':
|
||||
specifier: ^5.62.0
|
||||
version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@4.9.5)
|
||||
version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/parser':
|
||||
specifier: ^5.62.0
|
||||
version: 5.62.0(eslint@8.46.0)(typescript@4.9.5)
|
||||
version: 5.62.0(eslint@8.47.0)(typescript@4.9.5)
|
||||
'@vitejs/plugin-react-swc':
|
||||
specifier: ^3.3.2
|
||||
version: 3.3.2(vite@4.4.9)
|
||||
@ -238,20 +226,20 @@ devDependencies:
|
||||
specifier: ^0.1.13
|
||||
version: 0.1.13
|
||||
eslint:
|
||||
specifier: ^8.46.0
|
||||
version: 8.46.0
|
||||
specifier: ^8.47.0
|
||||
version: 8.47.0
|
||||
eslint-config-prettier:
|
||||
specifier: ^8.10.0
|
||||
version: 8.10.0(eslint@8.46.0)
|
||||
version: 8.10.0(eslint@8.47.0)
|
||||
eslint-plugin-jsx-a11y:
|
||||
specifier: ^6.7.1
|
||||
version: 6.7.1(eslint@8.46.0)
|
||||
version: 6.7.1(eslint@8.47.0)
|
||||
eslint-plugin-react:
|
||||
specifier: ^7.33.1
|
||||
version: 7.33.1(eslint@8.46.0)
|
||||
version: 7.33.1(eslint@8.47.0)
|
||||
eslint-plugin-simple-import-sort:
|
||||
specifier: ^10.0.0
|
||||
version: 10.0.0(eslint@8.46.0)
|
||||
version: 10.0.0(eslint@8.47.0)
|
||||
husky:
|
||||
specifier: ^8.0.3
|
||||
version: 8.0.3
|
||||
@ -281,7 +269,7 @@ devDependencies:
|
||||
version: 4.9.5
|
||||
vite:
|
||||
specifier: ^4.4.9
|
||||
version: 4.4.9(@types/node@18.17.4)
|
||||
version: 4.4.9(@types/node@18.17.5)
|
||||
vite-plugin-top-level-await:
|
||||
specifier: ^1.3.1
|
||||
version: 1.3.1(vite@4.4.9)
|
||||
@ -826,27 +814,27 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@eslint-community/eslint-utils@4.4.0(eslint@8.46.0):
|
||||
/@eslint-community/eslint-utils@4.4.0(eslint@8.47.0):
|
||||
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
|
||||
dependencies:
|
||||
eslint: 8.46.0
|
||||
eslint-visitor-keys: 3.4.2
|
||||
eslint: 8.47.0
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
/@eslint-community/regexpp@4.6.2:
|
||||
resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==}
|
||||
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
|
||||
|
||||
/@eslint/eslintrc@2.1.1:
|
||||
resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==}
|
||||
/@eslint/eslintrc@2.1.2:
|
||||
resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dependencies:
|
||||
ajv: 6.12.6
|
||||
debug: 4.3.4
|
||||
espree: 9.6.1
|
||||
globals: 13.20.0
|
||||
globals: 13.21.0
|
||||
ignore: 5.2.4
|
||||
import-fresh: 3.3.0
|
||||
js-yaml: 4.1.0
|
||||
@ -855,8 +843,8 @@ packages:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/@eslint/js@8.46.0:
|
||||
resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==}
|
||||
/@eslint/js@8.47.0:
|
||||
resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
||||
/@floating-ui/core@1.4.1:
|
||||
@ -965,10 +953,6 @@ packages:
|
||||
'@jridgewell/sourcemap-codec': 1.4.15
|
||||
dev: true
|
||||
|
||||
/@noble/ciphers@0.2.0:
|
||||
resolution: {integrity: sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw==}
|
||||
dev: false
|
||||
|
||||
/@noble/curves@1.1.0:
|
||||
resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==}
|
||||
dependencies:
|
||||
@ -1006,20 +990,20 @@ packages:
|
||||
'@nodelib/fs.scandir': 2.1.5
|
||||
fastq: 1.15.0
|
||||
|
||||
/@nostr-dev-kit/ndk@0.8.7(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-42gj4WHYm8ZDETBoBVEOJq/An4Pvmj6LVYghgwYUualXqG07NPh8uImbEew9fdbD+NKQnPA+TfzLhq83dUWW8Q==}
|
||||
/@nostr-dev-kit/ndk@0.8.11(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-tWUycJN25GUWzMjby7rnv5ekvFlEROaNaFlCYtnFLLS0RzIm/cyj6PlhKqXV4NvN3miG+PdYMsK+ZrG3FJCBgQ==}
|
||||
dependencies:
|
||||
'@noble/hashes': 1.3.1
|
||||
'@noble/secp256k1': 2.0.0
|
||||
'@scure/base': 1.1.1
|
||||
'@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@4.9.5)
|
||||
debug: 4.3.4
|
||||
esbuild: 0.17.19
|
||||
esbuild-plugin-alias: 0.2.1
|
||||
eslint: 8.46.0
|
||||
eslint-config-prettier: 8.10.0(eslint@8.46.0)
|
||||
eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)
|
||||
eslint: 8.47.0
|
||||
eslint-config-prettier: 8.10.0(eslint@8.47.0)
|
||||
eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)
|
||||
esm-loader-typescript: 1.0.5
|
||||
eventemitter3: 5.0.1
|
||||
light-bolt11-decoder: 3.0.0
|
||||
@ -1035,13 +1019,13 @@ packages:
|
||||
- typescript
|
||||
dev: false
|
||||
|
||||
/@nostr-fetch/adapter-ndk@0.11.0(@nostr-dev-kit/ndk@0.8.7)(nostr-fetch@0.12.2):
|
||||
/@nostr-fetch/adapter-ndk@0.11.0(@nostr-dev-kit/ndk@0.8.11)(nostr-fetch@0.12.2):
|
||||
resolution: {integrity: sha512-Otl7SEzm9ecqyHB10bpYXBu1qpqJEnipp7dZ4qcA9LeJAtM38fnYKUD34HX0JXA9EDjtc6VS5UNZe544xC9GCg==}
|
||||
peerDependencies:
|
||||
'@nostr-dev-kit/ndk': ^0.5.0
|
||||
nostr-fetch: ^0.11.0
|
||||
dependencies:
|
||||
'@nostr-dev-kit/ndk': 0.8.7(typescript@4.9.5)
|
||||
'@nostr-dev-kit/ndk': 0.8.11(typescript@4.9.5)
|
||||
'@nostr-fetch/kernel': 0.11.0
|
||||
nostr-fetch: 0.12.2
|
||||
dev: false
|
||||
@ -1591,9 +1575,9 @@ packages:
|
||||
type-fest: 2.19.0
|
||||
dev: false
|
||||
|
||||
/@remix-run/router@1.7.2:
|
||||
resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==}
|
||||
engines: {node: '>=14'}
|
||||
/@remix-run/router@1.8.0:
|
||||
resolution: {integrity: sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
dev: false
|
||||
|
||||
/@rollup/plugin-virtual@3.0.1:
|
||||
@ -1636,8 +1620,8 @@ packages:
|
||||
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
||||
dev: false
|
||||
|
||||
/@swc/core-darwin-arm64@1.3.75:
|
||||
resolution: {integrity: sha512-anDnx9L465lGbjB2mvcV54NGHW6illr0IDvVV7JmkabYUVneaRdQvTr0tbHv3xjHnjrK1wuwVOHKV0LcQF2tnQ==}
|
||||
/@swc/core-darwin-arm64@1.3.76:
|
||||
resolution: {integrity: sha512-ovviEhZ/1E81Z9OGrO0ivLWk4VCa3I3ZzM+cd3gugglRRwVwtlIaoIYqY5S3KiCAupDd1+UCl5X7Vbio7a/V8g==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
@ -1645,8 +1629,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-darwin-x64@1.3.75:
|
||||
resolution: {integrity: sha512-dIHDfrLmeZfr2xwi1whO7AmzdI3HdamgvxthaL+S8L1x8TeczAZEvsmZTjy3s8p3Va4rbGXcb3+uBhmfkqCbfw==}
|
||||
/@swc/core-darwin-x64@1.3.76:
|
||||
resolution: {integrity: sha512-tcySTDqs0SHCebtW35sCdcLWsmTEo7bEwx0gNL/spetqVT9fpFi6qU8qcnt7i2KaZHbeNl9g1aadu+Yrni+GzA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
@ -1654,8 +1638,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-arm-gnueabihf@1.3.75:
|
||||
resolution: {integrity: sha512-qeJmvMGrjC6xt+G0R4kVqqxvlhxJx7tTzhcEoWgLJnfvGZiF6SJdsef4OSM7HuReXrlBoEtJbfGPrLJtbV+C0w==}
|
||||
/@swc/core-linux-arm-gnueabihf@1.3.76:
|
||||
resolution: {integrity: sha512-apgzpGWy1AwoMF4urAAASsAjE7rEzZFIF+p6utuxhS7cNHzE0AyEVDYJbo+pzBdlZ8orBdzzsHtFwoEgKOjebA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
@ -1663,8 +1647,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-arm64-gnu@1.3.75:
|
||||
resolution: {integrity: sha512-sqA9JqHEJBF4AdNuwo5zRqq0HC3l31SPsG9zpRa4nRzG5daBBJ80H7fi6PZQud1rfNNq+Q08gjYrdrxwHstvjw==}
|
||||
/@swc/core-linux-arm64-gnu@1.3.76:
|
||||
resolution: {integrity: sha512-c3c0zz6S0eludqidDpuqbadE0WT3OZczyQxe9Vw8lFFXES85mvNGtwYzyGK2o7TICpsuHrndwDIoYpmpWk879g==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
@ -1672,8 +1656,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-arm64-musl@1.3.75:
|
||||
resolution: {integrity: sha512-95rQT5xTAL3eKhMJbJbLsZHHP9EUlh1rcrFoLf0gUApoVF8g94QjZ9hYZiI72mMP5WPjgTEXQVnVB9O2GxeaLw==}
|
||||
/@swc/core-linux-arm64-musl@1.3.76:
|
||||
resolution: {integrity: sha512-Is3bpq7F2qtlnkzEeOD6HIZJPpOmu3q6c82lKww90Q0NnrlSluVMozTHJgwVoFZyizH7uLnk0LuNcEAWLnmJIw==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
@ -1681,8 +1665,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-x64-gnu@1.3.75:
|
||||
resolution: {integrity: sha512-If7UpAhnPduMmtC+TSgPpZ1UXZfp2hIpjUFxpeCmHHYLS6Fn/2GZC5hpEiu+wvFJF0hzPh93eNAHa9gUxGUG+w==}
|
||||
/@swc/core-linux-x64-gnu@1.3.76:
|
||||
resolution: {integrity: sha512-iwCeRzd9oSvUzqt7nU6p/ztceAWfnO9XVxBn502R5gs6QCBbE1HCKrWHDO77aKPK7ss+0NcIGHvXTd9L8/wRzw==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
@ -1690,8 +1674,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-x64-musl@1.3.75:
|
||||
resolution: {integrity: sha512-HOhxX0YNHTElCZqIviquka3CGYTN8rSQ6BdFfSk/K0O+ZEHx3qGte0qr+gGLPF/237GxreUkp3OMaWKuURtuCg==}
|
||||
/@swc/core-linux-x64-musl@1.3.76:
|
||||
resolution: {integrity: sha512-a671g4tW8kyFeuICsgq4uB9ukQfiIyXJT4V6YSnmqhCTz5mazWuDxZ5wKnx/1g5nXTl+U5cWH2TZaCJatp4GKA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
@ -1699,8 +1683,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-win32-arm64-msvc@1.3.75:
|
||||
resolution: {integrity: sha512-7QPI+mvBXAerVfWahrgBNe+g7fK8PuetxFnZSEmXUcDXvWcdJXAndD7GjAJzbDyjQpLKHbsDKMiHYvfNxZoN/A==}
|
||||
/@swc/core-win32-arm64-msvc@1.3.76:
|
||||
resolution: {integrity: sha512-+swEFtjdMezS0vKUhJC3psdSDtOJGY5pEOt4e8XOPvn7aQpKQ9LfF49XVtIwDSk5SGuWtVoLFzkSY3reWUJCyg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
@ -1708,8 +1692,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-win32-ia32-msvc@1.3.75:
|
||||
resolution: {integrity: sha512-EfABCy4Wlq7O5ShWsm32FgDkSjyeyj/SQ4wnUIvWpkXhgfT1iNXky7KRU1HtX+SmnVk/k/NnabVZpIklYbjtZA==}
|
||||
/@swc/core-win32-ia32-msvc@1.3.76:
|
||||
resolution: {integrity: sha512-5CqwAykpGBJ3PqGLOlWGLGIPpBAG1IwWVDUfro3hhjQ7XJxV5Z1aQf5V5OJ90HJVtrEAVx2xx59UV/Dh081LOg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
@ -1717,8 +1701,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-win32-x64-msvc@1.3.75:
|
||||
resolution: {integrity: sha512-cTvP0pOD9C3pSp1cwtt85ZsrUkQz8RZfSPhM+jCGxKxmoowDCnInoOQ4Ica/ehyuUnQ4/IstSdYtYpO5yzPDJg==}
|
||||
/@swc/core-win32-x64-msvc@1.3.76:
|
||||
resolution: {integrity: sha512-CiMpWLLlR3Cew9067E7XxaLBwYYJ90r9EhGSO6V1pvYSWj7ET/Ppmtj1ZhzPJMqRXAP6xflfl5R5o4ee1m4WLA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
@ -1726,8 +1710,8 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core@1.3.75:
|
||||
resolution: {integrity: sha512-YLqd5oZVnaOq/OzkjRSsJUQqAfKYiD0fzUyVUPVlNNCoQEfVfSMcXH80hLmYe9aDH0T/a7qEMjWyIr/0kWqy1A==}
|
||||
/@swc/core@1.3.76:
|
||||
resolution: {integrity: sha512-aYYTA2aVYkwJAZepQXtPnkUthhOfn8qd6rsh+lrJxonFrjmpI7RHt2tMDVTXP6XDX7fvnvrVtT1bwZfmBFPh0Q==}
|
||||
engines: {node: '>=10'}
|
||||
requiresBuild: true
|
||||
peerDependencies:
|
||||
@ -1736,16 +1720,16 @@ packages:
|
||||
'@swc/helpers':
|
||||
optional: true
|
||||
optionalDependencies:
|
||||
'@swc/core-darwin-arm64': 1.3.75
|
||||
'@swc/core-darwin-x64': 1.3.75
|
||||
'@swc/core-linux-arm-gnueabihf': 1.3.75
|
||||
'@swc/core-linux-arm64-gnu': 1.3.75
|
||||
'@swc/core-linux-arm64-musl': 1.3.75
|
||||
'@swc/core-linux-x64-gnu': 1.3.75
|
||||
'@swc/core-linux-x64-musl': 1.3.75
|
||||
'@swc/core-win32-arm64-msvc': 1.3.75
|
||||
'@swc/core-win32-ia32-msvc': 1.3.75
|
||||
'@swc/core-win32-x64-msvc': 1.3.75
|
||||
'@swc/core-darwin-arm64': 1.3.76
|
||||
'@swc/core-darwin-x64': 1.3.76
|
||||
'@swc/core-linux-arm-gnueabihf': 1.3.76
|
||||
'@swc/core-linux-arm64-gnu': 1.3.76
|
||||
'@swc/core-linux-arm64-musl': 1.3.76
|
||||
'@swc/core-linux-x64-gnu': 1.3.76
|
||||
'@swc/core-linux-x64-musl': 1.3.76
|
||||
'@swc/core-win32-arm64-msvc': 1.3.76
|
||||
'@swc/core-win32-ia32-msvc': 1.3.76
|
||||
'@swc/core-win32-x64-msvc': 1.3.76
|
||||
dev: true
|
||||
|
||||
/@tailwindcss/typography@0.5.9(tailwindcss@3.3.3):
|
||||
@ -2309,8 +2293,8 @@ packages:
|
||||
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
|
||||
dev: false
|
||||
|
||||
/@types/node@18.17.4:
|
||||
resolution: {integrity: sha512-ATL4WLgr7/W40+Sp1WnNTSKbgVn6Pvhc/2RHAdt8fl6NsQyp4oPCi2eKcGOvA494bwf1K/W6nGgZ9TwDqvpjdw==}
|
||||
/@types/node@18.17.5:
|
||||
resolution: {integrity: sha512-xNbS75FxH6P4UXTPUJp/zNPq6/xsfdJKussCWNOnz4aULWIRwMgP1LgaB5RiBnMX1DPCYenuqGZfnIAx5mbFLA==}
|
||||
dev: true
|
||||
|
||||
/@types/normalize-package-data@2.4.1:
|
||||
@ -2358,7 +2342,7 @@ packages:
|
||||
resolution: {integrity: sha512-W8F4eoTIvzXeNrT3JroQPimZLXnlJA8smYygHZUKFPVoYwgs/OhJkA1VBhL3iSs57OQkuINqHlY4SmMT5wtnJg==}
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@4.9.5):
|
||||
/@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
@ -2370,12 +2354,12 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.6.2
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/scope-manager': 5.62.0
|
||||
'@typescript-eslint/type-utils': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/type-utils': 5.62.0(eslint@8.47.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@4.9.5)
|
||||
debug: 4.3.4
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
graphemer: 1.4.0
|
||||
ignore: 5.2.4
|
||||
natural-compare-lite: 1.4.0
|
||||
@ -2385,7 +2369,7 @@ packages:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@4.9.5):
|
||||
/@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
@ -2399,7 +2383,7 @@ packages:
|
||||
'@typescript-eslint/types': 5.62.0
|
||||
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
|
||||
debug: 4.3.4
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
typescript: 4.9.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@ -2411,7 +2395,7 @@ packages:
|
||||
'@typescript-eslint/types': 5.62.0
|
||||
'@typescript-eslint/visitor-keys': 5.62.0
|
||||
|
||||
/@typescript-eslint/type-utils@5.62.0(eslint@8.46.0)(typescript@4.9.5):
|
||||
/@typescript-eslint/type-utils@5.62.0(eslint@8.47.0)(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
@ -2422,9 +2406,9 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
|
||||
'@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@4.9.5)
|
||||
debug: 4.3.4
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
tsutils: 3.21.0(typescript@4.9.5)
|
||||
typescript: 4.9.5
|
||||
transitivePeerDependencies:
|
||||
@ -2454,19 +2438,19 @@ packages:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@4.9.5):
|
||||
/@typescript-eslint/utils@5.62.0(eslint@8.47.0)(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
|
||||
'@types/json-schema': 7.0.12
|
||||
'@types/semver': 7.5.0
|
||||
'@typescript-eslint/scope-manager': 5.62.0
|
||||
'@typescript-eslint/types': 5.62.0
|
||||
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
eslint-scope: 5.1.1
|
||||
semver: 7.5.4
|
||||
transitivePeerDependencies:
|
||||
@ -2478,15 +2462,15 @@ packages:
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 5.62.0
|
||||
eslint-visitor-keys: 3.4.2
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
/@vitejs/plugin-react-swc@3.3.2(vite@4.4.9):
|
||||
resolution: {integrity: sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==}
|
||||
peerDependencies:
|
||||
vite: ^4
|
||||
dependencies:
|
||||
'@swc/core': 1.3.75
|
||||
vite: 4.4.9(@types/node@18.17.4)
|
||||
'@swc/core': 1.3.76
|
||||
vite: 4.4.9(@types/node@18.17.5)
|
||||
transitivePeerDependencies:
|
||||
- '@swc/helpers'
|
||||
dev: true
|
||||
@ -3456,13 +3440,13 @@ packages:
|
||||
engines: {node: '>=12'}
|
||||
dev: false
|
||||
|
||||
/eslint-config-prettier@8.10.0(eslint@8.46.0):
|
||||
/eslint-config-prettier@8.10.0(eslint@8.47.0):
|
||||
resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
eslint: '>=7.0.0'
|
||||
dependencies:
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
|
||||
/eslint-formatter-pretty@4.1.0:
|
||||
resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==}
|
||||
@ -3488,7 +3472,7 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0):
|
||||
/eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.47.0):
|
||||
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
@ -3509,15 +3493,15 @@ packages:
|
||||
eslint-import-resolver-webpack:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@4.9.5)
|
||||
debug: 3.2.7
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0):
|
||||
/eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0):
|
||||
resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
@ -3527,16 +3511,16 @@ packages:
|
||||
'@typescript-eslint/parser':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@4.9.5)
|
||||
array-includes: 3.1.6
|
||||
array.prototype.findlastindex: 1.2.2
|
||||
array.prototype.flat: 1.3.1
|
||||
array.prototype.flatmap: 1.3.1
|
||||
debug: 3.2.7
|
||||
doctrine: 2.1.0
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0)
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.47.0)
|
||||
has: 1.0.3
|
||||
is-core-module: 2.13.0
|
||||
is-glob: 4.0.3
|
||||
@ -3553,7 +3537,7 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/eslint-plugin-jsx-a11y@6.7.1(eslint@8.46.0):
|
||||
/eslint-plugin-jsx-a11y@6.7.1(eslint@8.47.0):
|
||||
resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
|
||||
engines: {node: '>=4.0'}
|
||||
peerDependencies:
|
||||
@ -3568,7 +3552,7 @@ packages:
|
||||
axobject-query: 3.2.1
|
||||
damerau-levenshtein: 1.0.8
|
||||
emoji-regex: 9.2.2
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
has: 1.0.3
|
||||
jsx-ast-utils: 3.3.5
|
||||
language-tags: 1.0.5
|
||||
@ -3578,7 +3562,7 @@ packages:
|
||||
semver: 6.3.1
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-react@7.33.1(eslint@8.46.0):
|
||||
/eslint-plugin-react@7.33.1(eslint@8.47.0):
|
||||
resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
@ -3588,7 +3572,7 @@ packages:
|
||||
array.prototype.flatmap: 1.3.1
|
||||
array.prototype.tosorted: 1.1.1
|
||||
doctrine: 2.1.0
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
estraverse: 5.3.0
|
||||
jsx-ast-utils: 3.3.5
|
||||
minimatch: 3.1.2
|
||||
@ -3602,12 +3586,12 @@ packages:
|
||||
string.prototype.matchall: 4.0.8
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-simple-import-sort@10.0.0(eslint@8.46.0):
|
||||
/eslint-plugin-simple-import-sort@10.0.0(eslint@8.47.0):
|
||||
resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==}
|
||||
peerDependencies:
|
||||
eslint: '>=5.0.0'
|
||||
dependencies:
|
||||
eslint: 8.46.0
|
||||
eslint: 8.47.0
|
||||
dev: true
|
||||
|
||||
/eslint-rule-docs@1.1.235:
|
||||
@ -3628,19 +3612,19 @@ packages:
|
||||
esrecurse: 4.3.0
|
||||
estraverse: 5.3.0
|
||||
|
||||
/eslint-visitor-keys@3.4.2:
|
||||
resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==}
|
||||
/eslint-visitor-keys@3.4.3:
|
||||
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
||||
/eslint@8.46.0:
|
||||
resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==}
|
||||
/eslint@8.47.0:
|
||||
resolution: {integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
|
||||
'@eslint-community/regexpp': 4.6.2
|
||||
'@eslint/eslintrc': 2.1.1
|
||||
'@eslint/js': 8.46.0
|
||||
'@eslint/eslintrc': 2.1.2
|
||||
'@eslint/js': 8.47.0
|
||||
'@humanwhocodes/config-array': 0.11.10
|
||||
'@humanwhocodes/module-importer': 1.0.1
|
||||
'@nodelib/fs.walk': 1.2.8
|
||||
@ -3651,7 +3635,7 @@ packages:
|
||||
doctrine: 3.0.0
|
||||
escape-string-regexp: 4.0.0
|
||||
eslint-scope: 7.2.2
|
||||
eslint-visitor-keys: 3.4.2
|
||||
eslint-visitor-keys: 3.4.3
|
||||
espree: 9.6.1
|
||||
esquery: 1.5.0
|
||||
esutils: 2.0.3
|
||||
@ -3659,7 +3643,7 @@ packages:
|
||||
file-entry-cache: 6.0.1
|
||||
find-up: 5.0.0
|
||||
glob-parent: 6.0.2
|
||||
globals: 13.20.0
|
||||
globals: 13.21.0
|
||||
graphemer: 1.4.0
|
||||
ignore: 5.2.4
|
||||
imurmurhash: 0.1.4
|
||||
@ -3692,7 +3676,7 @@ packages:
|
||||
dependencies:
|
||||
acorn: 8.10.0
|
||||
acorn-jsx: 5.3.2(acorn@8.10.0)
|
||||
eslint-visitor-keys: 3.4.2
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
/esquery@1.5.0:
|
||||
resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
|
||||
@ -3984,8 +3968,8 @@ packages:
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
/globals@13.20.0:
|
||||
resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
|
||||
/globals@13.21.0:
|
||||
resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
type-fest: 0.20.2
|
||||
@ -4642,8 +4626,8 @@ packages:
|
||||
dependencies:
|
||||
js-tokens: 4.0.0
|
||||
|
||||
/lru-cache@10.0.0:
|
||||
resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==}
|
||||
/lru-cache@10.0.1:
|
||||
resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==}
|
||||
engines: {node: 14 || >=16.14}
|
||||
dev: false
|
||||
|
||||
@ -5656,7 +5640,7 @@ packages:
|
||||
resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
|
||||
engines: {node: '>=16 || 14 >=14.17'}
|
||||
dependencies:
|
||||
lru-cache: 10.0.0
|
||||
lru-cache: 10.0.1
|
||||
minipass: 5.0.0
|
||||
dev: false
|
||||
|
||||
@ -6178,26 +6162,26 @@ packages:
|
||||
use-sidecar: 1.1.2(@types/react@18.2.20)(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/react-router-dom@6.14.2(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==}
|
||||
engines: {node: '>=14'}
|
||||
/react-router-dom@6.15.0(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
react: '>=16.8'
|
||||
react-dom: '>=16.8'
|
||||
dependencies:
|
||||
'@remix-run/router': 1.7.2
|
||||
'@remix-run/router': 1.8.0
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
react-router: 6.14.2(react@18.2.0)
|
||||
react-router: 6.15.0(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/react-router@6.14.2(react@18.2.0):
|
||||
resolution: {integrity: sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==}
|
||||
engines: {node: '>=14'}
|
||||
/react-router@6.15.0(react@18.2.0):
|
||||
resolution: {integrity: sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
react: '>=16.8'
|
||||
dependencies:
|
||||
'@remix-run/router': 1.7.2
|
||||
'@remix-run/router': 1.8.0
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
@ -7238,9 +7222,9 @@ packages:
|
||||
vite: '>=2.8'
|
||||
dependencies:
|
||||
'@rollup/plugin-virtual': 3.0.1
|
||||
'@swc/core': 1.3.75
|
||||
'@swc/core': 1.3.76
|
||||
uuid: 9.0.0
|
||||
vite: 4.4.9(@types/node@18.17.4)
|
||||
vite: 4.4.9(@types/node@18.17.5)
|
||||
transitivePeerDependencies:
|
||||
- '@swc/helpers'
|
||||
- rollup
|
||||
@ -7257,13 +7241,13 @@ packages:
|
||||
debug: 4.3.4
|
||||
globrex: 0.1.2
|
||||
tsconfck: 2.1.2(typescript@4.9.5)
|
||||
vite: 4.4.9(@types/node@18.17.4)
|
||||
vite: 4.4.9(@types/node@18.17.5)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
dev: true
|
||||
|
||||
/vite@4.4.9(@types/node@18.17.4):
|
||||
/vite@4.4.9(@types/node@18.17.5):
|
||||
resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
hasBin: true
|
||||
@ -7291,7 +7275,7 @@ packages:
|
||||
terser:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/node': 18.17.4
|
||||
'@types/node': 18.17.5
|
||||
esbuild: 0.18.20
|
||||
postcss: 8.4.27
|
||||
rollup: 3.28.0
|
||||
@ -7446,112 +7430,112 @@ packages:
|
||||
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-app/dbfef70e44dc82156e79301742b656fd797a1473:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-app/tar.gz/dbfef70e44dc82156e79301742b656fd797a1473}
|
||||
github.com/tauri-apps/tauri-plugin-app/f8b21651dfa42f42e080488568010ff3bbeb7350:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-app/tar.gz/f8b21651dfa42f42e080488568010ff3bbeb7350}
|
||||
name: '@tauri-apps/plugin-app'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-autostart/33968b8b0aae857f045aeb17741bcff27440f6d3:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-autostart/tar.gz/33968b8b0aae857f045aeb17741bcff27440f6d3}
|
||||
github.com/tauri-apps/tauri-plugin-autostart/0b6ccaa31eccdeec47ca0425f7696846aa3a5f46:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-autostart/tar.gz/0b6ccaa31eccdeec47ca0425f7696846aa3a5f46}
|
||||
name: '@tauri-apps/plugin-autostart'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-clipboard-manager/549ca993a47ae7aafff635d99fc3e6dc124b9181:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-clipboard-manager/tar.gz/549ca993a47ae7aafff635d99fc3e6dc124b9181}
|
||||
github.com/tauri-apps/tauri-plugin-clipboard-manager/32e302b07e3ea11b59c55d4fc100516ac49a4968:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-clipboard-manager/tar.gz/32e302b07e3ea11b59c55d4fc100516ac49a4968}
|
||||
name: '@tauri-apps/plugin-clipboard-manager'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-dialog/2a358d18e865b31c6878f91bd068cfe36d00d639:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-dialog/tar.gz/2a358d18e865b31c6878f91bd068cfe36d00d639}
|
||||
github.com/tauri-apps/tauri-plugin-dialog/2d74ae009691b50e6498fb814a77c59b6798f2ac:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-dialog/tar.gz/2d74ae009691b50e6498fb814a77c59b6798f2ac}
|
||||
name: '@tauri-apps/plugin-dialog'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-fs/60e8dec66d2582cc39ebdd7b7101e9c96c23e52a:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-fs/tar.gz/60e8dec66d2582cc39ebdd7b7101e9c96c23e52a}
|
||||
github.com/tauri-apps/tauri-plugin-fs/0dd45ead4ca3cc8b426614fa47ad9227e9ed2053:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-fs/tar.gz/0dd45ead4ca3cc8b426614fa47ad9227e9ed2053}
|
||||
name: '@tauri-apps/plugin-fs'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-http/6d45e3ecae761f1990ed6366e6138c69775c58d8:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-http/tar.gz/6d45e3ecae761f1990ed6366e6138c69775c58d8}
|
||||
github.com/tauri-apps/tauri-plugin-http/27b519b63419db048d2d30945ff34b2234975ccd:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-http/tar.gz/27b519b63419db048d2d30945ff34b2234975ccd}
|
||||
name: '@tauri-apps/plugin-http'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-notification/9989c95217af5abcf847e790cb74dda485c0459a:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-notification/tar.gz/9989c95217af5abcf847e790cb74dda485c0459a}
|
||||
github.com/tauri-apps/tauri-plugin-notification/7878980ee8cb97437f343cc31b97a1b666e324d4:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-notification/tar.gz/7878980ee8cb97437f343cc31b97a1b666e324d4}
|
||||
name: '@tauri-apps/plugin-notification'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-os/a63d34fddb1bd97d6a634a1881e5cc26910e115f:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-os/tar.gz/a63d34fddb1bd97d6a634a1881e5cc26910e115f}
|
||||
github.com/tauri-apps/tauri-plugin-os/e4dda0ceff72cbc762937e79c104522a8866b840:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-os/tar.gz/e4dda0ceff72cbc762937e79c104522a8866b840}
|
||||
name: '@tauri-apps/plugin-os'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-process/ed3f8f78ddecc72c926239f5a10ec6ce1b8c353e:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-process/tar.gz/ed3f8f78ddecc72c926239f5a10ec6ce1b8c353e}
|
||||
github.com/tauri-apps/tauri-plugin-process/eec5dc8d37c80b2c1ebb7eb8e4cb976eed221a9d:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-process/tar.gz/eec5dc8d37c80b2c1ebb7eb8e4cb976eed221a9d}
|
||||
name: '@tauri-apps/plugin-process'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-shell/e538c5178508060d6fc1d1f8b03fa8f40fb53626:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-shell/tar.gz/e538c5178508060d6fc1d1f8b03fa8f40fb53626}
|
||||
github.com/tauri-apps/tauri-plugin-shell/f76cb0019364f40b9411eac5f5fdf6fd04b3e538:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-shell/tar.gz/f76cb0019364f40b9411eac5f5fdf6fd04b3e538}
|
||||
name: '@tauri-apps/plugin-shell'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-sql/0591e9f63e0f86be79c209f4bcb564ccce4bd05c:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-sql/tar.gz/0591e9f63e0f86be79c209f4bcb564ccce4bd05c}
|
||||
github.com/tauri-apps/tauri-plugin-sql/62eb3e4c9f084c1238cf7ab00d47148c034be207:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-sql/tar.gz/62eb3e4c9f084c1238cf7ab00d47148c034be207}
|
||||
name: '@tauri-apps/plugin-sql'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-store/2f5e470ba6d746b54da46fcb3eb10325fa224351:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-store/tar.gz/2f5e470ba6d746b54da46fcb3eb10325fa224351}
|
||||
github.com/tauri-apps/tauri-plugin-store/ddb10b0776a670028c1a56bbe922aba02fd32484:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-store/tar.gz/ddb10b0776a670028c1a56bbe922aba02fd32484}
|
||||
name: '@tauri-apps/plugin-store'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-stronghold/a87861766f3520b5fc1ea1f34665d814bbee9b06:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-stronghold/tar.gz/a87861766f3520b5fc1ea1f34665d814bbee9b06}
|
||||
github.com/tauri-apps/tauri-plugin-stronghold/9b2878280d1ab9da3d1a56c6f73bc1384b93f705:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-stronghold/tar.gz/9b2878280d1ab9da3d1a56c6f73bc1384b93f705}
|
||||
name: '@tauri-apps/plugin-stronghold'
|
||||
version: 2.0.0-alpha.1
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.0.0-alpha.5
|
||||
dev: false
|
||||
|
||||
github.com/tauri-apps/tauri-plugin-upload/3c17e7170f54aa3bad3ee4c534f423ace2b06552:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-upload/tar.gz/3c17e7170f54aa3bad3ee4c534f423ace2b06552}
|
||||
github.com/tauri-apps/tauri-plugin-upload/58fa4ca197cfd55292f77ede59f241014806963a:
|
||||
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-upload/tar.gz/58fa4ca197cfd55292f77ede59f241014806963a}
|
||||
name: '@tauri-apps/plugin-upload'
|
||||
version: 2.0.0-alpha.0
|
||||
dependencies:
|
||||
|
74
src-tauri/Cargo.lock
generated
74
src-tauri/Cargo.lock
generated
@ -88,9 +88,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "1.0.2"
|
||||
version = "1.0.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
|
||||
checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
@ -287,9 +287,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "async-lock"
|
||||
version = "2.7.0"
|
||||
version = "2.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7"
|
||||
checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
|
||||
dependencies = [
|
||||
"event-listener",
|
||||
]
|
||||
@ -331,9 +331,9 @@ checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae"
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.72"
|
||||
version = "0.1.73"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09"
|
||||
checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -460,9 +460,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.3.3"
|
||||
version = "2.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
|
||||
checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
@ -1476,7 +1476,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"rustix 0.38.7",
|
||||
"rustix 0.38.8",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
@ -2417,7 +2417,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"rustix 0.38.7",
|
||||
"rustix 0.38.8",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
@ -2712,9 +2712,9 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
||||
|
||||
[[package]]
|
||||
name = "mac-notification-sys"
|
||||
version = "0.5.8"
|
||||
version = "0.5.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "abc434554ad0e640d772f7f262aa28e61d485212533d3673abe5f3d1729bd42a"
|
||||
checksum = "9402858e87f85f88bf518bd2e68450640df1c99b1ddb3ea28c4d5d823bb54cdd"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"dirs-next",
|
||||
@ -3942,11 +3942,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "0.38.7"
|
||||
version = "0.38.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "172891ebdceb05aa0005f533a6cbfca599ddd7d966f6f5d4d9b2e70478e70399"
|
||||
checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f"
|
||||
dependencies = [
|
||||
"bitflags 2.3.3",
|
||||
"bitflags 2.4.0",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys 0.4.5",
|
||||
@ -4533,7 +4533,7 @@ checksum = "8ca69bf415b93b60b80dc8fda3cb4ef52b2336614d8da2de5456cc942a110482"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64 0.21.2",
|
||||
"bitflags 2.3.3",
|
||||
"bitflags 2.4.0",
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"crc",
|
||||
@ -4576,7 +4576,7 @@ checksum = "a0db2df1b8731c3651e204629dd55e52adbae0462fa1bdcbed56a2302c18181e"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64 0.21.2",
|
||||
"bitflags 2.3.3",
|
||||
"bitflags 2.4.0",
|
||||
"byteorder",
|
||||
"crc",
|
||||
"dotenvy",
|
||||
@ -5007,7 +5007,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-app"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"tauri",
|
||||
]
|
||||
@ -5015,7 +5015,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-autostart"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"auto-launch",
|
||||
"log",
|
||||
@ -5028,7 +5028,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-clipboard-manager"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"arboard",
|
||||
"log",
|
||||
@ -5042,7 +5042,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-dialog"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"glib",
|
||||
"log",
|
||||
@ -5059,7 +5059,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-fs"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"glob",
|
||||
@ -5072,7 +5072,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-http"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"data-url",
|
||||
"glob",
|
||||
@ -5089,7 +5089,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-notification"
|
||||
version = "2.0.0-alpha.1"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"log",
|
||||
"notify-rust",
|
||||
@ -5107,7 +5107,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-os"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"gethostname 0.4.3",
|
||||
"log",
|
||||
@ -5123,7 +5123,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-process"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"tauri",
|
||||
]
|
||||
@ -5131,7 +5131,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-shell"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"encoding_rs",
|
||||
"log",
|
||||
@ -5148,7 +5148,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-single-instance"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"log",
|
||||
"serde",
|
||||
@ -5162,7 +5162,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-sql"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"log",
|
||||
@ -5178,7 +5178,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-store"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"log",
|
||||
"serde",
|
||||
@ -5190,7 +5190,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-stronghold"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"hex",
|
||||
"iota-crypto 0.23.0",
|
||||
@ -5206,7 +5206,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-updater"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"base64 0.21.2",
|
||||
"dirs-next",
|
||||
@ -5231,7 +5231,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-upload"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"futures-util",
|
||||
"log",
|
||||
@ -5248,7 +5248,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-window"
|
||||
version = "2.0.0-alpha.0"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#4ab90f048eab2918344f97dc8e04413a404e392d"
|
||||
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#d5a7c77a8d0e7912a6b07b22ed329004edd6e80b"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"tauri",
|
||||
@ -5355,7 +5355,7 @@ dependencies = [
|
||||
"cfg-if",
|
||||
"fastrand 2.0.0",
|
||||
"redox_syscall 0.3.5",
|
||||
"rustix 0.38.7",
|
||||
"rustix 0.38.8",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
@ -6343,9 +6343,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
|
||||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.5.4"
|
||||
version = "0.5.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "acaaa1190073b2b101e15083c38ee8ec891b5e05cbee516521e94ec008f61e64"
|
||||
checksum = "5504cc7644f4b593cbc05c4a55bf9bd4e94b867c3c0bd440934174d50482427d"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
@ -24,16 +24,12 @@ export function OnboardStep3Screen() {
|
||||
|
||||
const { publish } = useNostr();
|
||||
const { account } = useAccount();
|
||||
const { fetcher, relayUrls } = useNDK();
|
||||
const { ndk } = useNDK();
|
||||
const { status, data } = useQuery(
|
||||
['relays'],
|
||||
async () => {
|
||||
const tmp = new Map<string, string>();
|
||||
const events = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ kinds: [10002], authors: account.follows },
|
||||
{ since: 0 }
|
||||
);
|
||||
const events = await ndk.fetchEvents({ kinds: [10002], authors: account.follows });
|
||||
|
||||
if (events) {
|
||||
events.forEach((event) => {
|
||||
|
@ -1,9 +1,6 @@
|
||||
import { useDecryptMessage } from '@app/chats/hooks/useDecryptMessage';
|
||||
|
||||
import { MentionNote } from '@shared/notes/mentions/note';
|
||||
import { ImagePreview } from '@shared/notes/preview/image';
|
||||
import { LinkPreview } from '@shared/notes/preview/link';
|
||||
import { VideoPreview } from '@shared/notes/preview/video';
|
||||
import { NoteContent } from '@shared/notes';
|
||||
import { User } from '@shared/user';
|
||||
|
||||
import { parser } from '@utils/parser';
|
||||
@ -22,8 +19,6 @@ export function ChatMessageItem({
|
||||
if (decryptedContent) {
|
||||
data['content'] = decryptedContent;
|
||||
}
|
||||
// parse the note content
|
||||
const content = parser(data);
|
||||
|
||||
return (
|
||||
<div className="flex h-min min-h-min w-full select-text flex-col px-5 py-3 hover:bg-white/10">
|
||||
@ -31,13 +26,8 @@ export function ChatMessageItem({
|
||||
<User pubkey={data.sender_pubkey} time={data.created_at} isChat={true} />
|
||||
<div className="-mt-[20px] pl-[49px]">
|
||||
<p className="select-text whitespace-pre-line break-words text-base text-white">
|
||||
{content.parsed}
|
||||
{data.content}
|
||||
</p>
|
||||
{content.images.length > 0 && <ImagePreview urls={content.images} />}
|
||||
{content.videos.length > 0 && <VideoPreview urls={content.videos} />}
|
||||
{content.links.length > 0 && <LinkPreview urls={content.links} />}
|
||||
{content.notes.length > 0 &&
|
||||
content.notes.map((note: string) => <MentionNote key={note} id={note} />)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -15,9 +15,7 @@ export function ChatsListSelfItem({ data }: { data: { pubkey: string } }) {
|
||||
return (
|
||||
<div className="inline-flex h-9 items-center gap-2.5 rounded-md px-2">
|
||||
<div className="relative h-6 w-6 shrink-0 animate-pulse rounded bg-white/10" />
|
||||
<div>
|
||||
<div className="h-2.5 w-full animate-pulse truncate rounded bg-white/10 text-base font-medium" />
|
||||
</div>
|
||||
<div className="h-2.5 w-2/3 animate-pulse rounded bg-white/10" />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -11,14 +11,14 @@ import { nHoursAgo } from '@utils/date';
|
||||
import { LumeEvent, Widget } from '@utils/types';
|
||||
|
||||
export function HashtagBlock({ params }: { params: Widget }) {
|
||||
const { relayUrls, fetcher } = useNDK();
|
||||
const { ndk } = useNDK();
|
||||
const { status, data } = useQuery(['hashtag', params.content], async () => {
|
||||
const events = (await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ kinds: [1], '#t': [params.content] },
|
||||
{ since: nHoursAgo(24) }
|
||||
)) as unknown as LumeEvent[];
|
||||
return events;
|
||||
const events = await ndk.fetchEvents({
|
||||
kinds: [1],
|
||||
'#t': [params.content],
|
||||
since: nHoursAgo(24),
|
||||
});
|
||||
return [...events] as unknown as LumeEvent[];
|
||||
});
|
||||
|
||||
const parentRef = useRef();
|
||||
|
@ -14,15 +14,14 @@ import { LumeEvent, Widget } from '@utils/types';
|
||||
export function UserBlock({ params }: { params: Widget }) {
|
||||
const parentRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
const { fetcher, relayUrls } = useNDK();
|
||||
const { ndk } = useNDK();
|
||||
const { status, data } = useQuery(['user-feed', params.content], async () => {
|
||||
const events = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ kinds: [1], authors: [params.content] },
|
||||
{ since: nHoursAgo(48) },
|
||||
{ sort: true }
|
||||
);
|
||||
return events as unknown as LumeEvent[];
|
||||
const events = await ndk.fetchEvents({
|
||||
kinds: [1],
|
||||
authors: [params.content],
|
||||
since: nHoursAgo(48),
|
||||
});
|
||||
return [...events] as unknown as LumeEvent[];
|
||||
});
|
||||
|
||||
const rowVirtualizer = useVirtualizer({
|
||||
@ -42,9 +41,7 @@ export function UserBlock({ params }: { params: Widget }) {
|
||||
<UserProfile pubkey={params.content} />
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="mt-4 px-3 text-lg font-semibold text-white">
|
||||
Latest activities
|
||||
</h3>
|
||||
<h3 className="mt-4 px-3 text-lg font-semibold text-white">Latest postrs</h3>
|
||||
<div className="flex h-full w-full flex-col justify-between gap-1.5 pb-10">
|
||||
{status === 'loading' ? (
|
||||
<div className="px-3 py-1.5">
|
||||
@ -57,7 +54,7 @@ export function UserBlock({ params }: { params: Widget }) {
|
||||
<div className="rounded-xl bg-white/10 px-3 py-6">
|
||||
<div className="flex flex-col items-center gap-4">
|
||||
<p className="text-center text-sm text-white">
|
||||
No new posts about this hashtag in 48 hours ago
|
||||
No new posts from this user in 48 hours ago
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { fetch } from '@tauri-apps/plugin-http';
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
import { FollowIcon, LoaderIcon, UnfollowIcon } from '@shared/icons';
|
||||
|
@ -8,21 +8,19 @@ import { TitleBar } from '@shared/titleBar';
|
||||
import { LumeEvent } from '@utils/types';
|
||||
|
||||
interface Response {
|
||||
ok: boolean;
|
||||
data: {
|
||||
notes: Array<{ event: LumeEvent }>;
|
||||
};
|
||||
notes: Array<{ event: LumeEvent }>;
|
||||
}
|
||||
|
||||
export function TrendingNotes() {
|
||||
const { status, data, error } = useQuery(
|
||||
['trending-notes'],
|
||||
async () => {
|
||||
const res: Response = await fetch('https://api.nostr.band/v0/trending/notes');
|
||||
const res = await fetch('https://api.nostr.band/v0/trending/notes');
|
||||
if (!res.ok) {
|
||||
throw new Error('Error');
|
||||
}
|
||||
return res.data?.notes;
|
||||
const json: Response = await res.json();
|
||||
return json.notes;
|
||||
},
|
||||
{
|
||||
refetchOnMount: false,
|
||||
@ -32,6 +30,8 @@ export function TrendingNotes() {
|
||||
}
|
||||
);
|
||||
|
||||
console.log('notes: ', data);
|
||||
|
||||
return (
|
||||
<div className="scrollbar-hide relative h-full w-[400px] shrink-0 overflow-y-auto bg-white/10 pb-20">
|
||||
<TitleBar title="Trending Posts" />
|
||||
|
@ -7,21 +7,19 @@ import { NoteSkeleton } from '@shared/notes/skeleton';
|
||||
import { TitleBar } from '@shared/titleBar';
|
||||
|
||||
interface Response {
|
||||
ok: boolean;
|
||||
data: {
|
||||
profiles: Array<{ pubkey: string }>;
|
||||
};
|
||||
profiles: Array<{ pubkey: string }>;
|
||||
}
|
||||
|
||||
export function TrendingProfiles() {
|
||||
const { status, data, error } = useQuery(
|
||||
['trending-profiles'],
|
||||
async () => {
|
||||
const res: Response = await fetch('https://api.nostr.band/v0/trending/profiles');
|
||||
const res = await fetch('https://api.nostr.band/v0/trending/profiles');
|
||||
if (!res.ok) {
|
||||
throw new Error('Error');
|
||||
}
|
||||
return res.data?.profiles;
|
||||
const json: Response = await res.json();
|
||||
return json.profiles;
|
||||
},
|
||||
{
|
||||
refetchOnMount: false,
|
||||
@ -31,6 +29,8 @@ export function TrendingProfiles() {
|
||||
}
|
||||
);
|
||||
|
||||
console.log('profiles: ', data);
|
||||
|
||||
return (
|
||||
<div className="scrollbar-hide relative h-full w-[400px] shrink-0 overflow-y-auto bg-white/10 pb-20">
|
||||
<TitleBar title="Trending Profiles" />
|
||||
@ -44,7 +44,7 @@ export function TrendingProfiles() {
|
||||
</div>
|
||||
) : (
|
||||
<div className="relative flex w-full flex-col gap-3 px-3 pt-1.5">
|
||||
{data.map((item) => (
|
||||
{data?.map((item) => (
|
||||
<Profile key={item.pubkey} data={item} />
|
||||
))}
|
||||
</div>
|
||||
|
@ -12,15 +12,14 @@ import { LumeEvent } from '@utils/types';
|
||||
export function UserFeed({ pubkey }: { pubkey: string }) {
|
||||
const parentRef = useRef();
|
||||
|
||||
const { fetcher, relayUrls } = useNDK();
|
||||
const { ndk } = useNDK();
|
||||
const { status, data } = useQuery(['user-feed', pubkey], async () => {
|
||||
const events = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ kinds: [1], authors: [pubkey] },
|
||||
{ since: nHoursAgo(48) },
|
||||
{ sort: true }
|
||||
);
|
||||
return events as unknown as LumeEvent[];
|
||||
const events = await ndk.fetchEvents({
|
||||
kinds: [1],
|
||||
authors: [pubkey],
|
||||
since: nHoursAgo(48),
|
||||
});
|
||||
return [...events] as unknown as LumeEvent[];
|
||||
});
|
||||
|
||||
const rowVirtualizer = useVirtualizer({
|
||||
|
@ -16,15 +16,14 @@ export function UserScreen() {
|
||||
const parentRef = useRef();
|
||||
|
||||
const { pubkey } = useParams();
|
||||
const { fetcher, relayUrls } = useNDK();
|
||||
const { ndk } = useNDK();
|
||||
const { status, data } = useQuery(['user-feed', pubkey], async () => {
|
||||
const events = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ kinds: [1], authors: [pubkey] },
|
||||
{ since: nHoursAgo(48) },
|
||||
{ sort: true }
|
||||
);
|
||||
return events as unknown as LumeEvent[];
|
||||
const events = await ndk.fetchEvents({
|
||||
kinds: [1],
|
||||
authors: [pubkey],
|
||||
since: nHoursAgo(48),
|
||||
});
|
||||
return [...events] as unknown as LumeEvent[];
|
||||
});
|
||||
|
||||
const rowVirtualizer = useVirtualizer({
|
||||
|
@ -1,8 +1,6 @@
|
||||
// inspire by: https://github.com/nostr-dev-kit/ndk-react/
|
||||
import NDK from '@nostr-dev-kit/ndk';
|
||||
import { ndkAdapter } from '@nostr-fetch/adapter-ndk';
|
||||
import { fetch } from '@tauri-apps/plugin-http';
|
||||
import { NostrFetcher } from 'nostr-fetch';
|
||||
import { useEffect, useMemo, useState } from 'react';
|
||||
|
||||
import TauriAdapter from '@libs/ndk/cache';
|
||||
@ -15,10 +13,6 @@ export const NDKInstance = () => {
|
||||
const [relayUrls, setRelayUrls] = useState<string[]>([]);
|
||||
|
||||
const cacheAdapter = useMemo(() => new TauriAdapter(), []);
|
||||
const fetcher = useMemo<NostrFetcher>(
|
||||
() => (ndk ? NostrFetcher.withCustomPool(ndkAdapter(ndk)) : undefined),
|
||||
[ndk]
|
||||
);
|
||||
|
||||
// TODO: fully support NIP-11
|
||||
async function verifyRelays(relays: string[]) {
|
||||
@ -37,7 +31,6 @@ export const NDKInstance = () => {
|
||||
|
||||
try {
|
||||
const res = await fetch(url, {
|
||||
method: 'GET',
|
||||
headers: { Accept: 'application/nostr+json' },
|
||||
});
|
||||
|
||||
@ -67,7 +60,7 @@ export const NDKInstance = () => {
|
||||
const instance = new NDK({ explicitRelayUrls, cacheAdapter });
|
||||
|
||||
try {
|
||||
await instance.connect();
|
||||
await instance.connect(10000);
|
||||
} catch (error) {
|
||||
throw new Error('NDK instance init failed: ', error);
|
||||
}
|
||||
@ -87,6 +80,5 @@ export const NDKInstance = () => {
|
||||
return {
|
||||
ndk,
|
||||
relayUrls,
|
||||
fetcher,
|
||||
};
|
||||
};
|
||||
|
@ -1,6 +1,5 @@
|
||||
// source: https://github.com/nostr-dev-kit/ndk-react/
|
||||
import NDK from '@nostr-dev-kit/ndk';
|
||||
import { NostrFetcher } from 'nostr-fetch';
|
||||
import { PropsWithChildren, createContext, useContext } from 'react';
|
||||
|
||||
import { NDKInstance } from '@libs/ndk/instance';
|
||||
@ -8,24 +7,21 @@ import { NDKInstance } from '@libs/ndk/instance';
|
||||
interface NDKContext {
|
||||
ndk: NDK;
|
||||
relayUrls: string[];
|
||||
fetcher: NostrFetcher;
|
||||
}
|
||||
|
||||
const NDKContext = createContext<NDKContext>({
|
||||
ndk: new NDK({}),
|
||||
relayUrls: [],
|
||||
fetcher: undefined,
|
||||
});
|
||||
|
||||
const NDKProvider = ({ children }: PropsWithChildren<object>) => {
|
||||
const { ndk, relayUrls, fetcher } = NDKInstance();
|
||||
const { ndk, relayUrls } = NDKInstance();
|
||||
|
||||
return (
|
||||
<NDKContext.Provider
|
||||
value={{
|
||||
ndk,
|
||||
relayUrls,
|
||||
fetcher,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
|
@ -1,44 +0,0 @@
|
||||
// source: https://github.com/nbd-wtf/nostr-tools/blob/b1fc8ab401b8074f53e6a05a1a6a13422fb01b2d/nip44.ts
|
||||
import { xchacha20 } from '@noble/ciphers/chacha';
|
||||
import { secp256k1 } from '@noble/curves/secp256k1';
|
||||
import { sha256 } from '@noble/hashes/sha256';
|
||||
import { randomBytes } from '@noble/hashes/utils';
|
||||
import { base64 } from '@scure/base';
|
||||
|
||||
export function getConversationKey(privkeyA: string, pubkeyB: string) {
|
||||
const key = secp256k1.getSharedSecret(privkeyA, '02' + pubkeyB);
|
||||
return sha256(key.slice(1, 33));
|
||||
}
|
||||
|
||||
export function nip44Encrypt(
|
||||
privkey: string,
|
||||
pubkey: string,
|
||||
text: string,
|
||||
ver = 1
|
||||
): string {
|
||||
if (ver !== 1) throw new Error('NIP44: unknown encryption version');
|
||||
|
||||
const key = getConversationKey(privkey, pubkey);
|
||||
const nonce = randomBytes(24);
|
||||
const plaintext = new TextEncoder().encode(text);
|
||||
const ciphertext = xchacha20(key, nonce, plaintext, plaintext);
|
||||
const ctb64 = base64.encode(ciphertext);
|
||||
const nonceb64 = base64.encode(nonce);
|
||||
|
||||
return JSON.stringify({ ciphertext: ctb64, nonce: nonceb64, v: 1 });
|
||||
}
|
||||
|
||||
export function nip44Decrypt(privkey: string, pubkey: string, data: string): string {
|
||||
const dt = JSON.parse(data);
|
||||
if (dt.v !== 1) throw new Error('NIP44: unknown encryption version');
|
||||
|
||||
let { ciphertext, nonce } = dt;
|
||||
ciphertext = base64.decode(ciphertext);
|
||||
nonce = base64.decode(nonce);
|
||||
|
||||
const key = getConversationKey(privkey, pubkey);
|
||||
const plaintext = xchacha20(key, nonce, ciphertext, ciphertext);
|
||||
const text = new TextDecoder('utf-8').decode(plaintext);
|
||||
|
||||
return text;
|
||||
}
|
@ -19,7 +19,13 @@ interface IPreFetchedResource {
|
||||
imagesPropertyType?: string;
|
||||
proxyUrl?: string;
|
||||
url: string;
|
||||
data: any;
|
||||
data: string;
|
||||
}
|
||||
|
||||
function throwOnLoopback(address: string) {
|
||||
if (OPENGRAPH.REGEX_LOOPBACK.test(address)) {
|
||||
throw new Error('SSRF request detected, trying to query host');
|
||||
}
|
||||
}
|
||||
|
||||
function metaTag(doc: cheerio.CheerioAPI, type: string, attr: string) {
|
||||
@ -28,42 +34,42 @@ function metaTag(doc: cheerio.CheerioAPI, type: string, attr: string) {
|
||||
}
|
||||
|
||||
function metaTagContent(doc: cheerio.CheerioAPI, type: string, attr: string) {
|
||||
return doc(`meta[${attr}='${type}']`).attr('content');
|
||||
return doc(`meta[${attr}='${type}']`).attr(`content`);
|
||||
}
|
||||
|
||||
function getTitle(doc: cheerio.CheerioAPI) {
|
||||
let title =
|
||||
metaTagContent(doc, 'og:title', 'property') ||
|
||||
metaTagContent(doc, 'og:title', 'name');
|
||||
metaTagContent(doc, `og:title`, `property`) ||
|
||||
metaTagContent(doc, `og:title`, `name`);
|
||||
if (!title) {
|
||||
title = doc('title').text();
|
||||
title = doc(`title`).text();
|
||||
}
|
||||
return title;
|
||||
}
|
||||
|
||||
function getSiteName(doc: cheerio.CheerioAPI) {
|
||||
const siteName =
|
||||
metaTagContent(doc, 'og:site_name', 'property') ||
|
||||
metaTagContent(doc, 'og:site_name', 'name');
|
||||
metaTagContent(doc, `og:site_name`, `property`) ||
|
||||
metaTagContent(doc, `og:site_name`, `name`);
|
||||
return siteName;
|
||||
}
|
||||
|
||||
function getDescription(doc: cheerio.CheerioAPI) {
|
||||
const description =
|
||||
metaTagContent(doc, 'description', 'name') ||
|
||||
metaTagContent(doc, 'Description', 'name') ||
|
||||
metaTagContent(doc, 'og:description', 'property');
|
||||
metaTagContent(doc, `description`, `name`) ||
|
||||
metaTagContent(doc, `Description`, `name`) ||
|
||||
metaTagContent(doc, `og:description`, `property`);
|
||||
return description;
|
||||
}
|
||||
|
||||
function getMediaType(doc: cheerio.CheerioAPI) {
|
||||
const node = metaTag(doc, 'medium', 'name');
|
||||
const node = metaTag(doc, `medium`, `name`);
|
||||
if (node) {
|
||||
const content = node.attr('content');
|
||||
return content === 'image' ? 'photo' : content;
|
||||
const content = node.attr(`content`);
|
||||
return content === `image` ? `photo` : content;
|
||||
}
|
||||
return (
|
||||
metaTagContent(doc, 'og:type', 'property') || metaTagContent(doc, 'og:type', 'name')
|
||||
metaTagContent(doc, `og:type`, `property`) || metaTagContent(doc, `og:type`, `name`)
|
||||
);
|
||||
}
|
||||
|
||||
@ -77,14 +83,14 @@ function getImages(
|
||||
let src: string | undefined;
|
||||
let dic: Record<string, boolean> = {};
|
||||
|
||||
const imagePropertyType = imagesPropertyType ?? 'og';
|
||||
const imagePropertyType = imagesPropertyType ?? `og`;
|
||||
nodes =
|
||||
metaTag(doc, `${imagePropertyType}:image`, 'property') ||
|
||||
metaTag(doc, `${imagePropertyType}:image`, 'name');
|
||||
metaTag(doc, `${imagePropertyType}:image`, `property`) ||
|
||||
metaTag(doc, `${imagePropertyType}:image`, `name`);
|
||||
|
||||
if (nodes) {
|
||||
nodes.each((_: number, node: cheerio.Element) => {
|
||||
if (node.type === 'tag') {
|
||||
if (node.type === `tag`) {
|
||||
src = node.attribs.content;
|
||||
if (src) {
|
||||
src = new URL(src, rootUrl).href;
|
||||
@ -95,18 +101,18 @@ function getImages(
|
||||
}
|
||||
|
||||
if (images.length <= 0 && !imagesPropertyType) {
|
||||
src = doc('link[rel=image_src]').attr('href');
|
||||
src = doc(`link[rel=image_src]`).attr(`href`);
|
||||
if (src) {
|
||||
src = new URL(src, rootUrl).href;
|
||||
images = [src];
|
||||
} else {
|
||||
nodes = doc('img');
|
||||
nodes = doc(`img`);
|
||||
|
||||
if (nodes?.length) {
|
||||
dic = {};
|
||||
images = [];
|
||||
nodes.each((_: number, node: cheerio.Element) => {
|
||||
if (node.type === 'tag') src = node.attribs.src;
|
||||
if (node.type === `tag`) src = node.attribs.src;
|
||||
if (src && !dic[src]) {
|
||||
dic[src] = true;
|
||||
// width = node.attribs.width;
|
||||
@ -135,32 +141,32 @@ function getVideos(doc: cheerio.CheerioAPI) {
|
||||
let videoObj;
|
||||
let index;
|
||||
|
||||
const nodes = metaTag(doc, 'og:video', 'property') || metaTag(doc, 'og:video', 'name');
|
||||
const nodes = metaTag(doc, `og:video`, `property`) || metaTag(doc, `og:video`, `name`);
|
||||
|
||||
if (nodes?.length) {
|
||||
nodeTypes =
|
||||
metaTag(doc, 'og:video:type', 'property') || metaTag(doc, 'og:video:type', 'name');
|
||||
metaTag(doc, `og:video:type`, `property`) || metaTag(doc, `og:video:type`, `name`);
|
||||
nodeSecureUrls =
|
||||
metaTag(doc, 'og:video:secure_url', 'property') ||
|
||||
metaTag(doc, 'og:video:secure_url', 'name');
|
||||
metaTag(doc, `og:video:secure_url`, `property`) ||
|
||||
metaTag(doc, `og:video:secure_url`, `name`);
|
||||
width =
|
||||
metaTagContent(doc, 'og:video:width', 'property') ||
|
||||
metaTagContent(doc, 'og:video:width', 'name');
|
||||
metaTagContent(doc, `og:video:width`, `property`) ||
|
||||
metaTagContent(doc, `og:video:width`, `name`);
|
||||
height =
|
||||
metaTagContent(doc, 'og:video:height', 'property') ||
|
||||
metaTagContent(doc, 'og:video:height', 'name');
|
||||
metaTagContent(doc, `og:video:height`, `property`) ||
|
||||
metaTagContent(doc, `og:video:height`, `name`);
|
||||
|
||||
for (index = 0; index < nodes.length; index += 1) {
|
||||
const node = nodes[index];
|
||||
if (node.type === 'tag') video = node.attribs.content;
|
||||
if (node.type === `tag`) video = node.attribs.content;
|
||||
|
||||
nodeType = nodeTypes?.[index];
|
||||
if (nodeType?.type === 'tag') {
|
||||
if (nodeType?.type === `tag`) {
|
||||
videoType = nodeType ? nodeType.attribs.content : null;
|
||||
}
|
||||
|
||||
nodeSecureUrl = nodeSecureUrls?.[index];
|
||||
if (nodeSecureUrl?.type === 'tag') {
|
||||
if (nodeSecureUrl?.type === `tag`) {
|
||||
videoSecureUrl = nodeSecureUrl ? nodeSecureUrl.attribs.content : null;
|
||||
}
|
||||
|
||||
@ -171,7 +177,7 @@ function getVideos(doc: cheerio.CheerioAPI) {
|
||||
width,
|
||||
height,
|
||||
};
|
||||
if (videoType && videoType.indexOf('video/') === 0) {
|
||||
if (videoType && videoType.indexOf(`video/`) === 0) {
|
||||
videos.splice(0, 0, videoObj);
|
||||
} else {
|
||||
videos.push(videoObj);
|
||||
@ -193,7 +199,7 @@ function getFavicons(doc: cheerio.CheerioAPI, rootUrl: string) {
|
||||
let nodes: cheerio.Cheerio<cheerio.Element> | never[] = [];
|
||||
let src: string | undefined;
|
||||
|
||||
const relSelectors = ['rel=icon', `rel="shortcut icon"`, 'rel=apple-touch-icon'];
|
||||
const relSelectors = [`rel=icon`, `rel="shortcut icon"`, `rel=apple-touch-icon`];
|
||||
|
||||
relSelectors.forEach((relSelector) => {
|
||||
// look for all icon tags
|
||||
@ -202,9 +208,9 @@ function getFavicons(doc: cheerio.CheerioAPI, rootUrl: string) {
|
||||
// collect all images from icon tags
|
||||
if (nodes.length) {
|
||||
nodes.each((_: number, node: cheerio.Element) => {
|
||||
if (node.type === 'tag') src = node.attribs.href;
|
||||
if (node.type === `tag`) src = node.attribs.href;
|
||||
if (src) {
|
||||
src = new URL(rootUrl).href;
|
||||
src = new URL(src, rootUrl).href;
|
||||
images.push(src);
|
||||
}
|
||||
});
|
||||
@ -222,7 +228,7 @@ function getFavicons(doc: cheerio.CheerioAPI, rootUrl: string) {
|
||||
function parseImageResponse(url: string, contentType: string) {
|
||||
return {
|
||||
url,
|
||||
mediaType: 'image',
|
||||
mediaType: `image`,
|
||||
contentType,
|
||||
favicons: [getDefaultFavicon(url)],
|
||||
};
|
||||
@ -231,7 +237,7 @@ function parseImageResponse(url: string, contentType: string) {
|
||||
function parseAudioResponse(url: string, contentType: string) {
|
||||
return {
|
||||
url,
|
||||
mediaType: 'audio',
|
||||
mediaType: `audio`,
|
||||
contentType,
|
||||
favicons: [getDefaultFavicon(url)],
|
||||
};
|
||||
@ -240,7 +246,7 @@ function parseAudioResponse(url: string, contentType: string) {
|
||||
function parseVideoResponse(url: string, contentType: string) {
|
||||
return {
|
||||
url,
|
||||
mediaType: 'video',
|
||||
mediaType: `video`,
|
||||
contentType,
|
||||
favicons: [getDefaultFavicon(url)],
|
||||
};
|
||||
@ -249,7 +255,7 @@ function parseVideoResponse(url: string, contentType: string) {
|
||||
function parseApplicationResponse(url: string, contentType: string) {
|
||||
return {
|
||||
url,
|
||||
mediaType: 'application',
|
||||
mediaType: `application`,
|
||||
contentType,
|
||||
favicons: [getDefaultFavicon(url)],
|
||||
};
|
||||
@ -268,7 +274,7 @@ function parseTextResponse(
|
||||
title: getTitle(doc),
|
||||
siteName: getSiteName(doc),
|
||||
description: getDescription(doc),
|
||||
mediaType: getMediaType(doc) || 'website',
|
||||
mediaType: getMediaType(doc) || `website`,
|
||||
contentType,
|
||||
images: getImages(doc, url, options.imagesPropertyType),
|
||||
videos: getVideos(doc),
|
||||
@ -287,11 +293,11 @@ function parseUnknownResponse(
|
||||
|
||||
function parseResponse(response: IPreFetchedResource, options?: ILinkPreviewOptions) {
|
||||
try {
|
||||
let contentType = response.headers['content-type'];
|
||||
let contentType = response.headers[`content-type`];
|
||||
// console.warn(`original content type`, contentType);
|
||||
if (contentType?.indexOf(';')) {
|
||||
if (contentType?.indexOf(`;`)) {
|
||||
// eslint-disable-next-line prefer-destructuring
|
||||
contentType = contentType.split(';')[0];
|
||||
contentType = contentType.split(`;`)[0];
|
||||
// console.warn(`splitting content type`, contentType);
|
||||
}
|
||||
|
||||
@ -330,19 +336,117 @@ function parseResponse(response: IPreFetchedResource, options?: ILinkPreviewOpti
|
||||
}
|
||||
}
|
||||
|
||||
export async function getLinkPreview(text: string) {
|
||||
const fetchUrl = text;
|
||||
const options = {
|
||||
method: 'GET',
|
||||
timeout: 5,
|
||||
};
|
||||
|
||||
let response = await fetch(fetchUrl, options);
|
||||
|
||||
if (response.status > 300 && response.status < 309) {
|
||||
const forwardedUrl = response.headers.location || '';
|
||||
response = await fetch(forwardedUrl, options);
|
||||
/**
|
||||
* Parses the text, extracts the first link it finds and does a HTTP request
|
||||
* to fetch the website content, afterwards it tries to parse the internal HTML
|
||||
* and extract the information via meta tags
|
||||
* @param text string, text to be parsed
|
||||
* @param options ILinkPreviewOptions
|
||||
*/
|
||||
export async function getLinkPreview(text: string, options?: ILinkPreviewOptions) {
|
||||
if (!text || typeof text !== `string`) {
|
||||
throw new Error(`link-preview-js did not receive a valid url or text`);
|
||||
}
|
||||
|
||||
return parseResponse(response);
|
||||
const detectedUrl = text
|
||||
.replace(/\n/g, ` `)
|
||||
.split(` `)
|
||||
.find((token) => OPENGRAPH.REGEX_VALID_URL.test(token));
|
||||
|
||||
if (!detectedUrl) {
|
||||
throw new Error(`link-preview-js did not receive a valid a url or text`);
|
||||
}
|
||||
|
||||
if (options?.followRedirects === `manual` && !options?.handleRedirects) {
|
||||
throw new Error(
|
||||
`link-preview-js followRedirects is set to manual, but no handleRedirects function was provided`
|
||||
);
|
||||
}
|
||||
|
||||
if (options?.resolveDNSHost) {
|
||||
const resolvedUrl = await options.resolveDNSHost(detectedUrl);
|
||||
|
||||
throwOnLoopback(resolvedUrl);
|
||||
}
|
||||
|
||||
const timeout = options?.timeout ?? 3000; // 3 second timeout default
|
||||
const controller = new AbortController();
|
||||
const timeoutCounter = setTimeout(() => controller.abort(), timeout);
|
||||
|
||||
const fetchOptions = {
|
||||
headers: options?.headers ?? {},
|
||||
redirect: options?.followRedirects ?? `error`,
|
||||
signal: controller.signal,
|
||||
};
|
||||
|
||||
const fetchUrl = options?.proxyUrl ? options.proxyUrl.concat(detectedUrl) : detectedUrl;
|
||||
|
||||
// Seems like fetchOptions type definition is out of date
|
||||
// https://github.com/node-fetch/node-fetch/issues/741
|
||||
let response = await fetch(fetchUrl, fetchOptions as any).catch((e) => {
|
||||
if (e.name === `AbortError`) {
|
||||
throw new Error(`Request timeout`);
|
||||
}
|
||||
|
||||
clearTimeout(timeoutCounter);
|
||||
throw e;
|
||||
});
|
||||
|
||||
if (
|
||||
response.status > 300 &&
|
||||
response.status < 309 &&
|
||||
fetchOptions.redirect === `manual` &&
|
||||
options?.handleRedirects
|
||||
) {
|
||||
const forwardedUrl = response.headers.get(`location`) || ``;
|
||||
|
||||
if (!options.handleRedirects(fetchUrl, forwardedUrl)) {
|
||||
throw new Error(`link-preview-js could not handle redirect`);
|
||||
}
|
||||
|
||||
if (options?.resolveDNSHost) {
|
||||
const resolvedUrl = await options.resolveDNSHost(forwardedUrl);
|
||||
|
||||
throwOnLoopback(resolvedUrl);
|
||||
}
|
||||
|
||||
response = await fetch(forwardedUrl, fetchOptions as any);
|
||||
}
|
||||
|
||||
clearTimeout(timeoutCounter);
|
||||
|
||||
const headers: Record<string, string> = {};
|
||||
response.headers.forEach((header, key) => {
|
||||
headers[key] = header;
|
||||
});
|
||||
|
||||
const normalizedResponse: IPreFetchedResource = {
|
||||
url: options?.proxyUrl ? response.url.replace(options.proxyUrl, ``) : response.url,
|
||||
headers,
|
||||
data: await response.text(),
|
||||
};
|
||||
|
||||
return parseResponse(normalizedResponse, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Skip the library fetching the website for you, instead pass a response object
|
||||
* from whatever source you get and use the internal parsing of the HTML to return
|
||||
* the necessary information
|
||||
* @param response Preview Response
|
||||
* @param options IPreviewLinkOptions
|
||||
*/
|
||||
export async function getPreviewFromContent(
|
||||
response: IPreFetchedResource,
|
||||
options?: ILinkPreviewOptions
|
||||
) {
|
||||
if (!response || typeof response !== `object`) {
|
||||
throw new Error(`link-preview-js did not receive a valid response object`);
|
||||
}
|
||||
|
||||
if (!response.url) {
|
||||
throw new Error(`link-preview-js did not receive a valid response object`);
|
||||
}
|
||||
|
||||
return parseResponse(response, options);
|
||||
}
|
||||
|
@ -111,7 +111,7 @@ export function Composer() {
|
||||
await publish({ content: serializedContent, kind: 1, tags });
|
||||
|
||||
// send native notifiation
|
||||
await sendNativeNotification('Publish post successfully');
|
||||
await sendNativeNotification('Publish postr successfully');
|
||||
|
||||
// update state
|
||||
setStatus('done');
|
||||
|
@ -42,7 +42,7 @@ export function ComposerModal() {
|
||||
<ChevronRightIcon className="h-4 w-4 text-white/50" />
|
||||
</span>
|
||||
<div className="inline-flex h-7 w-max items-center justify-center gap-0.5 rounded bg-white/10 pl-3 pr-1.5 text-sm font-medium text-white">
|
||||
New Post
|
||||
New Postr
|
||||
<ChevronDownIcon className="h-4 w-4" />
|
||||
</div>
|
||||
</div>
|
||||
|
@ -14,7 +14,7 @@ export function MentionUser({ pubkey }: { pubkey: string }) {
|
||||
onClick={() =>
|
||||
setWidget({
|
||||
kind: BLOCK_KINDS.user,
|
||||
title: user?.nip05 || user?.name || user?.displayNam,
|
||||
title: user?.nip05 || user?.name || user?.display_name,
|
||||
content: pubkey,
|
||||
})
|
||||
}
|
||||
|
@ -7,22 +7,25 @@ import { NoteSkeleton, Reply } from '@shared/notes';
|
||||
import { LumeEvent } from '@utils/types';
|
||||
|
||||
export function RepliesList({ id }: { id: string }) {
|
||||
const { relayUrls, fetcher } = useNDK();
|
||||
const { ndk } = useNDK();
|
||||
const { status, data } = useQuery(['thread', id], async () => {
|
||||
const events = (await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ kinds: [1], '#e': [id] },
|
||||
{ since: 0 }
|
||||
)) as unknown as LumeEvent[];
|
||||
if (events.length > 0) {
|
||||
const events = await ndk.fetchEvents({
|
||||
kinds: [1],
|
||||
'#e': [id],
|
||||
since: 0,
|
||||
});
|
||||
|
||||
const array = [...events] as unknown as LumeEvent[];
|
||||
|
||||
if (array.length > 0) {
|
||||
const replies = new Set();
|
||||
events.forEach((event) => {
|
||||
array.forEach((event) => {
|
||||
const tags = event.tags.filter((el) => el[0] === 'e' && el[1] !== id);
|
||||
if (tags.length > 0) {
|
||||
tags.forEach((tag) => {
|
||||
const rootIndex = events.findIndex((el) => el.id === tag[1]);
|
||||
const rootIndex = array.findIndex((el) => el.id === tag[1]);
|
||||
if (rootIndex) {
|
||||
const rootEvent = events[rootIndex];
|
||||
const rootEvent = array[rootIndex];
|
||||
if (rootEvent.replies) {
|
||||
rootEvent.replies.push(event);
|
||||
} else {
|
||||
@ -33,10 +36,10 @@ export function RepliesList({ id }: { id: string }) {
|
||||
});
|
||||
}
|
||||
});
|
||||
const cleanEvents = events.filter((ev) => !replies.has(ev.id));
|
||||
const cleanEvents = array.filter((ev) => !replies.has(ev.id));
|
||||
return cleanEvents;
|
||||
}
|
||||
return events;
|
||||
return array;
|
||||
});
|
||||
|
||||
if (status === 'loading') {
|
||||
|
@ -12,16 +12,16 @@ import { nHoursAgo } from '@utils/date';
|
||||
import { LumeEvent } from '@utils/types';
|
||||
|
||||
export function NotificationModal({ pubkey }: { pubkey: string }) {
|
||||
const { fetcher, relayUrls } = useNDK();
|
||||
const { ndk } = useNDK();
|
||||
const { status, data } = useQuery(
|
||||
['notification', pubkey],
|
||||
async () => {
|
||||
const events = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ '#p': [pubkey], kinds: [1, 6, 7, 9735] },
|
||||
{ since: nHoursAgo(24) }
|
||||
);
|
||||
const filterSelf = events.filter((el) => el.pubkey !== pubkey);
|
||||
const events = await ndk.fetchEvents({
|
||||
'#p': [pubkey],
|
||||
kinds: [1, 6, 7, 9735],
|
||||
since: nHoursAgo(24),
|
||||
});
|
||||
const filterSelf = [...events].filter((el) => el.pubkey !== pubkey);
|
||||
const sorted = filterSelf.sort((a, b) => a.created_at - b.created_at);
|
||||
return sorted as unknown as LumeEvent[];
|
||||
},
|
||||
|
@ -17,7 +17,7 @@ export function NotiMention({ event }: { event: NDKEvent }) {
|
||||
<div className="flex items-start justify-between">
|
||||
<div className="flex items-start gap-1">
|
||||
<NotiUser pubkey={event.pubkey} />
|
||||
<p className="leading-none text-white/50">reply your post</p>
|
||||
<p className="leading-none text-white/50">reply your postr</p>
|
||||
</div>
|
||||
<span className="leading-none text-white/50">{createdAt}</span>
|
||||
</div>
|
||||
|
@ -14,7 +14,7 @@ export function NotiRepost({ event }: { event: NDKEvent }) {
|
||||
<div className="flex items-start justify-between">
|
||||
<div className="flex items-start gap-1">
|
||||
<NotiUser pubkey={event.pubkey} />
|
||||
<p className="leading-none text-white/50">repost your post</p>
|
||||
<p className="leading-none text-white/50">repost your postr</p>
|
||||
</div>
|
||||
<div>
|
||||
<span className="leading-none text-white/50">{createdAt}</span>
|
||||
|
@ -1,8 +1,10 @@
|
||||
import { NDKEvent, NDKKind, NDKPrivateKeySigner, NDKUser } from '@nostr-dev-kit/ndk';
|
||||
import { ndkAdapter } from '@nostr-fetch/adapter-ndk';
|
||||
import destr from 'destr';
|
||||
import { LRUCache } from 'lru-cache';
|
||||
import { NostrEvent } from 'nostr-fetch';
|
||||
import { NostrFetcher } from 'nostr-fetch';
|
||||
import { nip19 } from 'nostr-tools';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
import { useNDK } from '@libs/ndk/provider';
|
||||
import {
|
||||
@ -19,11 +21,12 @@ import { nHoursAgo } from '@utils/date';
|
||||
import { useAccount } from '@utils/hooks/useAccount';
|
||||
|
||||
export function useNostr() {
|
||||
const privkey = useStronghold((state) => state.privkey);
|
||||
|
||||
const { ndk, relayUrls, fetcher } = useNDK();
|
||||
const { ndk, relayUrls } = useNDK();
|
||||
const { account } = useAccount();
|
||||
|
||||
const fetcher = useMemo(() => NostrFetcher.withCustomPool(ndkAdapter(ndk)), [ndk]);
|
||||
const privkey = useStronghold((state) => state.privkey);
|
||||
|
||||
async function fetchNetwork(prevFollow?: string[]) {
|
||||
const follows = new Set<string>(prevFollow || []);
|
||||
const lruNetwork = new LRUCache<string, string, void>({ max: 300 });
|
||||
@ -43,14 +46,9 @@ export function useNostr() {
|
||||
// fetch network
|
||||
if (!account.network) {
|
||||
console.log("fetching user's network...");
|
||||
const events = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ kinds: [3], authors: [...follows] },
|
||||
{ since: 0 },
|
||||
{ skipVerification: true }
|
||||
);
|
||||
const events = await ndk.fetchEvents({ kinds: [3], authors: [...follows] });
|
||||
|
||||
events.forEach((event: NostrEvent) => {
|
||||
events.forEach((event: NDKEvent) => {
|
||||
event.tags.forEach((tag) => {
|
||||
if (tag[0] === 'p') lruNetwork.set(tag[1], tag[1]);
|
||||
});
|
||||
@ -88,9 +86,11 @@ export function useNostr() {
|
||||
|
||||
const events = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ kinds: [1], authors: network },
|
||||
{ since: since },
|
||||
{ skipVerification: true }
|
||||
{
|
||||
kinds: [1],
|
||||
authors: network,
|
||||
},
|
||||
{ since: since }
|
||||
);
|
||||
|
||||
for (const event of events) {
|
||||
@ -117,17 +117,25 @@ export function useNostr() {
|
||||
if (!ndk) return { status: 'failed', message: 'NDK instance not found' };
|
||||
|
||||
const lastLogin = await getLastLogin();
|
||||
const incomingMessages = await fetcher.fetchAllEvents(
|
||||
|
||||
const outgoingMessages = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{
|
||||
kinds: [4],
|
||||
'#p': [account.pubkey],
|
||||
authors: [account.pubkey],
|
||||
},
|
||||
{ since: lastLogin },
|
||||
{ skipVerification: true }
|
||||
{ since: lastLogin }
|
||||
);
|
||||
|
||||
for (const event of incomingMessages) {
|
||||
const incomingMessages = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ kinds: [4], '#p': [account.pubkey] },
|
||||
{ since: lastLogin }
|
||||
);
|
||||
|
||||
const messages = [...outgoingMessages, ...incomingMessages];
|
||||
|
||||
for (const event of messages) {
|
||||
const receiverPubkey = event.tags.find((t) => t[0] === 'p')[1] || account.pubkey;
|
||||
await createChat(
|
||||
event.id,
|
||||
@ -172,11 +180,11 @@ export function useNostr() {
|
||||
return event;
|
||||
};
|
||||
|
||||
const createZap = async (event: NostrEvent, amount: number, message?: string) => {
|
||||
// @ts-expect-error, LumeEvent to NostrEvent
|
||||
const createZap = async (event: NDKEvent, amount: number, message?: string) => {
|
||||
// @ts-expect-error, LumeEvent to NDKEvent
|
||||
event.id = event.event_id;
|
||||
|
||||
// @ts-expect-error, LumeEvent to NostrEvent
|
||||
// @ts-expect-error, LumeEvent to NDKEvent
|
||||
if (typeof event.content !== 'string') event.content = event.content.original;
|
||||
|
||||
if (typeof event.tags === 'string') event.tags = destr(event.tags);
|
||||
@ -188,6 +196,7 @@ export function useNostr() {
|
||||
ndk.signer = signer;
|
||||
}
|
||||
|
||||
// @ts-expect-error, LumeEvent to NDKEvent
|
||||
const ndkEvent = new NDKEvent(ndk, event);
|
||||
const res = await ndkEvent.zap(amount, message ?? 'zap from lume');
|
||||
|
||||
|
@ -8,7 +8,7 @@ export function useOpenGraph(url: string) {
|
||||
async () => {
|
||||
const res = await getLinkPreview(url);
|
||||
if (!res) {
|
||||
throw new Error("Can' fetch");
|
||||
throw new Error('fetch preview failed');
|
||||
}
|
||||
return res;
|
||||
},
|
||||
|
@ -5,25 +5,26 @@ import { createNote } from '@libs/storage';
|
||||
|
||||
import { nHoursAgo } from '@utils/date';
|
||||
import { useAccount } from '@utils/hooks/useAccount';
|
||||
import { nip02ToArray } from '@utils/transform';
|
||||
|
||||
import { useNostr } from './useNostr';
|
||||
import { useNostr } from '@utils/hooks/useNostr';
|
||||
|
||||
export function useSocial() {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
const { publish } = useNostr();
|
||||
const { fetcher, relayUrls } = useNDK();
|
||||
const { ndk } = useNDK();
|
||||
const { account } = useAccount();
|
||||
const { status, data: userFollows } = useQuery(
|
||||
['userFollows', account.pubkey],
|
||||
async () => {
|
||||
const res = await fetcher.fetchLastEvent(relayUrls, {
|
||||
kinds: [3],
|
||||
authors: [account.pubkey],
|
||||
const keys = [];
|
||||
const user = ndk.getUser({ hexpubkey: account.pubkey });
|
||||
const follows = await user.follows();
|
||||
|
||||
follows.forEach((item) => {
|
||||
keys.push(item.hexpubkey);
|
||||
});
|
||||
const list = nip02ToArray(res.tags);
|
||||
return list;
|
||||
|
||||
return keys;
|
||||
},
|
||||
{
|
||||
enabled: account ? true : false,
|
||||
@ -67,11 +68,11 @@ export function useSocial() {
|
||||
});
|
||||
|
||||
// fetch events
|
||||
const events = await fetcher.fetchAllEvents(
|
||||
relayUrls,
|
||||
{ authors: [pubkey], kinds: [1, 6] },
|
||||
{ since: nHoursAgo(48) }
|
||||
);
|
||||
const events = await ndk.fetchEvents({
|
||||
authors: [pubkey],
|
||||
kinds: [1, 6],
|
||||
since: nHoursAgo(24),
|
||||
});
|
||||
|
||||
for (const event of events) {
|
||||
await createNote(
|
||||
|
Loading…
x
Reference in New Issue
Block a user