app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit b66d4f09b693f461d3668921ee14be97b408a812
parent 120c3a21a0ad7dd6cbfb9675caf3838a5d9263c6
Author: triesap <137732411+triesap@users.noreply.github.com>
Date:   Sun, 27 Apr 2025 03:56:14 +0000

Add `radroots-common` crate, update `tangle_core` and `tangle_model` crate names. Add/edit utils, routes, styles.

Diffstat:
M.gitignore | 2+-
M.gitmodules | 7+++++--
MCargo.lock | 56++++++++++++++++++++++++++++----------------------------
Mapp/package.json | 6++++--
Mapp/src/lib/util/index.ts | 21+++++++++++++--------
Aapp/src/lib/util/nostr/lib.ts | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dapp/src/lib/util/nostr/poll.ts | 105-------------------------------------------------------------------------------
Dapp/src/lib/util/nostr/sync.ts | 52----------------------------------------------------
Mapp/src/routes/(app)/+layout.svelte | 10++++------
Mapp/src/routes/(app)/+page.svelte | 48++++++++++++++++++------------------------------
Mapp/src/routes/(app)/profile/+page.svelte | 10+++++++---
Mapp/src/routes/(app)/profile/edit/+page.svelte | 6++++--
Mcrates/core/Cargo.toml | 2+-
Mcrates/model/Cargo.toml | 4++--
Mcrates/model/src/tables/location_gcs.rs | 2+-
Mcrates/model/src/tables/log_error.rs | 2+-
Mcrates/model/src/tables/media_image.rs | 2+-
Mcrates/model/src/tables/mod.rs | 2+-
Mcrates/model/src/tables/nostr_profile.rs | 2+-
Mcrates/model/src/tables/nostr_profile_relay.rs | 2+-
Mcrates/model/src/tables/nostr_relay.rs | 2+-
Mcrates/model/src/tables/trade_product.rs | 2+-
Mcrates/model/src/tables/trade_product_location.rs | 2+-
Mcrates/model/src/tables/trade_product_media.rs | 2+-
Acrates/radroots-common | 1+
Mcrates/tangle/Cargo.toml | 4++--
Mcrates/tangle/src/app.rs | 2+-
Mcrates/tangle/src/commands/keys.rs | 2+-
Mcrates/tangle/src/commands/model/location_gcs.rs | 4++--
Mcrates/tangle/src/commands/model/log_error.rs | 4++--
Mcrates/tangle/src/commands/model/media_image.rs | 4++--
Mcrates/tangle/src/commands/model/mod.rs | 4++--
Mcrates/tangle/src/commands/model/nostr_profile.rs | 4++--
Mcrates/tangle/src/commands/model/nostr_profile_relay.rs | 4++--
Mcrates/tangle/src/commands/model/nostr_relay.rs | 4++--
Mcrates/tangle/src/commands/model/trade_product.rs | 4++--
Mcrates/tangle/src/commands/model/trade_product_location.rs | 4++--
Mcrates/tangle/src/commands/model/trade_product_media.rs | 4++--
Mcrates/tangle/src/util.rs | 4++--
Mpnpm-lock.yaml | 555++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Mpnpm-workspace.yaml | 1+
41 files changed, 710 insertions(+), 309 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -42,7 +42,7 @@ notes*.txt notes*.md git-diff.txt justfile -setup.py +dev*.py target /crates/tangle/gen diff --git a/.gitmodules b/.gitmodules @@ -65,4 +65,8 @@ [submodule "packages/nostr-geotags"] path = packages/nostr-geotags url = git@github.com:72-61-64-72-6f-6f-74-73/nostr-geotags.git - branch = main -\ No newline at end of file + branch = main +[submodule "crates/radroots-common"] + path = crates/radroots-common + url = git@github.com:72-61-64-72-6f-6f-74-73/crates-radroots-common.git + branch = master diff --git a/Cargo.lock b/Cargo.lock @@ -3825,32 +3825,6 @@ dependencies = [ ] [[package]] -name = "radroots_core" -version = "0.0.1" -dependencies = [ - "base64 0.22.1", - "chrono", - "nostr-sdk", - "regex", - "serde", - "serde_json", - "thiserror 1.0.69", - "uuid", -] - -[[package]] -name = "radroots_model" -version = "0.0.1" -dependencies = [ - "futures", - "radroots_core", - "serde", - "serde_json", - "sqlx", - "thiserror 1.0.69", -] - -[[package]] name = "rand" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4994,11 +4968,11 @@ dependencies = [ name = "tangle" version = "0.0.1" dependencies = [ - "radroots_core", - "radroots_model", "serde", "serde_json", "sqlx", + "tangle_core", + "tangle_model", "tauri", "tauri-build", "tauri-plugin-dialog", @@ -5012,6 +4986,32 @@ dependencies = [ ] [[package]] +name = "tangle_core" +version = "0.0.1" +dependencies = [ + "base64 0.22.1", + "chrono", + "nostr-sdk", + "regex", + "serde", + "serde_json", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "tangle_model" +version = "0.0.1" +dependencies = [ + "futures", + "serde", + "serde_json", + "sqlx", + "tangle_core", + "thiserror 1.0.69", +] + +[[package]] name = "tao" version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/app/package.json b/app/package.json @@ -37,10 +37,12 @@ "@radroots/locales": "workspace:*", "@radroots/models": "workspace:*", "@radroots/nostr-util": "workspace:*", - "svelte-maplibre": "workspace:*", + "@radroots/radroots-common-bindings": "workspace:*", "@radroots/theme": "workspace:*", "@radroots/util": "workspace:*", "chart.js": "^4.4.5", - "css-paint-polyfill": "^3.4.0" + "css-paint-polyfill": "^3.4.0", + "svelte-maplibre": "workspace:*", + "zod": "^3.23.8" } } \ No newline at end of file diff --git a/app/src/lib/util/index.ts b/app/src/lib/util/index.ts @@ -1,10 +1,9 @@ -import { browser } from "$app/environment"; import { goto } from "$app/navigation"; import { PUBLIC_RADROOTS_URL } from "$env/static/public"; import { ls } from "$lib/locale/i18n"; import { TauriClientDatabase, TauriClientDatastore, TauriClientFs, TauriClientGeolocation, TauriClientGui, TauriClientHttp, TauriClientKeys, TauriClientRadroots } from "@radroots/client"; import { Geocoder } from "@radroots/geocoder"; -import { app_notify, get_store, handle_err, NostrSyncService, type NavigationRouteParamKey, type NavigationRouteParamTuple } from "@radroots/lib-app"; +import { app_notify, get_store, handle_err, type NavigationRouteParamKey, type NavigationRouteParamTuple } from "@radroots/lib-app"; import { NostrEventService, NostrKeyService, NostrRelayService } from "@radroots/nostr-util"; import { encode_route, type CallbackPromise } from "@radroots/util"; import type { NavigationRoute } from "./routes"; @@ -23,10 +22,6 @@ export const nostrkey = new NostrKeyService(); export const nostre = new NostrEventService(); export const nostrl = new NostrRelayService(); - -export let nostrsync: NostrSyncService -if (browser) nostrsync = new NostrSyncService(); - export const route = async (nav_route: NavigationRoute, params: NavigationRouteParamTuple[] = []): Promise<void> => { try { if (params.length) await goto(encode_route<NavigationRoute, NavigationRouteParamKey>(nav_route, params)); @@ -68,4 +63,15 @@ export const reset = async (): Promise<void> => { export const message_callback = async (message: string, callback: CallbackPromise): Promise<void> => { gui.alert(message); await callback(); -}; -\ No newline at end of file +}; + +export const debounce = <T extends (...args: any[]) => void>( + fn: T, + delay: number +): T => { + let timeout: ReturnType<typeof setTimeout>; + return ((...args: any[]) => { + clearTimeout(timeout); + timeout = setTimeout(() => fn(...args), delay); + }) as T; +}; diff --git a/app/src/lib/util/nostr/lib.ts b/app/src/lib/util/nostr/lib.ts @@ -0,0 +1,61 @@ +import { ls } from "$lib/locale/i18n"; +import { nostr_poll_relays_handler, nostr_sync_handler } from "@radroots/lib-app"; +import { type NostrRelayFormFields, nostr_relay_parse_form_keys } from "@radroots/models"; +import { throw_err } from "@radroots/util"; +import { db, gui, http } from ".."; + +export const nostr_poll_relays = async (): Promise<void> => { + await nostr_poll_relays_handler({ + ls, + callback_alert: async (msg: string) => void await gui.alert(msg), + callback_relay_urls: async (public_key: string) => { + const list_relays = await db.nostr_relay_read_list({ + table: [`on_profile`, { public_key }], + }); + if (`err` in list_relays) return throw_err(list_relays.err); + return list_relays.results.map(({ id, url }) => ({ id, url })); + }, + callback_fetch_document: async (relay_url: string) => { + return await http.fetch({ + url: relay_url.replace(`ws://`, `http://`).replace(`wss://`, `https://`), + headers: { + Accept: "application/nostr+json", + }, + }); + }, + callback_set_relay_document: async ({ url, doc }) => { + const fields: Partial<NostrRelayFormFields> = {}; + for (const [k, v] of Object.entries(doc)) { + const field_k = nostr_relay_parse_form_keys(k); + if (field_k) fields[field_k] = v; + } + if (Object.keys(fields).length < 1) return; + await db.nostr_relay_update({ + filter: { url }, + fields, + }); + }, + }); +}; + +export const nostr_sync = async (): Promise<void> => { + await nostr_sync_handler({ + ls, + callback_alert: async (msg: string) => void await gui.alert(msg), + callback_confirm: async (message: string) => { + return await gui.confirm({ message }); + }, + callback_metadata: async (public_key: string) => { + const tb_nostr_profile = await db.nostr_profile_read({ public_key }); + if (`err` in tb_nostr_profile) throw_err(tb_nostr_profile); + return tb_nostr_profile.result; + }, + callback_relay_urls: async (public_key: string) => { + const list_relays = await db.nostr_relay_read_list({ + table: [`on_profile`, { public_key }], + }); + if (`err` in list_relays) return throw_err(list_relays.err); + return list_relays.results.map(({ id, url }) => ({ id, url })); + }, + }); +}; diff --git a/app/src/lib/util/nostr/poll.ts b/app/src/lib/util/nostr/poll.ts @@ -1,104 +0,0 @@ -import { ls } from "$lib/locale/i18n"; -import { get_store, handle_err, ndk_user, nostr_poll_relays_stop, nostr_relays_connected } from "@radroots/lib-app"; -import { nostr_relay_parse_form_keys, type NostrRelayFormFields } from "@radroots/models"; -import { throw_err } from "@radroots/util"; -import { db, gui, http, nostrl } from ".."; - -export const nostr_poll_relays = async (): Promise<void> => { - try { - console.log(`[nostr_poll_relays] start`); - const $ls = get_store(ls); - const $ndk_user = get_store(ndk_user); - const public_key = $ndk_user?.pubkey; - if (!public_key) return void await gui.alert( - `${$ls(`error.client.nostr_poll_relays_failure`)}` - ); - - const $nostr_relays_connected = get_store(nostr_relays_connected); - - const nostr_relays = await db.nostr_relay_read_list({ - table: [`on_profile`, { public_key }], - }); - console.log(JSON.stringify(nostr_relays, null, 4), `nostr_relays`) - if (`err` in nostr_relays) return throw_err(nostr_relays.err); - const unconnected_relays = nostr_relays.results.filter( - (i) => !$nostr_relays_connected.includes(i.id), - ); - console.log(JSON.stringify(unconnected_relays, null, 4), `unconnected_relays`) - if (unconnected_relays.length === 0) return void nostr_poll_relays_stop.set(true); - - for (const nostr_relay of unconnected_relays) { - const res = await http.fetch({ - url: nostr_relay.url.replace(`ws://`, `http://`).replace(`wss://`, `https://`), - headers: { - Accept: "application/nostr+json", - }, - }); - if (`err` in res) continue; - else if (res.status === 200 && res.data) { - const relaydoc = nostrl.parse_information_document(res.data); - if (!relaydoc) continue; - const fields: Partial<NostrRelayFormFields> = {}; - for (const [k, v] of Object.entries(relaydoc)) { - const field_k = nostr_relay_parse_form_keys(k); - if (field_k) fields[field_k] = v; - } - if (Object.keys(fields).length < 1) continue; - await db.nostr_relay_update({ - filter: { - url: nostr_relay.url, - }, - fields, - }); - nostr_relays_connected.set( - Array.from( - new Set([ - ...$nostr_relays_connected, - nostr_relay.id, - ]), - ), - ); - } - } - console.log(`[nostr_poll_relays] done`); - } catch (e) { - await handle_err(e, `nostr_poll_relays`); - } -}; - - -/* -import { get_store, handle_err, ndk_user, nostr_poll_relays, nostr_poll_relays_attempts, nostr_poll_relays_attempts_max, nostr_relays_connected } from "$lib"; -import type { db } from "@nostr-dev-kit/ndk-cache-dexie"; -import { throw_err } from "@radroots/util"; - -export const nostr_fetch_relay_documents = async ( - callback: () => Promise<void> -): Promise<void> => { - try { - - if ( - $nostr_poll_relays_attempts >= - $nostr_poll_relays_attempts_max - ) { - nostr_poll_relays.set(false); - return; - } - nostr_poll_relays_attempts.set( - $nostr_poll_relays_attempts + 1, - ); - - - - if (unconnected_relays.length === 0) return void nostr_poll_relays.set(false); - - setTimeout( - async () => nostr_fetch_relay_documents(callback), - 3000 - ); - } catch (e) { - await handle_err(e, `nostr_fetch_relay_documents`); - } -}; - - -*/ -\ No newline at end of file diff --git a/app/src/lib/util/nostr/sync.ts b/app/src/lib/util/nostr/sync.ts @@ -1,52 +0,0 @@ -import { ls } from "$lib/locale/i18n"; -import { get_store, handle_err, ndk_user, nostr_sync_prevent } from "@radroots/lib-app"; -import { throw_err } from "@radroots/util"; -import { db, gui, nostrsync } from ".."; -import { err } from "../err"; - -export const nostr_sync = async (): Promise<void> => { - try { - console.log(`[nostr_sync] start`); - const $ls = get_store(ls); - const $ndk_user = get_store(ndk_user); - const public_key = $ndk_user.pubkey; - if (!public_key) return void await gui.alert( - `${$ls(`error.client.nostr_sync_failure`)}` - ); - const $nostr_sync_prevent = get_store(nostr_sync_prevent); - if ($nostr_sync_prevent) { - const confirm = await gui.confirm({ - message: `${$ls(`error.client.nostr_sync_disabled`)}`, - }); - if (confirm) { - nostr_sync_prevent.set(false); - await nostr_sync(); - } - return; - } - const nostr_relays = await db.nostr_relay_read_list({ - table: [`on_profile`, { public_key }] - }); //@todo - console.log(JSON.stringify(nostr_relays, null, 4), `nostr_relays`) - if (`err` in nostr_relays) return throw_err(nostr_relays); - if (!nostr_relays.results.length) return throw_err(err.nostr.no_relays); - - await nostr_sync_metadata(); - console.log(`[nostr_sync] done`); - } catch (e) { - await handle_err(e, `nostr_sync`); - } -}; - -export const nostr_sync_metadata = async (): Promise<void> => { - const $ndk_user = get_store(ndk_user); - const { pubkey: public_key } = $ndk_user; - if (!public_key) throw_err(`todo-public-key-undefined`); - const tb_nostr_profile = await db.nostr_profile_read({ public_key }); - if (`err` in tb_nostr_profile) throw_err(tb_nostr_profile); - const ev = await nostrsync.metadata({ metadata: tb_nostr_profile.result }); - if (`err` in ev) throw_err(ev); - await ev.publish(); -}; - - diff --git a/app/src/routes/(app)/+layout.svelte b/app/src/routes/(app)/+layout.svelte @@ -9,15 +9,13 @@ ndk_user, nostr_ndk_configured, nostr_poll_relays_retry_handler, - nostr_sync_retry_handler, } from "@radroots/lib-app"; import { ndk_init } from "@radroots/nostr-util"; import { throw_err } from "@radroots/util"; import { _cfg } from "$lib/config"; import { cfg_role, cfg_setup } from "$lib/store"; - import { nostr_poll_relays } from "$lib/util/nostr/poll"; - import { nostr_sync } from "$lib/util/nostr/sync"; + import { nostr_poll_relays } from "$lib/util/nostr/lib"; import { onMount } from "svelte"; import type { LayoutProps } from "./$types"; @@ -42,12 +40,12 @@ await idb_init(); await nostr_init(); // - // initial setup + // is setup const ds_setup = await datastore.get(`is_setup`); if (`err` in ds_setup) cfg_setup.set(false); else cfg_setup.set(true); // - // get role + // role const ds_role = await datastore.get(`role`); if (`err` in ds_role) { await datastore.set(`role`, _cfg.role_default); @@ -84,7 +82,7 @@ nostr_ndk_configured.subscribe(async (_sub) => { if (!_sub) return; - await nostr_sync_retry_handler(nostr_sync); + // @todo await nostr_sync_retry_handler(nostr_sync); await nostr_poll_relays_retry_handler(nostr_poll_relays); }); diff --git a/app/src/routes/(app)/+page.svelte b/app/src/routes/(app)/+page.svelte @@ -1,39 +1,27 @@ <script lang="ts"> import { ls } from "$lib/locale/i18n"; - import { cfg_role } from "$lib/store"; - import { gui, route } from "$lib/util"; import { handle_err, Home, type IHomeViewData } from "@radroots/lib-app"; let data: IHomeViewData | undefined = $state({}); </script> {#if data} - {#if $cfg_role === `farmer`} - <div class={`flex flex-col pt-20 justify-start items-center`}> - <p class={`font-sans font-[400] text-layer-0-glyph`}> - {`farmer`} - </p> - </div> - {:else if $cfg_role === `public`} - <Home - {ls} - basis={{ - data, - lc_handle_farms: async () => { - try { - await route(`/`); - } catch (e) { - await handle_err(e, `lc_handle_farms`); - } - }, - lc_handle_products: async () => { - try { - await gui.alert(`@todo`); - } catch (e) { - await handle_err(e, `lc_handle_products`); - } - }, - }} - /> - {/if} + <Home + {ls} + basis={{ + data, + lc_handle_farms: async () => { + try { + } catch (e) { + await handle_err(e, `lc_handle_farms`); + } + }, + lc_handle_products: async () => { + try { + } catch (e) { + await handle_err(e, `lc_handle_products`); + } + }, + }} + /> {/if} diff --git a/app/src/routes/(app)/profile/+page.svelte b/app/src/routes/(app)/profile/+page.svelte @@ -1,10 +1,10 @@ <script lang="ts"> import { ls } from "$lib/locale/i18n"; import { db, fs, gui, keys, radroots, route } from "$lib/util"; - import { nostr_sync_metadata } from "$lib/util/nostr/sync"; import { handle_err, ndk_user, + nostr_sync, Profile, type IViewProfileData, } from "@radroots/lib-app"; @@ -27,7 +27,9 @@ ); if (`result` in tb_nostr_profile) { data = { ...tb_nostr_profile.result }; - nostr_sync_metadata(); // no await + await nostr_sync.metadata({ + metadata: tb_nostr_profile.result, + }); // leave off await return; } return void (await route(`/`)); @@ -51,7 +53,9 @@ public_key: $ndk_user?.pubkey, }); if (`err` in tb_nostrprofile) throw_err(tb_nostrprofile); //@todo - await nostr_sync_metadata(); + await nostr_sync.metadata({ + metadata: tb_nostrprofile.result, + }); // leave off await } catch (e) { await handle_err(e, `lc_on_destroy`); } diff --git a/app/src/routes/(app)/profile/edit/+page.svelte b/app/src/routes/(app)/profile/edit/+page.svelte @@ -1,10 +1,10 @@ <script lang="ts"> import { ls } from "$lib/locale/i18n"; import { db, gui, route } from "$lib/util"; - import { nostr_sync_metadata } from "$lib/util/nostr/sync"; import { handle_err, type IViewProfileEditData, + nostr_sync, parse_view_profile_field_key, ProfileEdit, qp_field, @@ -85,7 +85,9 @@ `tb_nostr_profile`, ); if (`err` in tb_nostr_profile) throw_err(tb_nostr_profile); - nostr_sync_metadata(); // leave off await + nostr_sync.metadata({ + metadata: tb_nostr_profile.result, + }); // leave off await await route(`/profile`); } catch (e) { await handle_err(e, `lc_handle_back`); diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "radroots_core" +name = "tangle_core" version = "0.0.1" license = "GPLv3" edition = "2021" diff --git a/crates/model/Cargo.toml b/crates/model/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "radroots_model" +name = "tangle_model" version = "0.0.1" license = "GPLv3" edition = "2021" @@ -11,4 +11,4 @@ sqlx = { version = "0.8.2", features = ["sqlite", "runtime-tokio"] } thiserror = "1.0.64" futures = "0.3.31" -radroots_core = { path = "../core" } +tangle_core = { path = "../core" } diff --git a/crates/model/src/tables/location_gcs.rs b/crates/model/src/tables/location_gcs.rs @@ -1,5 +1,5 @@ use futures::TryStreamExt; -use radroots_core::{ +use tangle_core::{ types::{IModelsQueryBindValueTuple, IResult, IResultList, IResultPass}, util::{time_created_on, uuidv4}, }; diff --git a/crates/model/src/tables/log_error.rs b/crates/model/src/tables/log_error.rs @@ -1,5 +1,5 @@ use futures::TryStreamExt; -use radroots_core::{ +use tangle_core::{ types::{IModelsQueryBindValueTuple, IResult, IResultList, IResultPass}, util::{time_created_on, uuidv4}, }; diff --git a/crates/model/src/tables/media_image.rs b/crates/model/src/tables/media_image.rs @@ -1,5 +1,5 @@ use futures::TryStreamExt; -use radroots_core::{ +use tangle_core::{ types::{IModelsQueryBindValueTuple, IResult, IResultList, IResultPass}, util::{time_created_on, uuidv4}, }; diff --git a/crates/model/src/tables/mod.rs b/crates/model/src/tables/mod.rs @@ -1,5 +1,5 @@ use crate::{error::ModelError, types::DatabaseConnection}; -use radroots_core::types::IResultPass; +use tangle_core::types::IResultPass; pub mod location_gcs; pub mod log_error; diff --git a/crates/model/src/tables/nostr_profile.rs b/crates/model/src/tables/nostr_profile.rs @@ -1,5 +1,5 @@ use futures::TryStreamExt; -use radroots_core::{ +use tangle_core::{ types::{IModelsQueryBindValueTuple, IResult, IResultList, IResultPass}, util::{time_created_on, uuidv4}, }; diff --git a/crates/model/src/tables/nostr_profile_relay.rs b/crates/model/src/tables/nostr_profile_relay.rs @@ -3,7 +3,7 @@ use super::{ nostr_relay::{nostr_relay_query_bind_values, NostrRelayQueryBindValues}, }; use crate::{error::ModelError, types::DatabaseConnection}; -use radroots_core::types::IResultPass; +use tangle_core::types::IResultPass; #[derive(serde::Serialize, serde::Deserialize, sqlx::FromRow)] pub struct NostrProfileRelay { diff --git a/crates/model/src/tables/nostr_relay.rs b/crates/model/src/tables/nostr_relay.rs @@ -1,5 +1,5 @@ use futures::TryStreamExt; -use radroots_core::{ +use tangle_core::{ types::{IModelsQueryBindValueTuple, IResult, IResultList, IResultPass}, util::{time_created_on, uuidv4}, }; diff --git a/crates/model/src/tables/trade_product.rs b/crates/model/src/tables/trade_product.rs @@ -1,5 +1,5 @@ use futures::TryStreamExt; -use radroots_core::{ +use tangle_core::{ types::{IModelsQueryBindValueTuple, IResult, IResultList, IResultPass}, util::{time_created_on, uuidv4}, }; diff --git a/crates/model/src/tables/trade_product_location.rs b/crates/model/src/tables/trade_product_location.rs @@ -3,7 +3,7 @@ use super::{ trade_product::{trade_product_query_bind_values, TradeProductQueryBindValues}, }; use crate::{error::ModelError, types::DatabaseConnection}; -use radroots_core::types::IResultPass; +use tangle_core::types::IResultPass; #[derive(serde::Serialize, serde::Deserialize, sqlx::FromRow)] pub struct TradeProductLocation { diff --git a/crates/model/src/tables/trade_product_media.rs b/crates/model/src/tables/trade_product_media.rs @@ -3,7 +3,7 @@ use super::{ trade_product::{trade_product_query_bind_values, TradeProductQueryBindValues}, }; use crate::{error::ModelError, types::DatabaseConnection}; -use radroots_core::types::IResultPass; +use tangle_core::types::IResultPass; #[derive(serde::Serialize, serde::Deserialize, sqlx::FromRow)] pub struct TradeProductMedia { diff --git a/crates/radroots-common b/crates/radroots-common @@ -0,0 +1 @@ +Subproject commit 0cad39ff98de6e8d7f27b42588ff9917309de886 diff --git a/crates/tangle/Cargo.toml b/crates/tangle/Cargo.toml @@ -24,8 +24,8 @@ tauri-plugin-os = { version = "2.2.0" } tauri-plugin-store = { version = "2.2.0" } tauri-plugin-shell = { version = "2.2.0" } -radroots_core = { path = "../core" } -radroots_model = { path = "../model" } +tangle_core = { path = "../core" } +tangle_model = { path = "../model" } serde = "1.0" serde_json = "1.0" diff --git a/crates/tangle/src/app.rs b/crates/tangle/src/app.rs @@ -1,6 +1,6 @@ use std::path::PathBuf; -use radroots_model::types::DatabaseConnection; +use tangle_model::types::DatabaseConnection; use crate::util; diff --git a/crates/tangle/src/commands/keys.rs b/crates/tangle/src/commands/keys.rs @@ -1,4 +1,4 @@ -use radroots_core::{ +use tangle_core::{ keystore, nostr::keys::{ lib_nostr_keys_gen, lib_nostr_keys_parse, lib_nostr_public_key_hex, diff --git a/crates/tangle/src/commands/model/location_gcs.rs b/crates/tangle/src/commands/model/location_gcs.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::IError; -use radroots_model::{ +use tangle_core::types::IError; +use tangle_model::{ tables::location_gcs::{lib_model_location_gcs_create, ILocationGcsCreate, ILocationGcsCreateResolve, lib_model_location_gcs_read, ILocationGcsRead, ILocationGcsReadResolve, lib_model_location_gcs_read_list, ILocationGcsReadList, ILocationGcsReadListResolve, lib_model_location_gcs_delete, ILocationGcsDelete, ILocationGcsDeleteResolve, lib_model_location_gcs_update, ILocationGcsUpdate, ILocationGcsUpdateResolve}, }; diff --git a/crates/tangle/src/commands/model/log_error.rs b/crates/tangle/src/commands/model/log_error.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::IError; -use radroots_model::{ +use tangle_core::types::IError; +use tangle_model::{ tables::log_error::{lib_model_log_error_create, ILogErrorCreate, ILogErrorCreateResolve, lib_model_log_error_read, ILogErrorRead, ILogErrorReadResolve, lib_model_log_error_read_list, ILogErrorReadList, ILogErrorReadListResolve, lib_model_log_error_delete, ILogErrorDelete, ILogErrorDeleteResolve, lib_model_log_error_update, ILogErrorUpdate, ILogErrorUpdateResolve}, }; diff --git a/crates/tangle/src/commands/model/media_image.rs b/crates/tangle/src/commands/model/media_image.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::IError; -use radroots_model::{ +use tangle_core::types::IError; +use tangle_model::{ tables::media_image::{lib_model_media_image_create, IMediaImageCreate, IMediaImageCreateResolve, lib_model_media_image_read, IMediaImageRead, IMediaImageReadResolve, lib_model_media_image_read_list, IMediaImageReadList, IMediaImageReadListResolve, lib_model_media_image_delete, IMediaImageDelete, IMediaImageDeleteResolve, lib_model_media_image_update, IMediaImageUpdate, IMediaImageUpdateResolve}, }; diff --git a/crates/tangle/src/commands/model/mod.rs b/crates/tangle/src/commands/model/mod.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::{IError, IResultPass}; -use radroots_model::tables::lib_model_tables_reset; +use tangle_core::types::{IError, IResultPass}; +use tangle_model::tables::lib_model_tables_reset; pub(crate) mod location_gcs; pub(crate) mod log_error; diff --git a/crates/tangle/src/commands/model/nostr_profile.rs b/crates/tangle/src/commands/model/nostr_profile.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::IError; -use radroots_model::{ +use tangle_core::types::IError; +use tangle_model::{ tables::nostr_profile::{lib_model_nostr_profile_create, INostrProfileCreate, INostrProfileCreateResolve, lib_model_nostr_profile_read, INostrProfileRead, INostrProfileReadResolve, lib_model_nostr_profile_read_list, INostrProfileReadList, INostrProfileReadListResolve, lib_model_nostr_profile_delete, INostrProfileDelete, INostrProfileDeleteResolve, lib_model_nostr_profile_update, INostrProfileUpdate, INostrProfileUpdateResolve}, }; diff --git a/crates/tangle/src/commands/model/nostr_profile_relay.rs b/crates/tangle/src/commands/model/nostr_profile_relay.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::IError; -use radroots_model::tables::nostr_profile_relay::{ +use tangle_core::types::IError; +use tangle_model::tables::nostr_profile_relay::{ lib_model_nostr_profile_relay_set, lib_model_nostr_profile_relay_unset, INostrProfileRelayRelation, INostrProfileRelayResolve, }; diff --git a/crates/tangle/src/commands/model/nostr_relay.rs b/crates/tangle/src/commands/model/nostr_relay.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::IError; -use radroots_model::{ +use tangle_core::types::IError; +use tangle_model::{ tables::nostr_relay::{lib_model_nostr_relay_create, INostrRelayCreate, INostrRelayCreateResolve, lib_model_nostr_relay_read, INostrRelayRead, INostrRelayReadResolve, lib_model_nostr_relay_read_list, INostrRelayReadList, INostrRelayReadListResolve, lib_model_nostr_relay_delete, INostrRelayDelete, INostrRelayDeleteResolve, lib_model_nostr_relay_update, INostrRelayUpdate, INostrRelayUpdateResolve}, }; diff --git a/crates/tangle/src/commands/model/trade_product.rs b/crates/tangle/src/commands/model/trade_product.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::IError; -use radroots_model::{ +use tangle_core::types::IError; +use tangle_model::{ tables::trade_product::{lib_model_trade_product_create, ITradeProductCreate, ITradeProductCreateResolve, lib_model_trade_product_read, ITradeProductRead, ITradeProductReadResolve, lib_model_trade_product_read_list, ITradeProductReadList, ITradeProductReadListResolve, lib_model_trade_product_delete, ITradeProductDelete, ITradeProductDeleteResolve, lib_model_trade_product_update, ITradeProductUpdate, ITradeProductUpdateResolve}, }; diff --git a/crates/tangle/src/commands/model/trade_product_location.rs b/crates/tangle/src/commands/model/trade_product_location.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::IError; -use radroots_model::tables::trade_product_location::{ +use tangle_core::types::IError; +use tangle_model::tables::trade_product_location::{ lib_model_trade_product_location_set, lib_model_trade_product_location_unset, ITradeProductLocationRelation, ITradeProductLocationResolve, }; diff --git a/crates/tangle/src/commands/model/trade_product_media.rs b/crates/tangle/src/commands/model/trade_product_media.rs @@ -1,6 +1,6 @@ use crate::app::Tangle; -use radroots_core::types::IError; -use radroots_model::tables::trade_product_media::{ +use tangle_core::types::IError; +use tangle_model::tables::trade_product_media::{ lib_model_trade_product_media_set, lib_model_trade_product_media_unset, ITradeProductMediaRelation, ITradeProductMediaResolve, }; diff --git a/crates/tangle/src/util.rs b/crates/tangle/src/util.rs @@ -1,8 +1,8 @@ use std::fs::OpenOptions; use std::path::PathBuf; -use radroots_model::types::DatabaseConnection; -use radroots_model::util::db_conn; +use tangle_model::types::DatabaseConnection; +use tangle_model::util::db_conn; pub async fn init_db(data_dir: &PathBuf) -> DatabaseConnection { let mut path = data_dir.clone(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml @@ -44,6 +44,9 @@ importers: '@radroots/nostr-util': specifier: workspace:* version: link:../packages/nostr-util + '@radroots/radroots-common-bindings': + specifier: workspace:* + version: link:../crates/radroots-common/bindings/ts '@radroots/theme': specifier: workspace:* version: link:../packages/theme @@ -59,6 +62,9 @@ importers: svelte-maplibre: specifier: workspace:* version: link:../packages/svelte-maplibre + zod: + specifier: ^3.23.8 + version: 3.24.1 devDependencies: '@sveltejs/adapter-static': specifier: ^3.0.0 @@ -97,6 +103,12 @@ importers: specifier: ^6.0.0 version: 6.1.0(@types/node@22.14.0)(jiti@1.21.7)(yaml@2.7.0) + crates/radroots-common/bindings/ts: + devDependencies: + ts-to-zod: + specifier: ^3.15.0 + version: 3.15.0 + packages/client: dependencies: '@radroots/models': @@ -209,6 +221,9 @@ importers: '@radroots/nostr-util': specifier: workspace:* version: link:../nostr-util + '@radroots/radroots-common-bindings': + specifier: workspace:* + version: link:../../crates/radroots-common/bindings/ts '@radroots/theme': specifier: workspace:* version: link:../theme @@ -332,6 +347,9 @@ importers: '@nostr-dev-kit/ndk': specifier: ^2.11.0 version: 2.11.0(typescript@5.7.3) + '@radroots/radroots-common-bindings': + specifier: workspace:* + version: link:../../crates/radroots-common/bindings/ts '@radroots/util': specifier: workspace:* version: link:../util @@ -531,6 +549,9 @@ importers: '@nostr-dev-kit/ndk': specifier: ^2.11.0 version: 2.11.0(typescript@5.7.3) + '@radroots/radroots-common-bindings': + specifier: workspace:* + version: link:../../crates/radroots-common/bindings/ts '@sveltekit-i18n/base': specifier: ^1.3.7 version: 1.3.7(svelte@5.19.9) @@ -1392,6 +1413,10 @@ packages: resolution: {integrity: sha512-FKIMtcVsVcquzrC+yir9lOXHCIHmQ3IKEVCMohqEB7N96HjP2qrI9s5utbjI3lkavFNF5tXg1Gp9ODEo7XCfLA==} engines: {node: '>=16'} + '@oclif/core@4.2.10': + resolution: {integrity: sha512-fAqcXgqkUm4v5FYy7qWP4w1HaOlVSVJveah+yVTo5Nm5kTiXhmD5mQQ7+knGeBaStyrtQy6WardoC2xSic9rlQ==} + engines: {node: '>=18.0.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1917,6 +1942,11 @@ packages: resolution: {integrity: sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/vfs@1.6.1': + resolution: {integrity: sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA==} + peerDependencies: + typescript: '*' + '@vercel/nft@0.29.1': resolution: {integrity: sha512-6239JJM1V9b3OjvZIjbe+47/hGxMr44FEzlbTErrqzebCaoKAHK+yvahn3gdNacybDUbTxVF8Zuh0vqaeM8aKQ==} engines: {node: '>=18'} @@ -2018,6 +2048,10 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + ansi-escapes@7.0.0: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} @@ -2045,6 +2079,10 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -2085,6 +2123,9 @@ packages: async@0.1.22: resolution: {integrity: sha512-2tEzliJmf5fHNafNwQLJXUasGzQCVctvsNkXmnlELHwypU0p08/rHohYvkqKIjyXpx+0rkrYv6QbhJ+UF4QkBg==} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} @@ -2099,6 +2140,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -2110,6 +2154,9 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -2125,6 +2172,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + bufferutil@4.0.9: resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} @@ -2150,6 +2200,10 @@ packages: caniuse-lite@1.0.30001699: resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} + case@1.6.3: + resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} + engines: {node: '>= 0.8.0'} + catharsis@0.5.6: resolution: {integrity: sha512-FIKGuortcMexWC4B1gK+iJYr2xcGiWjJDdQYeqvWM5fDxS9l7EXjNixY+fjsquWcCXFOCZk84CYfmmSSk4Cb3g==} engines: {node: '>= 0.6'} @@ -2203,18 +2257,38 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + clean-stack@3.0.1: + resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} + engines: {node: '>=10'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + cli@0.4.3: resolution: {integrity: sha512-zPLMXUf13f5JkcgpA6FJim+U1fcsPYymGdEhdNsF5rRf1k+MEyBjmxECSI0lg+i143E6kPTpVN65bNaCvf+avA==} engines: {node: '>=0.2.5'} + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -2355,6 +2429,9 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2408,6 +2485,11 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + electron-to-chromium@1.5.96: resolution: {integrity: sha512-8AJUW6dh75Fm/ny8+kZKJzI1pgoE8bKLZlzDU2W1ENd+DXKJrx7I7l9hb8UWR4ojlnb5OlixMt00QWiYJoVw1w==} @@ -2461,6 +2543,10 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2531,6 +2617,10 @@ packages: esm-env@1.2.2: resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + esniff@2.0.1: resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} engines: {node: '>=0.10'} @@ -2631,6 +2721,10 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -2638,6 +2732,9 @@ packages: file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -2664,6 +2761,10 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -2701,6 +2802,10 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -2825,6 +2930,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -2836,6 +2945,10 @@ packages: resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} @@ -2851,6 +2964,11 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -2871,10 +2989,18 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-observable@2.1.0: + resolution: {integrity: sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==} + engines: {node: '>=8'} + is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -2893,10 +3019,18 @@ packages: is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -2926,6 +3060,11 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true @@ -2971,6 +3110,9 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + just-clamp@4.2.0: resolution: {integrity: sha512-ssHiAxuN7R+VP7jS1XyUP7ju5YC4bTQwQdzYtuZkASTrKe9KsI/X0t+5BJeD6Un6z/dNMDFVNQpQEgUphpXa0w==} @@ -3049,6 +3191,13 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} @@ -3189,6 +3338,9 @@ packages: murmurhash-js@1.0.0: resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -3288,6 +3440,9 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} + observable-fns@0.6.1: + resolution: {integrity: sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3310,6 +3465,10 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -3594,6 +3753,11 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + prettier@3.5.0: resolution: {integrity: sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==} engines: {node: '>=14'} @@ -3636,6 +3800,10 @@ packages: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -3663,6 +3831,10 @@ packages: engines: {node: '>= 0.4'} hasBin: true + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -3688,16 +3860,26 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -3797,6 +3979,9 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -3836,6 +4021,10 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -3927,6 +4116,15 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + threads@1.7.0: + resolution: {integrity: sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tiny-worker@2.3.0: + resolution: {integrity: sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -4007,6 +4205,10 @@ packages: '@swc/wasm': optional: true + ts-to-zod@3.15.0: + resolution: {integrity: sha512-Lu5ITqD8xCIo4JZp4Cg3iSK3J2x3TGwwuDtNHfAIlx1mXWKClRdzqV+x6CFEzhKtJlZzhyvJIqg7DzrWfsdVSg==} + hasBin: true + tsconfck@2.1.2: resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} engines: {node: ^14.13.1 || ^16 || >=18} @@ -4025,6 +4227,9 @@ packages: tseep@1.3.1: resolution: {integrity: sha512-ZPtfk1tQnZVyr7BPtbJ93qaAh2lZuIOpTMjhrYa4XctT8xe7t4SAW9LIxrySDuYMsfNNayE51E/WNGrNVgVicQ==} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -4047,6 +4252,12 @@ packages: typescript: optional: true + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + turbo-darwin-64@2.4.0: resolution: {integrity: sha512-kVMScnPUa3R4n7woNmkR15kOY0aUwCLJcUyH5UC59ggKqr5HIHwweKYK8N1pwBQso0LQF4I9i93hIzfJguCcwQ==} cpu: [x64] @@ -4089,6 +4300,10 @@ packages: resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} engines: {node: '>=4'} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} @@ -4133,6 +4348,10 @@ packages: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + update-browserslist-db@1.1.2: resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} hasBin: true @@ -4328,6 +4547,9 @@ packages: vt-pbf@3.1.3: resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -4368,6 +4590,10 @@ packages: engines: {node: '>=8'} hasBin: true + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -4376,6 +4602,13 @@ packages: resolution: {integrity: sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==} engines: {node: '>=0.4.0'} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -4399,6 +4632,7 @@ packages: yaeti@0.0.6: resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} engines: {node: '>=0.10.32'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. yallist@5.0.0: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} @@ -4882,7 +5116,7 @@ snapshots: '@eslint/config-array@0.19.2': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -4898,7 +5132,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -5192,7 +5426,7 @@ snapshots: '@nostr-dev-kit/ndk-cache-dexie@2.5.9(typescript@5.7.3)': dependencies: '@nostr-dev-kit/ndk': 2.11.0(typescript@5.7.3) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) dexie: 4.0.11 nostr-tools: 2.10.4(typescript@5.7.3) typescript-lru-cache: 2.0.0 @@ -5214,7 +5448,7 @@ snapshots: '@noble/hashes': 1.7.1 '@noble/secp256k1': 2.2.3 '@scure/base': 1.2.4 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) light-bolt11-decoder: 3.2.0 nostr-tools: 2.10.4(typescript@5.7.3) tseep: 1.3.1 @@ -5225,6 +5459,27 @@ snapshots: - supports-color - typescript + '@oclif/core@4.2.10': + dependencies: + ansi-escapes: 4.3.2 + ansis: 3.17.0 + clean-stack: 3.0.1 + cli-spinners: 2.9.2 + debug: 4.4.0(supports-color@8.1.1) + ejs: 3.1.10 + get-package-type: 0.1.0 + globby: 11.1.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + lilconfig: 3.1.3 + minimatch: 9.0.5 + semver: 7.7.1 + string-width: 4.2.3 + supports-color: 8.1.1 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + '@pkgjs/parseargs@0.11.0': optional: true @@ -5419,7 +5674,7 @@ snapshots: '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0))': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0)) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) svelte: 5.19.9 vite: 6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0) transitivePeerDependencies: @@ -5428,7 +5683,7 @@ snapshots: '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.9)(vite@5.4.14(@types/node@22.13.1)))(svelte@5.19.9)(vite@5.4.14(@types/node@22.13.1))': dependencies: '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.19.9)(vite@5.4.14(@types/node@22.13.1)) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) svelte: 5.19.9 vite: 5.4.14(@types/node@22.13.1) transitivePeerDependencies: @@ -5437,7 +5692,7 @@ snapshots: '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0))': dependencies: '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0)) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) svelte: 5.19.9 vite: 6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0) transitivePeerDependencies: @@ -5446,7 +5701,7 @@ snapshots: '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.9)(vite@6.1.0(@types/node@22.14.0)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.9)(vite@6.1.0(@types/node@22.14.0)(jiti@1.21.7)(yaml@2.7.0))': dependencies: '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.19.9)(vite@6.1.0(@types/node@22.14.0)(jiti@1.21.7)(yaml@2.7.0)) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) svelte: 5.19.9 vite: 6.1.0(@types/node@22.14.0)(jiti@1.21.7)(yaml@2.7.0) transitivePeerDependencies: @@ -5455,7 +5710,7 @@ snapshots: '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0)) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 @@ -5469,7 +5724,7 @@ snapshots: '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.9)(vite@5.4.14(@types/node@22.13.1))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.9)(vite@5.4.14(@types/node@22.13.1)))(svelte@5.19.9)(vite@5.4.14(@types/node@22.13.1)) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 @@ -5482,7 +5737,7 @@ snapshots: '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.9)(vite@6.1.0(@types/node@22.13.1)(jiti@1.21.7)(yaml@2.7.0)) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 @@ -5495,7 +5750,7 @@ snapshots: '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.9)(vite@6.1.0(@types/node@22.14.0)(jiti@1.21.7)(yaml@2.7.0))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.9)(vite@6.1.0(@types/node@22.14.0)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.9)(vite@6.1.0(@types/node@22.14.0)(jiti@1.21.7)(yaml@2.7.0)) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 @@ -5721,7 +5976,7 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.3) '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) eslint: 9.20.0(jiti@1.21.7) optionalDependencies: typescript: 5.7.3 @@ -5734,7 +5989,7 @@ snapshots: '@typescript-eslint/types': 8.23.0 '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.23.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) eslint: 9.20.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: @@ -5754,7 +6009,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.3) '@typescript-eslint/utils': 7.18.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) eslint: 9.20.0(jiti@1.21.7) ts-api-utils: 1.4.3(typescript@5.7.3) optionalDependencies: @@ -5766,7 +6021,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) '@typescript-eslint/utils': 8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3) - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) eslint: 9.20.0(jiti@1.21.7) ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 @@ -5781,7 +6036,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -5796,7 +6051,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.23.0 '@typescript-eslint/visitor-keys': 8.23.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -5838,6 +6093,13 @@ snapshots: '@typescript-eslint/types': 8.23.0 eslint-visitor-keys: 4.2.0 + '@typescript/vfs@1.6.1(typescript@5.7.3)': + dependencies: + debug: 4.4.0(supports-color@8.1.1) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + '@vercel/nft@0.29.1(rollup@4.34.6)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 @@ -5861,7 +6123,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 @@ -5988,6 +6250,10 @@ snapshots: ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + ansi-escapes@7.0.0: dependencies: environment: 1.1.0 @@ -6006,6 +6272,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@3.17.0: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -6036,6 +6304,8 @@ snapshots: async@0.1.22: {} + async@3.2.6: {} + autoprefixer@10.4.20(postcss@8.5.1): dependencies: browserslist: 4.24.4 @@ -6050,6 +6320,8 @@ snapshots: balanced-match@1.0.2: {} + base64-js@1.5.1: {} + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -6060,6 +6332,12 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -6080,6 +6358,11 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + bufferutil@4.0.9: dependencies: node-gyp-build: 4.8.4 @@ -6097,6 +6380,8 @@ snapshots: caniuse-lite@1.0.30001699: {} + case@1.6.3: {} + catharsis@0.5.6: {} chai@4.5.0: @@ -6158,19 +6443,33 @@ snapshots: ci-info@3.9.0: {} + clean-stack@3.0.1: + dependencies: + escape-string-regexp: 4.0.0 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 + cli-spinners@2.9.2: {} + cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 string-width: 7.2.0 + cli-width@3.0.0: {} + cli@0.4.3: dependencies: glob: 10.4.5 + clone@1.0.4: {} + clsx@2.1.1: {} color-convert@2.0.1: @@ -6251,9 +6550,11 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.4.0: + debug@4.4.0(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 decimal.js@10.5.0: {} @@ -6271,6 +6572,10 @@ snapshots: deepmerge@4.3.1: {} + defaults@1.0.4: + dependencies: + clone: 1.0.4 + dequal@2.0.3: {} detect-indent@6.1.0: {} @@ -6304,6 +6609,10 @@ snapshots: eastasianwidth@0.2.0: {} + ejs@3.1.10: + dependencies: + jake: 10.9.2 + electron-to-chromium@1.5.96: {} emoji-regex@10.4.0: {} @@ -6420,6 +6729,8 @@ snapshots: escalade@3.2.0: {} + escape-string-regexp@1.0.5: {} + escape-string-regexp@4.0.0: {} eslint-compat-utils@0.5.1(eslint@9.20.0(jiti@1.21.7)): @@ -6493,7 +6804,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.2.0 eslint-visitor-keys: 4.2.0 @@ -6521,6 +6832,9 @@ snapshots: esm-env@1.2.2: {} + esm@3.2.25: + optional: true + esniff@2.0.1: dependencies: d: 1.0.2 @@ -6635,12 +6949,20 @@ snapshots: fflate@0.8.2: {} + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 file-uri-to-path@1.0.0: {} + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -6669,6 +6991,12 @@ snapshots: fraction.js@4.3.7: {} + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -6699,6 +7027,8 @@ snapshots: get-func-name@2.0.2: {} + get-package-type@0.1.0: {} + get-stream@6.0.1: {} get-stream@8.0.1: {} @@ -6781,7 +7111,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -6814,6 +7144,8 @@ snapshots: imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -6823,6 +7155,24 @@ snapshots: ini@4.1.3: {} + inquirer@8.2.6: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + internmap@2.0.3: {} intl-messageformat@10.7.15: @@ -6840,6 +7190,8 @@ snapshots: dependencies: hasown: 2.0.2 + is-docker@2.2.1: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -6854,8 +7206,12 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-interactive@1.0.0: {} + is-number@7.0.0: {} + is-observable@2.1.0: {} + is-reference@3.0.3: dependencies: '@types/estree': 1.0.6 @@ -6870,8 +7226,14 @@ snapshots: is-typedarray@1.0.0: {} + is-unicode-supported@0.1.0: {} + is-windows@1.0.2: {} + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + isexe@2.0.0: {} isexe@3.1.1: {} @@ -6888,7 +7250,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -6905,6 +7267,13 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + jiti@1.21.7: {} joycon@3.1.1: {} @@ -6952,6 +7321,12 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + just-clamp@4.2.0: {} just-compare@2.3.0: {} @@ -6987,7 +7362,7 @@ snapshots: dependencies: chalk: 5.4.1 commander: 13.1.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) execa: 8.0.1 lilconfig: 3.1.3 listr2: 8.2.5 @@ -7030,6 +7405,13 @@ snapshots: lodash.startcase@4.4.0: {} + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + log-update@6.1.0: dependencies: ansi-escapes: 7.0.0 @@ -7204,6 +7586,8 @@ snapshots: murmurhash-js@1.0.0: {} + mute-stream@0.0.8: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 @@ -7285,6 +7669,8 @@ snapshots: object-hash@3.0.0: {} + observable-fns@0.6.1: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -7315,6 +7701,18 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + os-tmpdir@1.0.2: {} outdent@0.5.0: {} @@ -7517,6 +7915,8 @@ snapshots: prettier@2.8.8: {} + prettier@3.0.3: {} + prettier@3.5.0: {} pretty-format@29.7.0: @@ -7559,6 +7959,12 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -7581,6 +7987,11 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -7623,16 +8034,24 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.6 fsevents: 2.3.3 + run-async@2.4.1: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 rw@1.3.3: {} + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + sade@1.8.1: dependencies: mri: 1.2.0 + safe-buffer@5.2.1: {} + safer-buffer@2.1.2: {} semver@7.7.1: {} @@ -7725,6 +8144,10 @@ snapshots: get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -7763,6 +8186,10 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} svelte-check@4.1.4(picomatch@4.0.2)(svelte@5.19.9)(typescript@5.7.3): @@ -7924,6 +8351,24 @@ snapshots: dependencies: any-promise: 1.3.0 + threads@1.7.0: + dependencies: + callsites: 3.1.0 + debug: 4.4.0(supports-color@8.1.1) + is-observable: 2.1.0 + observable-fns: 0.6.1 + optionalDependencies: + tiny-worker: 2.3.0 + transitivePeerDependencies: + - supports-color + + through@2.3.8: {} + + tiny-worker@2.3.0: + dependencies: + esm: 3.2.25 + optional: true + tinybench@2.9.0: {} tinyexec@0.3.2: {} @@ -8006,6 +8451,27 @@ snapshots: yn: 3.1.1 optional: true + ts-to-zod@3.15.0: + dependencies: + '@oclif/core': 4.2.10 + '@typescript/vfs': 1.6.1(typescript@5.7.3) + case: 1.6.3 + chokidar: 3.6.0 + fs-extra: 11.3.0 + inquirer: 8.2.6 + lodash: 4.17.21 + ora: 5.4.1 + prettier: 3.0.3 + rxjs: 7.8.2 + slash: 3.0.0 + threads: 1.7.0 + tslib: 2.8.1 + tsutils: 3.21.0(typescript@5.7.3) + typescript: 5.7.3 + zod: 3.24.1 + transitivePeerDependencies: + - supports-color + tsconfck@2.1.2(typescript@5.7.3): optionalDependencies: typescript: 5.7.3 @@ -8017,6 +8483,8 @@ snapshots: tseep@1.3.1: {} + tslib@1.14.1: {} + tslib@2.8.1: {} tstl@2.5.16: {} @@ -8026,7 +8494,7 @@ snapshots: bundle-require: 4.2.1(esbuild@0.17.19) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) esbuild: 0.17.19 execa: 5.1.1 globby: 11.1.0 @@ -8049,7 +8517,7 @@ snapshots: bundle-require: 4.2.1(esbuild@0.17.19) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) esbuild: 0.17.19 execa: 5.1.1 globby: 11.1.0 @@ -8067,6 +8535,11 @@ snapshots: - supports-color - ts-node + tsutils@3.21.0(typescript@5.7.3): + dependencies: + tslib: 1.14.1 + typescript: 5.7.3 + turbo-darwin-64@2.4.0: optional: true @@ -8100,6 +8573,8 @@ snapshots: type-detect@4.1.0: {} + type-fest@0.21.3: {} + type@2.7.3: {} typedarray-to-buffer@3.1.5: @@ -8138,6 +8613,8 @@ snapshots: universalify@0.1.2: {} + universalify@2.0.1: {} + update-browserslist-db@1.1.2(browserslist@4.24.4): dependencies: browserslist: 4.24.4 @@ -8170,7 +8647,7 @@ snapshots: vite-node@1.0.4(@types/node@22.14.0): dependencies: cac: 6.7.14 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.1.1 vite: 5.4.14(@types/node@22.14.0) @@ -8188,7 +8665,7 @@ snapshots: vite-node@2.1.9(@types/node@22.13.1): dependencies: cac: 6.7.14 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 1.1.2 vite: 5.4.14(@types/node@22.13.1) @@ -8205,7 +8682,7 @@ snapshots: vite-tsconfig-paths@4.2.2(typescript@5.7.3)(vite@6.1.0(@types/node@22.14.0)(jiti@1.21.7)(yaml@2.7.0)): dependencies: - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 2.1.2(typescript@5.7.3) optionalDependencies: @@ -8280,7 +8757,7 @@ snapshots: acorn-walk: 8.3.4 cac: 6.7.14 chai: 4.5.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) execa: 8.0.1 local-pkg: 0.5.1 magic-string: 0.30.17 @@ -8316,7 +8793,7 @@ snapshots: '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 chai: 5.1.2 - debug: 4.4.0 + debug: 4.4.0(supports-color@8.1.1) expect-type: 1.1.0 magic-string: 0.30.17 pathe: 1.1.2 @@ -8351,6 +8828,10 @@ snapshots: '@mapbox/vector-tile': 1.3.1 pbf: 3.3.0 + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + webidl-conversions@3.0.1: {} webidl-conversions@4.0.2: {} @@ -8401,10 +8882,22 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + word-wrap@1.2.5: {} wordwrap@0.0.3: {} + wordwrap@1.0.0: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - 'app' - 'packages/*' + - 'crates/radroots-common/bindings/ts'