web


git clone https://radroots.dev/git/web.git
Log | Files | Refs | Submodules | README | LICENSE

commit b9699d53fbd6e95c91801de347718155665d2e30
parent 36600e6e4251332f52fb279fdaf9ab5138cdd549
Author: triesap <triesap@radroots.dev>
Date:   Thu, 25 Dec 2025 03:12:49 +0000

nostr: migrate app from NDK to radroots nostr stack

- Drop NDK deps and env vars; add @radroots/nostr + apps-nostr packages
- Switch relay wiring and login flow to nostr_context + nip01 helpers
- Add runtime type guard for photo upload response payload
- Simplify turbo scripts/graph and update packages submodule + lockfile

Diffstat:
MCONTRIBUTING.md | 3+--
Mapp/.env.example | 3+--
Mapp/package.json | 8+++-----
Mapp/src/lib/_env.ts | 8--------
Mapp/src/lib/utils/app/handlers.ts | 19++++++++++++++++---
Mapp/src/lib/utils/config.ts | 2+-
Mapp/src/routes/(app)/+layout.svelte | 17++++++++---------
Mapp/src/routes/(app)/farms/+page.svelte | 6+++---
Mapp/src/routes/(app)/profile/+page.svelte | 22+++++++++++++++-------
Mapp/src/routes/(cfg)/setup/+page.svelte | 14++++++++++----
Mpackage.json | 8++++----
Mpnpm-lock.yaml | 279+++++++++++++++++++++++++++++++++----------------------------------------------
Mturbo.json | 48+++++++++++++++++++++++++++++++++++++-----------
13 files changed, 215 insertions(+), 222 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md @@ -75,8 +75,7 @@ echo 'VITE_PUBLIC_DEFAULT_RELAYS=ws://localhost:8080,ws://localhost:8081 VITE_PUBLIC_RADROOTS_RELAY=ws://localhost:8082 VITE_PUBLIC_RADROOTS_API=https://radroots.org VITE_PUBLIC_KEYVAL_NAME=rad-roots-pwa-dev-v1 -VITE_PUBLIC_NDK_CACHE=rad-roots-pwa-dev-v1 -VITE_PUBLIC_NDK_CLIENT=rad roots' > app/.env.development +VITE_PUBLIC_NOSTR_CLIENT=ยป-`-,- rad roots' > app/.env.development ``` Build the application: diff --git a/app/.env.example b/app/.env.example @@ -2,8 +2,7 @@ VITE_PUBLIC_DEFAULT_RELAYS= VITE_PUBLIC_RADROOTS_API= VITE_PUBLIC_RADROOTS_MEDIA= VITE_PUBLIC_KEYVAL_NAME= -VITE_PUBLIC_NDK_CACHE= -VITE_PUBLIC_NDK_CLIENT= +VITE_PUBLIC_NOSTR_CLIENT= PORT= VITE_PUBLIC_RADROOTS_RELAY= VITE_PLATFORM_NAME= diff --git a/app/package.json b/app/package.json @@ -32,21 +32,20 @@ "wrangler": "^4.42.2" }, "dependencies": { - "@nostr-dev-kit/ndk": "2.14.33", - "@nostr-dev-kit/ndk-svelte": "2.4.38", "@radroots/apps-lib": "workspace:*", "@radroots/apps-lib-pwa": "workspace:*", + "@radroots/apps-nostr": "workspace:*", "@radroots/client": "workspace:*", "@radroots/events-bindings": "workspace:*", "@radroots/geo": "workspace:*", "@radroots/http": "workspace:*", "@radroots/geocoder": "workspace:*", "@radroots/locales": "workspace:*", + "@radroots/nostr": "workspace:*", "@radroots/tangle-schema-bindings": "workspace:*", "@radroots/themes": "workspace:*", "@radroots/types-bindings": "workspace:*", "@radroots/utils": "workspace:*", - "@radroots/utils-nostr": "workspace:*", "chart.js": "^4.4.5", "css-paint-polyfill": "^3.4.0", "idb-keyval": "^6.2.1", @@ -54,4 +53,4 @@ "svelte-maplibre": "^1.2.0", "zod": "^3.23.8" } -} -\ No newline at end of file +} diff --git a/app/src/lib/_env.ts b/app/src/lib/_env.ts @@ -10,12 +10,6 @@ if (!RADROOTS_MEDIA || typeof RADROOTS_MEDIA !== 'string') throw new Error('Miss const KEYVAL_NAME = import.meta.env.VITE_PUBLIC_KEYVAL_NAME; if (!KEYVAL_NAME || typeof KEYVAL_NAME !== 'string') throw new Error('Missing env var: VITE_PUBLIC_KEYVAL_NAME'); -const NDK_CACHE = import.meta.env.VITE_PUBLIC_NDK_CACHE; -if (!NDK_CACHE || typeof NDK_CACHE !== 'string') throw new Error('Missing env var: VITE_PUBLIC_NDK_CACHE'); - -const NDK_CLIENT = import.meta.env.VITE_PUBLIC_NDK_CLIENT; -if (!NDK_CLIENT || typeof NDK_CLIENT !== 'string') throw new Error('Missing env var: VITE_PUBLIC_NDK_CLIENT'); - const RADROOTS_RELAY = import.meta.env.VITE_PUBLIC_RADROOTS_RELAY; if (!RADROOTS_RELAY || typeof RADROOTS_RELAY !== 'string') throw new Error('Missing env var: VITE_PUBLIC_RADROOTS_RELAY'); @@ -34,8 +28,6 @@ export const _env = { PROD, DEFAULT_RELAYS, KEYVAL_NAME, - NDK_CACHE, - NDK_CLIENT, PLATFORM_ACCENT, PLATFORM_DESCRIPTION, PLATFORM_NAME, diff --git a/app/src/lib/utils/app/handlers.ts b/app/src/lib/utils/app/handlers.ts @@ -3,6 +3,20 @@ import { parse_theme_mode } from "@radroots/themes"; import { throw_err } from "@radroots/utils"; import { fs, geoc, geol, http, notif } from "."; +type PhotoUploadResponse = { + res_base: string; + res_path: string; + file_ext: string; +}; + +const is_photo_upload_response = (value: unknown): value is PhotoUploadResponse => { + if (!value || typeof value !== "object") return false; + const record = value as Record<string, unknown>; + return typeof record.res_base === "string" + && typeof record.res_path === "string" + && typeof record.file_ext === "string"; +}; + export const lc_gui_alert: LocalCallbackGuiAlert = async (message) => { return await notif.alert(message); }; @@ -56,11 +70,11 @@ export const lc_photos_upload: LocalCallbackPhotosUpload = async ({ url, path }) data_bin, }); if ("err" in res) throw_err(res); - else if (res.data && res.data.res_base && res.data.res_path && res.data.file_ext) { + else if (is_photo_upload_response(res.data)) { return { base_url: res.data.res_base, file_hash: res.data.res_path, file_ext: res.data.file_ext } } -}; -\ No newline at end of file +}; diff --git a/app/src/lib/utils/config.ts b/app/src/lib/utils/config.ts @@ -1,7 +1,7 @@ import { _env } from "$lib/_env"; import type { AppConfigRole } from "@radroots/apps-lib-pwa/types/app"; import { root_symbol } from "@radroots/utils"; -import type { NostrEventTagClient } from "@radroots/utils-nostr"; +import type { NostrEventTagClient } from "@radroots/nostr"; export const cfg_data = { sql_cipher: { diff --git a/app/src/routes/(app)/+layout.svelte b/app/src/routes/(app)/+layout.svelte @@ -1,11 +1,13 @@ <script lang="ts"> import { db, nostr_keys } from "$lib/utils/app"; - import { ndk, ndk_init, ndk_user } from "@radroots/apps-lib"; + import { nostr_login_nip01 } from "@radroots/apps-nostr"; + import { nostr_context_default, nostr_relays_clear, nostr_relays_open } from "@radroots/nostr"; import { handle_err, throw_err } from "@radroots/utils"; import { onMount } from "svelte"; import type { LayoutProps } from "./$types"; let { data, children }: LayoutProps = $props(); + const nostr_context = nostr_context_default(); onMount(async () => { try { @@ -34,14 +36,11 @@ }, }); if ("err" in nostr_relays) throw_err(nostr_relays); - $ndk.explicitRelayUrls = []; - for (const { url } of nostr_relays.results) $ndk.addExplicitRelay(url); - await $ndk.connect().then(() => { - console.log(`[tangle] ndk connected`); - }); - const ndk_user_init = await ndk_init($ndk, nostr_key.secret_key); - $ndk_user = ndk_user_init; - $ndk_user.ndk = $ndk; + const relay_urls = nostr_relays.results.map(({ url }) => url); + nostr_relays_clear(nostr_context); + if (relay_urls.length) nostr_relays_open(nostr_context, relay_urls); + if (relay_urls.length) console.log(`[tangle] nostr relays opened`); + nostr_login_nip01(nostr_key.secret_key); //nostr_ndk_configured.set(true); }; </script> diff --git a/app/src/routes/(app)/farms/+page.svelte b/app/src/routes/(app)/farms/+page.svelte @@ -24,17 +24,17 @@ const list: FarmExtended[] = []; for (const farm of farms.results) { - const farm_location = await db.location_gcs_find_many({ + const farm_locations = await db.location_gcs_find_many({ rel: { on_farm: { id: farm.id, }, }, }); - if ("err" in farm_location) continue; + if ("err" in farm_locations) continue; list.push({ farm, - location: gcs_to_location_basis(farm_location.results[0]), + location: gcs_to_location_basis(farm_locations.results[0]), }); } diff --git a/app/src/routes/(app)/profile/+page.svelte b/app/src/routes/(app)/profile/+page.svelte @@ -1,7 +1,8 @@ <script lang="ts"> import { db, fs, nostr_keys, notif, radroots, route } from "$lib/utils/app"; import { ls } from "$lib/utils/i18n"; - import { ndk_user, parse_file_path } from "@radroots/apps-lib"; + import { parse_file_path } from "@radroots/apps-lib"; + import { nostr_pubkey } from "@radroots/apps-nostr"; import { Profile } from "@radroots/apps-lib-pwa"; import type { IViewProfileData } from "@radroots/apps-lib-pwa/types/views/profile"; import { handle_err, throw_err } from "@radroots/utils"; @@ -28,9 +29,11 @@ }; const load_data = async (): Promise<IViewProfileData | undefined> => { + const pubkey_val = $nostr_pubkey; + if (!pubkey_val) return undefined; const nostr_profile = await db.nostr_profile_find_one({ on: { - public_key: $ndk_user?.pubkey, + public_key: pubkey_val, }, }); if ("err" in nostr_profile) throw_err(nostr_profile); @@ -47,9 +50,11 @@ loading_photo_upload_open, on_destroy: async () => { try { + const pubkey_val = $nostr_pubkey; + if (!pubkey_val) return; const tb_nostrprofile = await db.nostr_profile_find_one({ on: { - public_key: $ndk_user?.pubkey, + public_key: pubkey_val, }, }); if ("err" in tb_nostrprofile) throw_err(tb_nostrprofile); // @todo @@ -62,9 +67,10 @@ }, on_handle_back: async ({ is_photo_existing }) => { try { - if (!photo_path || !$ndk_user?.pubkey) + const pubkey_val = $nostr_pubkey; + if (!photo_path || !pubkey_val) return void (await route(`/`)); - const nostr_key = await nostr_keys.read($ndk_user.pubkey); + const nostr_key = await nostr_keys.read(pubkey_val); if ("err" in nostr_key) throw_err(nostr_key); /*if (photo_path) { const confirm = await notif.confirm({ @@ -140,7 +146,7 @@ if ("err" in media_image) throw_err(media_image); const tb_nostr_profile_update = await db.nostr_profile_update({ - on: { public_key: $ndk_user.pubkey }, + on: { public_key: pubkey_val }, fields: { picture: `${media_upload.base_url}/${media_upload.hash}.${media_upload.ext}`, }, @@ -199,8 +205,10 @@ }); if (!confirm) return; } + const pubkey_val = $nostr_pubkey; + if (!pubkey_val) return; await route(`/profile/edit`, [ - [`key_nostr`, $ndk_user?.pubkey], + [`key_nostr`, pubkey_val], [`field`, field], ]); } catch (e) { diff --git a/app/src/routes/(cfg)/setup/+page.svelte b/app/src/routes/(cfg)/setup/+page.svelte @@ -16,7 +16,6 @@ } from "$lib/utils/config"; import { ls } from "$lib/utils/i18n"; import { get_default_nostr_relays } from "$lib/utils/nostr/lib"; - import { NDKPrivateKeySigner } from "@nostr-dev-kit/ndk"; import { carousel_dec, carousel_inc, @@ -40,6 +39,7 @@ } from "@radroots/apps-lib-pwa"; import { app_lo, app_loading } from "@radroots/apps-lib-pwa/stores/app"; import type { AppConfigRole } from "@radroots/apps-lib-pwa/types/app"; + import { nostr_secret_key_validate } from "@radroots/nostr"; import type { IError } from "@radroots/types-bindings"; import { err_msg, @@ -220,8 +220,14 @@ value: `${$ls(`common.nostr_key`)}`.toLowerCase(), })}`, )); - const key_add_signer = new NDKPrivateKeySigner(nostr_key_add_val); - await add_nostr_key(key_add_signer.privateKey); + const secret_key = nostr_secret_key_validate(nostr_key_add_val); + if (!secret_key) + return void (await notif.alert( + `${$ls(`icu.not_a_valid_*`, { + value: `${$ls(`common.nostr_key`)}`.toLowerCase(), + })}`, + )); + await add_nostr_key(secret_key); nostr_key_add_val = ``; handle_view(`cfg_profile`); } catch (e) { @@ -454,7 +460,7 @@ }; </script> -{#if view === "cfg_key" && $casl_i === 1} +{#if view === "cfg_key" && $casl_i > 0} <Fade basis={{ classes: `z-10 absolute top-8 right-6` }}> <SelectMenu basis={{ diff --git a/package.json b/package.json @@ -4,10 +4,10 @@ "license": "GPL-3.0", "scripts": { "build": "turbo build", - "build:app": "turbo build --filter=app --filter=@radroots/*", - "build:pkg": "turbo run build --filter=./packages/*", - "dev:app": "cd app && yarn dev", - "dev:pkg": "turbo dev --filter=@radroots/* --concurrency 20" + "build:app": "turbo build --filter=app", + "build:packages": "turbo run build --filter=./packages/*", + "dev:app": "turbo dev --filter=app", + "dev:packages": "turbo dev --filter=./packages/* --concurrency 20" }, "devDependencies": { "turbo": "2.5.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml @@ -31,6 +31,8 @@ importers: specifier: ^3.15.0 version: 3.15.0(@types/node@25.0.3) + ../crates/events-codec-wasm/pkg: {} + ../crates/events-indexed/bindings/ts: dependencies: zod: @@ -418,18 +420,15 @@ importers: app: dependencies: - '@nostr-dev-kit/ndk': - specifier: 2.14.33 - version: 2.14.33(nostr-tools@2.19.4(typescript@5.8.3)) - '@nostr-dev-kit/ndk-svelte': - specifier: 2.4.38 - version: 2.4.38(nostr-tools@2.19.4(typescript@5.8.3))(svelte@5.46.0) '@radroots/apps-lib': specifier: workspace:* version: link:../packages/apps-lib '@radroots/apps-lib-pwa': specifier: workspace:* version: link:../packages/apps-lib-pwa + '@radroots/apps-nostr': + specifier: workspace:* + version: link:../packages/apps-nostr '@radroots/client': specifier: workspace:* version: link:../packages/client @@ -448,6 +447,9 @@ importers: '@radroots/locales': specifier: workspace:* version: link:../packages/locales + '@radroots/nostr': + specifier: workspace:* + version: link:../packages/nostr '@radroots/tangle-schema-bindings': specifier: workspace:* version: link:../../crates/tangle-schema/bindings/ts @@ -460,9 +462,6 @@ importers: '@radroots/utils': specifier: workspace:* version: link:../packages/utils - '@radroots/utils-nostr': - specifier: workspace:* - version: link:../packages/utils-nostr chart.js: specifier: ^4.4.5 version: 4.5.1 @@ -527,15 +526,6 @@ importers: packages/apps-lib: dependencies: - '@nostr-dev-kit/ndk': - specifier: 2.14.33 - version: 2.14.33(nostr-tools@2.19.4(typescript@5.8.3)) - '@nostr-dev-kit/ndk-cache-dexie': - specifier: 2.6.34 - version: 2.6.34(typescript@5.8.3) - '@nostr-dev-kit/ndk-svelte': - specifier: 2.4.38 - version: 2.4.38(nostr-tools@2.19.4(typescript@5.8.3))(svelte@5.46.0) '@radroots/geo': specifier: workspace:* version: link:../geo @@ -548,9 +538,6 @@ importers: '@radroots/utils': specifier: workspace:* version: link:../utils - '@radroots/utils-nostr': - specifier: workspace:* - version: link:../utils-nostr '@sveltekit-i18n/base': specifier: ^1.3.7 version: 1.3.7(svelte@5.46.0) @@ -627,9 +614,6 @@ importers: '@radroots/utils': specifier: workspace:* version: link:../utils - '@radroots/utils-nostr': - specifier: workspace:* - version: link:../utils-nostr devDependencies: '@sveltejs/adapter-auto': specifier: ^4.0.0 @@ -667,15 +651,6 @@ importers: packages/apps-lib-pwa: dependencies: - '@nostr-dev-kit/ndk': - specifier: 2.14.33 - version: 2.14.33(nostr-tools@2.19.4(typescript@5.8.3)) - '@nostr-dev-kit/ndk-cache-dexie': - specifier: 2.6.34 - version: 2.6.34(typescript@5.8.3) - '@nostr-dev-kit/ndk-svelte': - specifier: 2.4.38 - version: 2.4.38(nostr-tools@2.19.4(typescript@5.8.3))(svelte@5.46.0) '@radroots/apps-lib': specifier: workspace:* version: link:../apps-lib @@ -700,9 +675,6 @@ importers: '@radroots/utils': specifier: workspace:* version: link:../utils - '@radroots/utils-nostr': - specifier: workspace:* - version: link:../utils-nostr '@sveltekit-i18n/base': specifier: ^1.3.7 version: 1.3.7(svelte@5.46.0) @@ -759,6 +731,40 @@ importers: specifier: 7.0.6 version: 7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0) + packages/apps-nostr: + dependencies: + '@radroots/nostr': + specifier: workspace:* + version: link:../nostr + '@welshman/app': + specifier: workspace:* + version: link:../../../welshman/packages/app + '@welshman/net': + specifier: workspace:* + version: link:../../../welshman/packages/net + '@welshman/signer': + specifier: workspace:* + version: link:../../../welshman/packages/signer + '@welshman/store': + specifier: workspace:* + version: link:../../../welshman/packages/store + devDependencies: + '@radroots/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@types/node': + specifier: ^22.13.1 + version: 22.19.3 + rimraf: + specifier: ^6.0.1 + version: 6.0.1 + svelte: + specifier: ^5.0.0 + version: 5.46.0 + typescript: + specifier: 5.8.3 + version: 5.8.3 + packages/client: dependencies: '@radroots/geo': @@ -767,6 +773,9 @@ importers: '@radroots/http': specifier: workspace:* version: link:../http + '@radroots/nostr': + specifier: workspace:* + version: link:../nostr '@radroots/tangle-schema-bindings': specifier: workspace:* version: link:../../../crates/tangle-schema/bindings/ts @@ -779,9 +788,6 @@ importers: '@radroots/utils': specifier: workspace:* version: link:../utils - '@radroots/utils-nostr': - specifier: workspace:* - version: link:../utils-nostr idb: specifier: ^8.0.3 version: 8.0.3 @@ -910,6 +916,61 @@ importers: specifier: 5.8.3 version: 5.8.3 + packages/nostr: + dependencies: + '@noble/curves': + specifier: ^1.6.0 + version: 1.9.7 + '@noble/hashes': + specifier: ^1.4.0 + version: 1.8.0 + '@radroots/core-bindings': + specifier: workspace:* + version: link:../../../crates/core/bindings/ts + '@radroots/events-bindings': + specifier: workspace:* + version: link:../../../crates/events/bindings/ts + '@radroots/events-codec-wasm': + specifier: workspace:* + version: link:../../../crates/events-codec-wasm/pkg + '@radroots/trade-bindings': + specifier: workspace:* + version: link:../../../crates/trade/bindings/ts + '@radroots/utils': + specifier: workspace:* + version: link:../utils + '@welshman/net': + specifier: workspace:* + version: link:../../../welshman/packages/net + '@welshman/signer': + specifier: workspace:* + version: link:../../../welshman/packages/signer + '@welshman/util': + specifier: workspace:* + version: link:../../../welshman/packages/util + nostr-geotags: + specifier: ^0.7.2 + version: 0.7.2 + nostr-tools: + specifier: ^2.10.4 + version: 2.19.4(typescript@5.8.3) + zod: + specifier: ^4.2.1 + version: 4.2.1 + devDependencies: + '@radroots/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@types/node': + specifier: ^22.13.1 + version: 22.19.3 + rimraf: + specifier: ^6.0.1 + version: 6.0.1 + typescript: + specifier: 5.8.3 + version: 5.8.3 + packages/themes: dependencies: daisyui: @@ -983,52 +1044,6 @@ importers: specifier: 5.8.3 version: 5.8.3 - packages/utils-nostr: - dependencies: - '@noble/curves': - specifier: ^1.6.0 - version: 1.9.7 - '@noble/hashes': - specifier: ^1.4.0 - version: 1.8.0 - '@nostr-dev-kit/ndk': - specifier: 2.14.33 - version: 2.14.33(nostr-tools@2.19.4(typescript@5.8.3)) - '@radroots/core-bindings': - specifier: workspace:* - version: link:../../../crates/core/bindings/ts - '@radroots/events-bindings': - specifier: workspace:* - version: link:../../../crates/events/bindings/ts - '@radroots/trade-bindings': - specifier: workspace:* - version: link:../../../crates/trade/bindings/ts - '@radroots/utils': - specifier: workspace:* - version: link:../utils - nostr-geotags: - specifier: ^0.7.2 - version: 0.7.2 - nostr-tools: - specifier: ^2.10.4 - version: 2.19.4(typescript@5.8.3) - zod: - specifier: ^4.2.1 - version: 4.2.1 - devDependencies: - '@radroots/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@types/node': - specifier: ^22.13.1 - version: 22.19.3 - rimraf: - specifier: ^6.0.1 - version: 6.0.1 - typescript: - specifier: 5.8.3 - version: 5.8.3 - packages: '@ampproject/remapping@2.3.0': @@ -2439,9 +2454,6 @@ packages: resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} engines: {node: '>= 20.19.0'} - '@noble/secp256k1@2.3.0': - resolution: {integrity: sha512-0TQed2gcBbIrh7Ccyw+y/uZQvbJwm7Ao4scBUxqpBCcsOlZG0O4KGfjtNAy/li4W8n1xt3dxrwJ0beZ2h2G6Kw==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2454,20 +2466,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nostr-dev-kit/ndk-cache-dexie@2.6.34': - resolution: {integrity: sha512-NFk9I7E/eXIevLDnjyZHHwxdL4E891KVGlkr0k07CItoIf8A2cxtZJ7Pe4Ei5fe49nipL9iA+sEmOq9xveLR7g==} - - '@nostr-dev-kit/ndk-svelte@2.4.38': - resolution: {integrity: sha512-bxCXGaYqpQGg1iQDsYgzIpwxLwJ+IBz2SnGyJiDo794qeG2LmKdrVJ6ia7MVtjwaGJ86bWSD5ohy48/wRHHgnQ==} - peerDependencies: - svelte: '*' - - '@nostr-dev-kit/ndk@2.14.33': - resolution: {integrity: sha512-akiafJZj4ZAAYse+qNSjrx6Yg4Y2gB4UyMlo6I30ITVikRAtgPejXgtLGmjWCcgtf56b9g79AikAr3IZtr1pLA==} - engines: {node: '>=16'} - peerDependencies: - nostr-tools: ^2 - '@oclif/core@4.8.0': resolution: {integrity: sha512-jteNUQKgJHLHFbbz806aGZqf+RJJ7t4gwF4MYa8fCwCxQ8/klJNWc0MvaJiBebk7Mc+J39mdlsB4XraaCKznFw==} engines: {node: '>=18.0.0'} @@ -3376,9 +3374,6 @@ packages: devalue@5.6.1: resolution: {integrity: sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==} - dexie@4.2.1: - resolution: {integrity: sha512-Ckej0NS6jxQ4Po3OrSQBFddayRhTCic2DoCAG5zacOfOVB9P2Q5Xc5uL/nVa7ZVs+HdMnvUPzLFCB/JwpB6Csg==} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -4893,9 +4888,6 @@ packages: resolution: {integrity: sha512-Lu5ITqD8xCIo4JZp4Cg3iSK3J2x3TGwwuDtNHfAIlx1mXWKClRdzqV+x6CFEzhKtJlZzhyvJIqg7DzrWfsdVSg==} hasBin: true - tseep@1.3.1: - resolution: {integrity: sha512-ZPtfk1tQnZVyr7BPtbJ93qaAh2lZuIOpTMjhrYa4XctT8xe7t4SAW9LIxrySDuYMsfNNayE51E/WNGrNVgVicQ==} - tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -4987,9 +4979,6 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-lru-cache@2.0.0: - resolution: {integrity: sha512-Jp57Qyy8wXeMkdNuZiglE6v2Cypg13eDA1chHwDG6kq51X7gk4K7P7HaDdzZKCxkegXkVHNcPD0n5aW6OZH3aA==} - typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -5221,6 +5210,7 @@ packages: wrangler@4.56.0: resolution: {integrity: sha512-Nqi8duQeRbA+31QrD6QlWHW3IZVnuuRxMy7DEg46deUzywivmaRV/euBN5KKXDPtA24VyhYsK7I0tkb7P5DM2w==} engines: {node: '>=20.0.0'} + deprecated: Version 4.55.0 and 4.56.0 can incorrectly automatically delegate 'wrangler deploy' to 'opennextjs-cloudflare'. Use an older or newer version. hasBin: true peerDependencies: '@cloudflare/workers-types': ^4.20251217.0 @@ -5328,7 +5318,7 @@ snapshots: '@babel/types': 7.28.5 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -5380,7 +5370,7 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 lodash.debounce: 4.0.8 resolve: 1.22.11 transitivePeerDependencies: @@ -5952,7 +5942,7 @@ snapshots: '@babel/parser': 7.28.5 '@babel/template': 7.27.2 '@babel/types': 7.28.5 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -6552,8 +6542,6 @@ snapshots: '@noble/hashes@2.0.1': {} - '@noble/secp256k1@2.3.0': {} - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -6566,39 +6554,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@nostr-dev-kit/ndk-cache-dexie@2.6.34(typescript@5.8.3)': - dependencies: - '@nostr-dev-kit/ndk': 2.14.33(nostr-tools@2.19.4(typescript@5.8.3)) - debug: 4.4.3(supports-color@8.1.1) - dexie: 4.2.1 - nostr-tools: 2.19.4(typescript@5.8.3) - typescript-lru-cache: 2.0.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@nostr-dev-kit/ndk-svelte@2.4.38(nostr-tools@2.19.4(typescript@5.8.3))(svelte@5.46.0)': - dependencies: - '@nostr-dev-kit/ndk': 2.14.33(nostr-tools@2.19.4(typescript@5.8.3)) - svelte: 5.46.0 - transitivePeerDependencies: - - nostr-tools - - supports-color - - '@nostr-dev-kit/ndk@2.14.33(nostr-tools@2.19.4(typescript@5.8.3))': - dependencies: - '@noble/curves': 1.9.7 - '@noble/hashes': 1.8.0 - '@noble/secp256k1': 2.3.0 - '@scure/base': 1.2.6 - debug: 4.4.3(supports-color@8.1.1) - light-bolt11-decoder: 3.2.0 - nostr-tools: 2.19.4(typescript@5.8.3) - tseep: 1.3.1 - typescript-lru-cache: 2.0.0 - transitivePeerDependencies: - - supports-color - '@oclif/core@4.8.0': dependencies: ansi-escapes: 4.3.2 @@ -6849,7 +6804,7 @@ snapshots: '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)))(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0))': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)) - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 svelte: 5.46.0 vite: 7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0) transitivePeerDependencies: @@ -6858,7 +6813,7 @@ snapshots: '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)))(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0))': dependencies: '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)) - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 svelte: 5.46.0 vite: 7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0) transitivePeerDependencies: @@ -6867,7 +6822,7 @@ snapshots: '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.0.6(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)))(svelte@5.46.0)(vite@7.0.6(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0))': dependencies: '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.46.0)(vite@7.0.6(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)) - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 svelte: 5.46.0 vite: 7.0.6(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0) transitivePeerDependencies: @@ -6876,7 +6831,7 @@ snapshots: '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)))(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)) - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.21 @@ -6890,7 +6845,7 @@ snapshots: '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)))(svelte@5.46.0)(vite@7.0.6(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)) - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 deepmerge: 4.3.1 magic-string: 0.30.21 svelte: 5.46.0 @@ -6902,7 +6857,7 @@ snapshots: '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.0.6(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.0.6(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)))(svelte@5.46.0)(vite@7.0.6(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)) - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 deepmerge: 4.3.1 magic-string: 0.30.21 svelte: 5.46.0 @@ -7476,6 +7431,10 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 + debug@4.4.3: + dependencies: + ms: 2.1.3 + debug@4.4.3(supports-color@8.1.1): dependencies: ms: 2.1.3 @@ -7510,8 +7469,6 @@ snapshots: devalue@5.6.1: {} - dexie@4.2.1: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -9283,8 +9240,6 @@ snapshots: - '@types/node' - supports-color - tseep@1.3.1: {} - tslib@1.14.1: {} tslib@2.8.1: {} @@ -9294,7 +9249,7 @@ snapshots: bundle-require: 4.2.1(esbuild@0.17.19) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 esbuild: 0.17.19 execa: 5.1.1 globby: 11.1.0 @@ -9388,8 +9343,6 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-lru-cache@2.0.0: {} - typescript@5.8.3: {} uc.micro@2.1.0: {} @@ -9442,7 +9395,7 @@ snapshots: vite-plugin-pwa@1.2.0(vite@7.0.6(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0))(workbox-build@7.4.0)(workbox-window@7.4.0): dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 pretty-bytes: 6.1.1 tinyglobby: 0.2.15 vite: 7.0.6(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0) diff --git a/turbo.json b/turbo.json @@ -33,17 +33,18 @@ "dependsOn": [ "@radroots/apps-lib#build", "@radroots/apps-lib-pwa#build", + "@radroots/apps-nostr#build", "@radroots/client#build", "@radroots/events-bindings#build", "@radroots/geo#build", "@radroots/geocoder#build", "@radroots/http#build", "@radroots/locales#build", + "@radroots/nostr#build", "@radroots/tangle-schema-bindings#build", "@radroots/themes#build", "@radroots/types-bindings#build", - "@radroots/utils#build", - "@radroots/utils-nostr#build" + "@radroots/utils#build" ] }, "@radroots/apps-lib#build": { @@ -51,8 +52,7 @@ "@radroots/geo#build", "@radroots/locales#build", "@radroots/themes#build", - "@radroots/utils#build", - "@radroots/utils-nostr#build" + "@radroots/utils#build" ] }, "@radroots/apps-lib-pwa#build": { @@ -64,18 +64,18 @@ "@radroots/locales#build", "@radroots/tangle-schema-bindings#build", "@radroots/themes#build", - "@radroots/utils#build", - "@radroots/utils-nostr#build" + "@radroots/utils#build" ] }, "@radroots/client#build": { "dependsOn": [ "@radroots/geo#build", "@radroots/http#build", + "@radroots/nostr#build", "@radroots/tangle-schema-bindings#build", "@radroots/tangle-sql-wasm#build", - "@radroots/utils#build", - "@radroots/utils-nostr#build" + "@radroots/types-bindings#build", + "@radroots/utils#build" ] }, "@radroots/geo#build": { @@ -108,10 +108,34 @@ "@radroots/types-bindings#build" ] }, - "@radroots/utils-nostr#build": { + "@radroots/nostr#build": { "dependsOn": [ + "@radroots/core-bindings#build", + "@radroots/events-codec-wasm#build", "@radroots/events-bindings#build", "@radroots/trade-bindings#build", + "@radroots/utils#build", + "@welshman/net#build", + "@welshman/signer#build", + "@welshman/util#build" + ] + }, + "@radroots/apps-nostr#build": { + "dependsOn": [ + "@radroots/nostr#build", + "@welshman/app#build", + "@welshman/net#build", + "@welshman/signer#build", + "@welshman/store#build" + ] + }, + "@radroots/apps-lib-market#build": { + "dependsOn": [ + "@radroots/apps-lib#build", + "@radroots/core-bindings#build", + "@radroots/events-bindings#build", + "@radroots/events-indexed-bindings#build", + "@radroots/trade-bindings#build", "@radroots/utils#build" ] }, @@ -123,6 +147,9 @@ "@radroots/core-bindings#build" ] }, + "@radroots/events-codec-wasm#build": { + "dependsOn": [] + }, "@radroots/events-indexed-bindings#build": { "dependsOn": [] }, @@ -144,4 +171,4 @@ "dependsOn": [] } } -} -\ No newline at end of file +}