From fcb4dc37e2eb530503d4fd13e848947e2de493f7 Mon Sep 17 00:00:00 2001 From: florian <> Date: Sun, 19 May 2024 11:11:12 +0200 Subject: [PATCH] chore: Updated to latest packages --- bun.lockb | Bin 174238 -> 179158 bytes package-lock.json | 633 ++++++++---------- package.json | 44 +- src/components/BlobList/BlobList.tsx | 18 +- .../FileEventEditor/FileEventEditor.tsx | 3 + src/components/Layout/Layout.css | 2 +- src/components/Layout/Layout.tsx | 8 +- src/pages/Home.tsx | 4 +- src/pages/Upload.tsx | 4 +- src/utils/useServerInfo.ts | 8 +- 10 files changed, 334 insertions(+), 390 deletions(-) diff --git a/bun.lockb b/bun.lockb index ff61caf3745fded745aa05ddcae82bbe4d678b5d..df9993690010ff2ce2d924caef6dfc69b64fd8ee 100755 GIT binary patch delta 42226 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 DYh~S$ delta 39015 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 diff --git a/package-lock.json b/package-lock.json index 7537715..b67c545 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,44 +8,46 @@ "name": "blob-manager", "version": "0.0.0", "dependencies": { - "@headlessui/react": "^1.7.18", + "@headlessui/react": "^1.7.19", "@heroicons/react": "^2.1.3", "@noble/hashes": "^1.4.0", - "@nostr-dev-kit/ndk": "^2.7.1", - "@nostr-dev-kit/ndk-cache-dexie": "^2.3.1", - "@tanstack/react-query": "^5.29.0", - "@tanstack/react-query-devtools": "^5.29.0", + "@nostr-dev-kit/ndk": "^2.8.1", + "@nostr-dev-kit/ndk-cache-dexie": "^2.4.1", + "@tanstack/react-query": "^5.32.0", + "@tanstack/react-query-devtools": "^5.32.0", "add": "^2.0.6", "axios": "^1.6.8", "blossom-client-sdk": "^0.4.0", - "dayjs": "^1.11.10", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.11", "id3js": "^2.1.1", "lodash": "^4.17.21", - "nostr-tools": "^2.4.0", + "nostr-tools": "^2.5.1", "p-limit": "^5.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-pdf": "^7.7.1", - "react-router-dom": "^6.22.3" + "react-router-dom": "^6.23.0" }, "devDependencies": { - "@tanstack/eslint-plugin-query": "^5.28.6", + "@tanstack/eslint-plugin-query": "^5.28.11", + "@types/crypto-js": "^4.2.2", "@types/lodash": "^4.17.0", - "@types/react": "^18.2.74", - "@types/react-dom": "^18.2.24", - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", + "@typescript-eslint/eslint-plugin": "^7.7.1", + "@typescript-eslint/parser": "^7.7.1", "@vitejs/plugin-react-swc": "^3.6.0", "autoprefixer": "^10.4.19", "daisyui": "latest", - "eslint": "^8.57.0", + "eslint": "^8.56.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", "postcss": "^8.4.38", "prettier": "^3.2.5", "tailwindcss": "^3.4.3", - "typescript": "^5.4.4", - "vite": "^5.2.8", + "typescript": "^5.4.5", + "vite": "^5.2.10", "vite-bundle-visualizer": "^1.1.0" } }, @@ -517,9 +519,9 @@ } }, "node_modules/@headlessui/react": { - "version": "1.7.18", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.18.tgz", - "integrity": "sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==", + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.19.tgz", + "integrity": "sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==", "dependencies": { "@tanstack/react-virtual": "^3.0.0-beta.60", "client-only": "^0.0.1" @@ -815,9 +817,9 @@ } }, "node_modules/@nostr-dev-kit/ndk": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk/-/ndk-2.7.1.tgz", - "integrity": "sha512-EVN1jy6SXMm0cRvmzZFn2VTTPxcjI515KjBawNtmuQrPwyN+4J7zWnFlWq+KtavWbAuoQnh1rv+b6yWbBhpy5g==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk/-/ndk-2.8.2.tgz", + "integrity": "sha512-+dOEyuYvO5/MoI5iTi8C5HifmvfeEvpybNesluVYyu+o+koFdfc+WSYH050V8+9KlOgx8nOZAaqXnHz0KY1gBA==", "dependencies": { "@noble/curves": "^1.4.0", "@noble/hashes": "^1.3.1", @@ -834,79 +836,17 @@ } }, "node_modules/@nostr-dev-kit/ndk-cache-dexie": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk-cache-dexie/-/ndk-cache-dexie-2.3.1.tgz", - "integrity": "sha512-6R0PYLBW8TmX4mHfPxdFXVpypouZ0RFdSKBtITXsiujww0l4MBR3GGOmc8hVpr0O56Qvtr9Kv4P+34U/7PGc7g==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk-cache-dexie/-/ndk-cache-dexie-2.4.2.tgz", + "integrity": "sha512-ZHhaP6D0uCa7/XzZQYtu0QrF4eEpOnL9a7lcC3Nu/QmyyUiAHd+w6OEz6u5u+Rg3AgRAzDsfntJg915l5xSKBw==", "dependencies": { - "@nostr-dev-kit/ndk": "2.7.1", + "@nostr-dev-kit/ndk": "2.8.2", "debug": "^4.3.4", - "dexie": "^3.2.4", - "nostr-tools": "^1.14.0", + "dexie": "^4.0.2", + "nostr-tools": "^2.4.0", "typescript-lru-cache": "^2.0.0" } }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/@noble/ciphers": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.2.0.tgz", - "integrity": "sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw==", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/@noble/curves": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", - "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", - "dependencies": { - "@noble/hashes": "1.3.1" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/nostr-tools": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.17.0.tgz", - "integrity": "sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==", - "dependencies": { - "@noble/ciphers": "0.2.0", - "@noble/curves": "1.1.0", - "@noble/hashes": "1.3.1", - "@scure/base": "1.1.1", - "@scure/bip32": "1.3.1", - "@scure/bip39": "1.2.1" - }, - "peerDependencies": { - "typescript": ">=5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/@nostr-dev-kit/ndk/node_modules/@noble/ciphers": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.2.0.tgz", @@ -1002,9 +942,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", - "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", "engines": { "node": ">=14.0.0" } @@ -1585,29 +1525,29 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.29.0.tgz", - "integrity": "sha512-WgPTRs58hm9CMzEr5jpISe8HXa3qKQ8CxewdYZeVnA54JrPY9B1CZiwsCoLpLkf0dGRZq+LcX5OiJb0bEsOFww==", + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.36.1.tgz", + "integrity": "sha512-BteWYEPUcucEu3NBcDAgKuI4U25R9aPrHSP6YSf2NvaD2pSlIQTdqOfLRsxH9WdRYg7k0Uom35Uacb6nvbIMJg==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/query-devtools": { - "version": "5.28.10", - "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.28.10.tgz", - "integrity": "sha512-5UN629fKa5/1K/2Pd26gaU7epxRrYiT1gy+V+pW5K6hnf1DeUKK3pANSb2eHKlecjIKIhTwyF7k9XdyE2gREvQ==", + "version": "5.37.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.37.1.tgz", + "integrity": "sha512-XcG4IIHIv0YQKrexTqo2zogQWR1Sz672tX2KsfE9kzB+9zhx44vRKH5si4WDILE1PIWQpStFs/NnrDQrBAUQpg==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/react-query": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.29.0.tgz", - "integrity": "sha512-yxlhHB73jaBla6h5B6zPaGmQjokkzAhMHN4veotkPNiQ3Ac/mCxgABRZPsJJrgCTvhpcncBZcDBFxaR2B37vug==", + "version": "5.37.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.37.1.tgz", + "integrity": "sha512-EhtBNA8GL3XFeSx6VYUjXQ96n44xe3JGKZCzBINrCYlxbZP6UwBafv7ti4eSRWc2Fy+fybQre0w17gR6lMzULA==", "dependencies": { - "@tanstack/query-core": "5.29.0" + "@tanstack/query-core": "5.36.1" }, "funding": { "type": "github", @@ -1618,18 +1558,18 @@ } }, "node_modules/@tanstack/react-query-devtools": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.29.0.tgz", - "integrity": "sha512-WLuaU6yM4KdvBimEP1Km5lM4/p1J40cMp5I5z0Mc6a8QbBUYLK8qJcGIKelfLfDp7KmEcr59tzbRTmdH/GWvzQ==", + "version": "5.37.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.37.1.tgz", + "integrity": "sha512-fWL3rV/avL9HsHt3RVYxuLCqSHghBwSGPIUMDZ9hfg9PDjQaeI9d8kJj6yLoCBWUhTue5/rQbISvFtr+yxyYyA==", "dependencies": { - "@tanstack/query-devtools": "5.28.10" + "@tanstack/query-devtools": "5.37.1" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@tanstack/react-query": "^5.29.0", + "@tanstack/react-query": "^5.37.1", "react": "^18.0.0" } }, @@ -1658,6 +1598,12 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, + "node_modules/@types/crypto-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", + "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==", + "dev": true + }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -1683,9 +1629,9 @@ "devOptional": true }, "node_modules/@types/react": { - "version": "18.2.74", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.74.tgz", - "integrity": "sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==", + "version": "18.3.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz", + "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==", "devOptional": true, "dependencies": { "@types/prop-types": "*", @@ -1693,9 +1639,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.24", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.24.tgz", - "integrity": "sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dev": true, "dependencies": { "@types/react": "*" @@ -1708,22 +1654,20 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", - "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.9.0.tgz", + "integrity": "sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/type-utils": "7.3.1", - "@typescript-eslint/utils": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/type-utils": "7.9.0", + "@typescript-eslint/utils": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1743,15 +1687,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", - "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.9.0.tgz", + "integrity": "sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/typescript-estree": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", "debug": "^4.3.4" }, "engines": { @@ -1771,13 +1715,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", - "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.9.0.tgz", + "integrity": "sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1" + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1788,15 +1732,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", - "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.9.0.tgz", + "integrity": "sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/utils": "7.3.1", + "@typescript-eslint/typescript-estree": "7.9.0", + "@typescript-eslint/utils": "7.9.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1815,9 +1759,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", - "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.9.0.tgz", + "integrity": "sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1828,19 +1772,19 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", - "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.9.0.tgz", + "integrity": "sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1855,19 +1799,31 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", - "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.9.0.tgz", + "integrity": "sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/typescript-estree": "7.9.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1881,13 +1837,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", - "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.9.0.tgz", + "integrity": "sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.3.1", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.9.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2488,6 +2444,11 @@ "node": ">= 8" } }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, "node_modules/css-selector-tokenizer": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", @@ -2565,9 +2526,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" }, "node_modules/debug": { "version": "4.3.4", @@ -2644,12 +2605,9 @@ } }, "node_modules/dexie": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.7.tgz", - "integrity": "sha512-2a+BXvVhY5op+smDRLxeBAivE7YcYaneXJ1la3HOkUfX9zKkE/AJ8CNgjiXbtXepFyFmJNGSbmjOwqbT749r/w==", - "engines": { - "node": ">=6.0" - } + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/dexie/-/dexie-4.0.4.tgz", + "integrity": "sha512-wFzwWSUdi+MC3jiFeQcCp9nInR7EaX8edzYY+4wmiITkQAiSnHpe4Wo2o5Ce5tJZe2nqt7mLW91MsW4GYx3ziQ==" }, "node_modules/didyoumean": { "version": "1.2.2", @@ -4136,9 +4094,9 @@ } }, "node_modules/nostr-tools": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.4.0.tgz", - "integrity": "sha512-xQC7XdGeh0gLyprcKhvx5lwr7OQ+ZOiQ9C6GpzlVAj+EBv+AiN8kySb57t3uJoG1HK15oT9jf++MmQLwhp1xNQ==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.5.2.tgz", + "integrity": "sha512-Ls2FKh694eudBye6q89yJ5JhXjQle1MWp1yD2sBZ5j9M3IOBEW8ia9IED5W6daSAjlT/Z/pV77yTkdF45c1Rbg==", "dependencies": { "@noble/ciphers": "^0.5.1", "@noble/curves": "1.2.0", @@ -4726,11 +4684,11 @@ } }, "node_modules/react-router": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", - "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz", + "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==", "dependencies": { - "@remix-run/router": "1.15.3" + "@remix-run/router": "1.16.1" }, "engines": { "node": ">=14.0.0" @@ -4740,12 +4698,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", - "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz", + "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==", "dependencies": { - "@remix-run/router": "1.15.3", - "react-router": "6.22.3" + "@remix-run/router": "1.16.1", + "react-router": "6.23.1" }, "engines": { "node": ">=14.0.0" @@ -5437,9 +5395,9 @@ } }, "node_modules/typescript": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", - "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "devOptional": true, "bin": { "tsc": "bin/tsc", @@ -5520,9 +5478,9 @@ "devOptional": true }, "node_modules/vite": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", - "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", + "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", "dev": true, "dependencies": { "esbuild": "^0.20.1", @@ -6132,9 +6090,9 @@ "dev": true }, "@headlessui/react": { - "version": "1.7.18", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.18.tgz", - "integrity": "sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==", + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.19.tgz", + "integrity": "sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==", "requires": { "@tanstack/react-virtual": "^3.0.0-beta.60", "client-only": "^0.0.1" @@ -6345,9 +6303,9 @@ } }, "@nostr-dev-kit/ndk": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk/-/ndk-2.7.1.tgz", - "integrity": "sha512-EVN1jy6SXMm0cRvmzZFn2VTTPxcjI515KjBawNtmuQrPwyN+4J7zWnFlWq+KtavWbAuoQnh1rv+b6yWbBhpy5g==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk/-/ndk-2.8.2.tgz", + "integrity": "sha512-+dOEyuYvO5/MoI5iTi8C5HifmvfeEvpybNesluVYyu+o+koFdfc+WSYH050V8+9KlOgx8nOZAaqXnHz0KY1gBA==", "requires": { "@noble/curves": "^1.4.0", "@noble/hashes": "^1.3.1", @@ -6419,53 +6377,15 @@ } }, "@nostr-dev-kit/ndk-cache-dexie": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk-cache-dexie/-/ndk-cache-dexie-2.3.1.tgz", - "integrity": "sha512-6R0PYLBW8TmX4mHfPxdFXVpypouZ0RFdSKBtITXsiujww0l4MBR3GGOmc8hVpr0O56Qvtr9Kv4P+34U/7PGc7g==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk-cache-dexie/-/ndk-cache-dexie-2.4.2.tgz", + "integrity": "sha512-ZHhaP6D0uCa7/XzZQYtu0QrF4eEpOnL9a7lcC3Nu/QmyyUiAHd+w6OEz6u5u+Rg3AgRAzDsfntJg915l5xSKBw==", "requires": { - "@nostr-dev-kit/ndk": "2.7.1", + "@nostr-dev-kit/ndk": "2.8.2", "debug": "^4.3.4", - "dexie": "^3.2.4", - "nostr-tools": "^1.14.0", + "dexie": "^4.0.2", + "nostr-tools": "^2.4.0", "typescript-lru-cache": "^2.0.0" - }, - "dependencies": { - "@noble/ciphers": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.2.0.tgz", - "integrity": "sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw==" - }, - "@noble/curves": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", - "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", - "requires": { - "@noble/hashes": "1.3.1" - } - }, - "@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" - }, - "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" - }, - "nostr-tools": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.17.0.tgz", - "integrity": "sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==", - "requires": { - "@noble/ciphers": "0.2.0", - "@noble/curves": "1.1.0", - "@noble/hashes": "1.3.1", - "@scure/base": "1.1.1", - "@scure/bip32": "1.3.1", - "@scure/bip39": "1.2.1" - } - } } }, "@pkgjs/parseargs": { @@ -6476,9 +6396,9 @@ "optional": true }, "@remix-run/router": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", - "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==" + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==" }, "@rollup/rollup-android-arm-eabi": { "version": "4.13.0", @@ -6798,29 +6718,29 @@ } }, "@tanstack/query-core": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.29.0.tgz", - "integrity": "sha512-WgPTRs58hm9CMzEr5jpISe8HXa3qKQ8CxewdYZeVnA54JrPY9B1CZiwsCoLpLkf0dGRZq+LcX5OiJb0bEsOFww==" + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.36.1.tgz", + "integrity": "sha512-BteWYEPUcucEu3NBcDAgKuI4U25R9aPrHSP6YSf2NvaD2pSlIQTdqOfLRsxH9WdRYg7k0Uom35Uacb6nvbIMJg==" }, "@tanstack/query-devtools": { - "version": "5.28.10", - "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.28.10.tgz", - "integrity": "sha512-5UN629fKa5/1K/2Pd26gaU7epxRrYiT1gy+V+pW5K6hnf1DeUKK3pANSb2eHKlecjIKIhTwyF7k9XdyE2gREvQ==" + "version": "5.37.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.37.1.tgz", + "integrity": "sha512-XcG4IIHIv0YQKrexTqo2zogQWR1Sz672tX2KsfE9kzB+9zhx44vRKH5si4WDILE1PIWQpStFs/NnrDQrBAUQpg==" }, "@tanstack/react-query": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.29.0.tgz", - "integrity": "sha512-yxlhHB73jaBla6h5B6zPaGmQjokkzAhMHN4veotkPNiQ3Ac/mCxgABRZPsJJrgCTvhpcncBZcDBFxaR2B37vug==", + "version": "5.37.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.37.1.tgz", + "integrity": "sha512-EhtBNA8GL3XFeSx6VYUjXQ96n44xe3JGKZCzBINrCYlxbZP6UwBafv7ti4eSRWc2Fy+fybQre0w17gR6lMzULA==", "requires": { - "@tanstack/query-core": "5.29.0" + "@tanstack/query-core": "5.36.1" } }, "@tanstack/react-query-devtools": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.29.0.tgz", - "integrity": "sha512-WLuaU6yM4KdvBimEP1Km5lM4/p1J40cMp5I5z0Mc6a8QbBUYLK8qJcGIKelfLfDp7KmEcr59tzbRTmdH/GWvzQ==", + "version": "5.37.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.37.1.tgz", + "integrity": "sha512-fWL3rV/avL9HsHt3RVYxuLCqSHghBwSGPIUMDZ9hfg9PDjQaeI9d8kJj6yLoCBWUhTue5/rQbISvFtr+yxyYyA==", "requires": { - "@tanstack/query-devtools": "5.28.10" + "@tanstack/query-devtools": "5.37.1" } }, "@tanstack/react-virtual": { @@ -6836,6 +6756,12 @@ "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.2.0.tgz", "integrity": "sha512-P5XgYoAw/vfW65byBbJQCw+cagdXDT/qH6wmABiLt4v4YBT2q2vqCOhihe+D1Nt325F/S/0Tkv6C5z0Lv+VBQQ==" }, + "@types/crypto-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", + "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==", + "dev": true + }, "@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -6861,9 +6787,9 @@ "devOptional": true }, "@types/react": { - "version": "18.2.74", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.74.tgz", - "integrity": "sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==", + "version": "18.3.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz", + "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==", "devOptional": true, "requires": { "@types/prop-types": "*", @@ -6871,9 +6797,9 @@ } }, "@types/react-dom": { - "version": "18.2.24", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.24.tgz", - "integrity": "sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dev": true, "requires": { "@types/react": "*" @@ -6886,104 +6812,110 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", - "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.9.0.tgz", + "integrity": "sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==", "dev": true, "requires": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/type-utils": "7.3.1", - "@typescript-eslint/utils": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/type-utils": "7.9.0", + "@typescript-eslint/utils": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" } }, "@typescript-eslint/parser": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", - "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.9.0.tgz", + "integrity": "sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/typescript-estree": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", - "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.9.0.tgz", + "integrity": "sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==", "dev": true, "requires": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1" + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0" } }, "@typescript-eslint/type-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", - "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.9.0.tgz", + "integrity": "sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/utils": "7.3.1", + "@typescript-eslint/typescript-estree": "7.9.0", + "@typescript-eslint/utils": "7.9.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" } }, "@typescript-eslint/types": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", - "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.9.0.tgz", + "integrity": "sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", - "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.9.0.tgz", + "integrity": "sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==", "dev": true, "requires": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "@typescript-eslint/utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", - "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.9.0.tgz", + "integrity": "sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/typescript-estree": "7.9.0" } }, "@typescript-eslint/visitor-keys": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", - "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.9.0.tgz", + "integrity": "sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==", "dev": true, "requires": { - "@typescript-eslint/types": "7.3.1", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.9.0", + "eslint-visitor-keys": "^3.4.3" } }, "@ungap/structured-clone": { @@ -7403,6 +7335,11 @@ "which": "^2.0.1" } }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, "css-selector-tokenizer": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", @@ -7458,9 +7395,9 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" }, "dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" }, "debug": { "version": "4.3.4", @@ -7514,9 +7451,9 @@ "optional": true }, "dexie": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.7.tgz", - "integrity": "sha512-2a+BXvVhY5op+smDRLxeBAivE7YcYaneXJ1la3HOkUfX9zKkE/AJ8CNgjiXbtXepFyFmJNGSbmjOwqbT749r/w==" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/dexie/-/dexie-4.0.4.tgz", + "integrity": "sha512-wFzwWSUdi+MC3jiFeQcCp9nInR7EaX8edzYY+4wmiITkQAiSnHpe4Wo2o5Ce5tJZe2nqt7mLW91MsW4GYx3ziQ==" }, "didyoumean": { "version": "1.2.2", @@ -8610,9 +8547,9 @@ "dev": true }, "nostr-tools": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.4.0.tgz", - "integrity": "sha512-xQC7XdGeh0gLyprcKhvx5lwr7OQ+ZOiQ9C6GpzlVAj+EBv+AiN8kySb57t3uJoG1HK15oT9jf++MmQLwhp1xNQ==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.5.2.tgz", + "integrity": "sha512-Ls2FKh694eudBye6q89yJ5JhXjQle1MWp1yD2sBZ5j9M3IOBEW8ia9IED5W6daSAjlT/Z/pV77yTkdF45c1Rbg==", "requires": { "@noble/ciphers": "^0.5.1", "@noble/curves": "1.2.0", @@ -8980,20 +8917,20 @@ } }, "react-router": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", - "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz", + "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==", "requires": { - "@remix-run/router": "1.15.3" + "@remix-run/router": "1.16.1" } }, "react-router-dom": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", - "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz", + "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==", "requires": { - "@remix-run/router": "1.15.3", - "react-router": "6.22.3" + "@remix-run/router": "1.16.1", + "react-router": "6.23.1" } }, "read-cache": { @@ -9470,9 +9407,9 @@ } }, "typescript": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", - "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "devOptional": true }, "typescript-lru-cache": { @@ -9519,9 +9456,9 @@ "devOptional": true }, "vite": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", - "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", + "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", "dev": true, "requires": { "esbuild": "^0.20.1", diff --git a/package.json b/package.json index 5161888..1c43446 100644 --- a/package.json +++ b/package.json @@ -12,44 +12,44 @@ "analyze": "vite-bundle-visualizer" }, "dependencies": { - "@headlessui/react": "^1.7.19", + "@headlessui/react": "^2.0.3", "@heroicons/react": "^2.1.3", "@noble/hashes": "^1.4.0", - "@nostr-dev-kit/ndk": "^2.8.1", - "@nostr-dev-kit/ndk-cache-dexie": "^2.4.1", - "@tanstack/react-query": "^5.32.0", - "@tanstack/react-query-devtools": "^5.32.0", + "@nostr-dev-kit/ndk": "^2.8.2", + "@nostr-dev-kit/ndk-cache-dexie": "^2.4.2", + "@tanstack/react-query": "^5.37.1", + "@tanstack/react-query-devtools": "^5.37.1", "add": "^2.0.6", "axios": "^1.6.8", - "blossom-client-sdk": "^0.4.0", + "blossom-client-sdk": "^0.8.0", "dayjs": "^1.11.11", "id3js": "^2.1.1", "lodash": "^4.17.21", - "nostr-tools": "^2.5.1", + "nostr-tools": "^2.5.2", "p-limit": "^5.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-pdf": "^7.7.1", - "react-router-dom": "^6.23.0" + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-pdf": "^8.0.2", + "react-router-dom": "^6.23.1" }, "devDependencies": { - "@tanstack/eslint-plugin-query": "^5.28.11", - "@types/lodash": "^4.17.0", - "@types/react": "^18.2.79", - "@types/react-dom": "^18.2.25", - "@typescript-eslint/eslint-plugin": "^7.7.1", - "@typescript-eslint/parser": "^7.7.1", + "@tanstack/eslint-plugin-query": "^5.35.6", + "@types/lodash": "^4.17.4", + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.9.0", + "@typescript-eslint/parser": "^7.9.0", "@vitejs/plugin-react-swc": "^3.6.0", "autoprefixer": "^10.4.19", "daisyui": "latest", - "eslint": "^8.56.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.6", + "eslint": "^9.3.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", "postcss": "^8.4.38", "prettier": "^3.2.5", "tailwindcss": "^3.4.3", "typescript": "^5.4.5", - "vite": "^5.2.10", - "vite-bundle-visualizer": "^1.1.0" + "vite": "^5.2.11", + "vite-bundle-visualizer": "^1.2.1" } } diff --git a/src/components/BlobList/BlobList.tsx b/src/components/BlobList/BlobList.tsx index 762bcb3..9c12f0d 100644 --- a/src/components/BlobList/BlobList.tsx +++ b/src/components/BlobList/BlobList.tsx @@ -39,12 +39,12 @@ const BlobList = ({ blobs, onDelete, title, className = '' }: BlobListProps) => const fileMetaEventsByHash = useFileMetaEventsByHash(); const images = useMemo( - () => blobs.filter(b => b.type?.startsWith('image/')).sort((a, b) => (a.created > b.created ? -1 : 1)), // descending + () => blobs.filter(b => b.type?.startsWith('image/')).sort((a, b) => (a.uploaded > b.uploaded ? -1 : 1)), // descending [blobs] ); const videos = useMemo( - () => blobs.filter(b => b.type?.startsWith('video/')).sort((a, b) => (a.created > b.created ? -1 : 1)), // descending + () => blobs.filter(b => b.type?.startsWith('video/')).sort((a, b) => (a.uploaded > b.uploaded ? -1 : 1)), // descending [blobs] ); @@ -67,7 +67,7 @@ const BlobList = ({ blobs, onDelete, title, className = '' }: BlobListProps) => }; const audioFiles = useMemo( - () => blobs.filter(b => b.type?.startsWith('audio/')).sort((a, b) => (a.created > b.created ? -1 : 1)), + () => blobs.filter(b => b.type?.startsWith('audio/')).sort((a, b) => (a.uploaded > b.uploaded ? -1 : 1)), [blobs] ); @@ -84,7 +84,7 @@ const BlobList = ({ blobs, onDelete, title, className = '' }: BlobListProps) => }); const docs = useMemo( - () => blobs.filter(b => b.type?.startsWith('application/pdf')).sort((a, b) => (a.created > b.created ? -1 : 1)), // descending + () => blobs.filter(b => b.type?.startsWith('application/pdf')).sort((a, b) => (a.uploaded > b.uploaded ? -1 : 1)), // descending [blobs] ); @@ -235,7 +235,7 @@ const BlobList = ({ blobs, onDelete, title, className = '' }: BlobListProps) =>
{formatFileSize(blob.size)} - {formatDate(blob.created)} + {formatDate(blob.uploaded)}
@@ -254,7 +254,7 @@ const BlobList = ({ blobs, onDelete, title, className = '' }: BlobListProps) =>
{formatFileSize(blob.size)} - {formatDate(blob.created)} + {formatDate(blob.uploaded)}
@@ -292,7 +292,7 @@ const BlobList = ({ blobs, onDelete, title, className = '' }: BlobListProps) =>
{formatFileSize(blob.data.size)} - {formatDate(blob.data.created)} + {formatDate(blob.data.uploaded)}
@@ -322,7 +322,7 @@ const BlobList = ({ blobs, onDelete, title, className = '' }: BlobListProps) =>
{formatFileSize(blob.size)} - {formatDate(blob.created)} + {formatDate(blob.uploaded)}
@@ -360,7 +360,7 @@ const BlobList = ({ blobs, onDelete, title, className = '' }: BlobListProps) => {formatFileSize(blob.size)} {blob.type && `${blob.type}`} - {formatDate(blob.created)} + {formatDate(blob.uploaded)} diff --git a/src/components/FileEventEditor/FileEventEditor.tsx b/src/components/FileEventEditor/FileEventEditor.tsx index b284d9d..4eaade9 100644 --- a/src/components/FileEventEditor/FileEventEditor.tsx +++ b/src/components/FileEventEditor/FileEventEditor.tsx @@ -67,6 +67,9 @@ const FileEventEditor = ({ data }: { data: FileEventData }) => { }, [thumbnailSubscription.events]); const publishFileEvent = async (data: FileEventData) => { + + // TODO REupload selected video thumbnail from DVM + const e: NostrEvent = { created_at: dayjs().unix(), content: data.content, diff --git a/src/components/Layout/Layout.css b/src/components/Layout/Layout.css index 9d76bfe..d2434c4 100644 --- a/src/components/Layout/Layout.css +++ b/src/components/Layout/Layout.css @@ -8,7 +8,7 @@ .footer { - @apply justify-center gap-1 text-base-content pt-12 pb-6; + @apply justify-center gap-1 text-base-content pt-12 pb-12; } .btn svg { diff --git a/src/components/Layout/Layout.tsx b/src/components/Layout/Layout.tsx index 051010b..0704210 100644 --- a/src/components/Layout/Layout.tsx +++ b/src/components/Layout/Layout.tsx @@ -41,9 +41,9 @@ export const Layout = () => { className="inline-block w-5 h-5 stroke-current" > @@ -73,7 +73,7 @@ export const Layout = () => {
{}
- made with 💜 by{' '} + made with 💜 by{' '} florian
diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index 7638bd6..1d8b9b5 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -46,7 +46,7 @@ function Home() { () => selectedServer != undefined ? serverInfo[selectedServer].blobs?.sort( - (a, b) => (a.created > b.created ? -1 : 1) // descending + (a, b) => (a.uploaded > b.uploaded ? -1 : 1) // descending ) : undefined, [serverInfo, selectedServer] @@ -66,7 +66,7 @@ function Home() { {selectedServer && serverInfo[selectedServer] && selectedServerBlobs && ( deleteBlob.mutate({ diff --git a/src/pages/Upload.tsx b/src/pages/Upload.tsx index 71ff742..ea044f8 100644 --- a/src/pages/Upload.tsx +++ b/src/pages/Upload.tsx @@ -105,7 +105,7 @@ function Upload() { // for image resizing const fileDimensions: { [key: string]: FileEventData } = {}; for (const file of filesToUpload) { - let data = { content: file.name.replace(/\.[a-zA-Z0-9]{3,4}$/,''), url: [] as string[] } as FileEventData; + let data = { content: file.name.replace(/\.[a-zA-Z0-9]{3,4}$/, ''), url: [] as string[] } as FileEventData; if (file.type.startsWith('image/')) { const dimensions = await getImageSize(file); data = { ...data, dim: `${dimensions.width}x${dimensions.height}` }; @@ -117,7 +117,9 @@ function Upload() { const serverUrl = serverInfo[server.name].url; let serverTransferred = 0; for (const file of filesToUpload) { + console.log('Creating auth ', Date.now()); const uploadAuth = await BlossomClient.getUploadAuth(file, signEventTemplate, 'Upload Blob'); + console.log('Auth done ', Date.now(), uploadAuth); const newBlob = await uploadBlob(serverUrl, file, uploadAuth, progressEvent => { setTransfers(ut => ({ diff --git a/src/utils/useServerInfo.ts b/src/utils/useServerInfo.ts index fc17d00..d15f1d4 100644 --- a/src/utils/useServerInfo.ts +++ b/src/utils/useServerInfo.ts @@ -4,6 +4,7 @@ import { BlobDescriptor, BlossomClient } from 'blossom-client-sdk'; import { useNDK } from '../utils/ndk'; import { nip19 } from 'nostr-tools'; import { useUserServers } from './useUserServers'; +import dayjs from 'dayjs'; export type ServerInfo = { count: number; @@ -32,8 +33,9 @@ export const useServerInfo = () => { queryFn: async () => { const listAuthEvent = await BlossomClient.getListAuth(signEventTemplate, 'List Blobs'); const blobs = await BlossomClient.listBlobs(server.url, pubkey!, undefined, listAuthEvent); - // fix for wrong timestamps on media-server.slidestr.net (remove) - return blobs.map(b => ({ ...b, created: b.created > 1711200000000 ? b.created / 1000 : b.created })); + + // fallback to deprecated created attibute for servers that are not using 'uploaded' yet + return blobs.map(b => ({ ...b, uploaded: b.uploaded || b.created || dayjs().unix()})); }, enabled: !!pubkey && servers.length > 0, staleTime: 1000 * 60 * 5, @@ -51,7 +53,7 @@ export const useServerInfo = () => { isError: blobs[sx].isError, count: blobs[sx].data?.length || 0, size: blobs[sx].data?.reduce((acc, blob) => acc + blob.size, 0) || 0, - lastChange: blobs[sx].data?.reduce((acc, blob) => Math.max(acc, blob.created), 0) || 0, + lastChange: blobs[sx].data?.reduce((acc, blob) => Math.max(acc, blob.uploaded), 0) || 0, }; }); return info;