commit 05f43a5a0d543e872c721fc87af763f7fbc84c9a
parent 11ccc269bff05fe4cd85b5206a77dda6a1f8db81
Author: triesap <tyson@radroots.org>
Date: Fri, 8 Aug 2025 19:57:27 +0000
chore: update working tree snapshot
Diffstat:
7 files changed, 537 insertions(+), 73 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
@@ -3,5 +3,390 @@
version = 4
[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+
+[[package]]
+name = "bumpalo"
+version = "3.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
+
+[[package]]
+name = "cc"
+version = "1.2.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3a42d84bb6b69d3a8b3eaacf0d88f179e1929695e1ad012b6cf64d9caaa5fd2"
+dependencies = [
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
+
+[[package]]
+name = "chrono"
+version = "0.4.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "wasm-bindgen",
+ "windows-link",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "log",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.174"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
+
+[[package]]
+name = "log"
+version = "0.4.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+
+[[package]]
+name = "memchr"
+version = "2.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
name = "radroots-common"
version = "0.1.0"
+dependencies = [
+ "serde",
+ "serde_json",
+ "thiserror",
+ "typeshare",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "serde"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.142"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "syn"
+version = "2.0.104"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "typeshare"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19be0f411120091e76e13e5a0186d8e2bcc3e7e244afdb70152197f1a8486ceb"
+dependencies = [
+ "chrono",
+ "serde",
+ "serde_json",
+ "typeshare-annotation",
+]
+
+[[package]]
+name = "typeshare-annotation"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a615d6c2764852a2e88a4f16e9ce1ea49bb776b5872956309e170d63a042a34f"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
+dependencies = [
+ "windows-implement",
+ "windows-interface",
+ "windows-link",
+ "windows-result",
+ "windows-strings",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.60.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "windows-interface"
+version = "0.59.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "windows-link"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
+
+[[package]]
+name = "windows-result"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
+dependencies = [
+ "windows-link",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
+dependencies = [
+ "windows-link",
+]
diff --git a/bindings/ts/package.json b/bindings/ts/package.json
@@ -23,7 +23,8 @@
"scripts": {
"gen:index": "echo \"// Generated @radroots/radroots-common-bindings\" > src/index.ts && for f in src/*.ts; do fn=$(basename \"$f\" .ts); [ \"$fn\" != \"index\" ] && echo \"export * from './$fn';\" >> src/index.ts; done",
"gen:schema": "ts-to-zod src/types.ts src/schema.ts",
- "gen": "npm run gen:schema && npm run gen:index",
+ "gen:types": "typeshare --lang typescript --output-file=src/types.ts ../../src",
+ "gen": "npm run gen:types && npm run gen:schema && npm run gen:index",
"prebuild": "npm run clean",
"clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
"build:cjs": "tsc -p tsconfig.json",
diff --git a/bindings/ts/src/schema.ts b/bindings/ts/src/schema.ts
@@ -86,21 +86,76 @@ export const radrootsNostrEventSchema = z.object({
sig: z.string(),
});
-export const radrootsNostrEvent0DataMetadataSchema = z.object({
+export const radrootsListingEventDataSchema = z.object({
+ id: z.string(),
+ author: z.string(),
+ published_at: z.number(),
+ d_tag: z.string(),
+ title: z.string(),
+ summary: z.string(),
+ images: z.array(z.string()),
+ location_address: z.string(),
+ location_city: z.string(),
+ location_region: z.string(),
+ location_country: z.string(),
+ location_lat: z.string(),
+ location_lng: z.string(),
+ location_geohash: z.string(),
+ product_kind: z.string(),
+ product_category: z.string(),
+ product_process: z.string(),
+ product_lot: z.string(),
+ product_profile: z.string(),
+ product_year: z.string(),
+ product_quantity_amt: z.string(),
+ product_quantity_unit: z.string(),
+ product_price_amt: z.string(),
+ product_price_cur: z.string(),
+ product_price_qty_amt: z.string(),
+ product_price_qty_unit: z.string(),
+});
+
+export const radrootsListingEventSchema = z.object({
+ event: radrootsNostrEventSchema,
+ data: radrootsListingEventDataSchema,
+});
+
+export const radrootsListingIndexShardMetadataSchema = z.object({
+ file: z.string(),
+ count: z.number(),
+ first_id: z.string(),
+ last_id: z.string(),
+ first_published_at: z.number(),
+ last_published_at: z.number(),
+ sha256: z.string(),
+});
+
+export const radrootsListingIndexCountryManifestSchema = z.object({
+ country: z.string(),
+ total: z.number(),
+ shard_size: z.number(),
+ first_published_at: z.number(),
+ last_published_at: z.number(),
+ shards: z.array(radrootsListingIndexShardMetadataSchema),
+});
+
+export const radrootsMetadataEventDataMetadataSchema = z.object({
name: z.string(),
display_name: z.string().optional(),
nip05: z.string().optional(),
about: z.string().optional(),
});
-export const radrootsNostrEvent0DataSchema = z.object({
+export const radrootsMetadataEventDataSchema = z.object({
+ id: z.string(),
+ public_key: z.string(),
published_at: z.number(),
- metadata: radrootsNostrEvent0DataMetadataSchema,
+ metadata: radrootsMetadataEventDataMetadataSchema,
});
-export const radrootsNostrEvent0Schema = z.object({
+export const radrootsMetadataEventSchema = z.object({
event: radrootsNostrEventSchema,
- data: radrootsNostrEvent0DataSchema,
+ data: radrootsMetadataEventDataSchema,
});
export const radrootsNostrEventRefSchema = z.object({
@@ -138,38 +193,6 @@ export const radrootsNostrEvent3Schema = z.object({
data: radrootsNostrEvent3DataSchema,
});
-export const radrootsNostrEvent30402DataSchema = z.object({
- published_at: z.number(),
- d_tag: z.string(),
- title: z.string(),
- summary: z.string(),
- images: z.array(z.string()),
- location_address: z.string(),
- location_city: z.string(),
- location_region: z.string(),
- location_country: z.string(),
- location_lat: z.string(),
- location_lng: z.string(),
- location_geohash: z.string(),
- product_kind: z.string(),
- product_category: z.string(),
- product_process: z.string(),
- product_lot: z.string(),
- product_profile: z.string(),
- product_year: z.string(),
- product_quantity_amt: z.string(),
- product_quantity_unit: z.string(),
- product_price_amt: z.string(),
- product_price_cur: z.string(),
- product_price_qty_amt: z.string(),
- product_price_qty_unit: z.string(),
-});
-
-export const radrootsNostrEvent30402Schema = z.object({
- event: radrootsNostrEventSchema,
- data: radrootsNostrEvent30402DataSchema,
-});
-
export const radrootsNostrEvent7DataSchema = z.object({
published_at: z.number(),
root: radrootsNostrEventRefSchema,
diff --git a/bindings/ts/src/types.ts b/bindings/ts/src/types.ts
@@ -87,6 +87,59 @@ export interface RadrootsNostrEvent {
sig: string;
}
+export interface RadrootsListingEventData {
+ id: string;
+ author: string;
+ published_at: number;
+ d_tag: string;
+ title: string;
+ summary: string;
+ images: string[];
+ location_address: string;
+ location_city: string;
+ location_region: string;
+ location_country: string;
+ location_lat: string;
+ location_lng: string;
+ location_geohash: string;
+ product_kind: string;
+ product_category: string;
+ product_process: string;
+ product_lot: string;
+ product_profile: string;
+ product_year: string;
+ product_quantity_amt: string;
+ product_quantity_unit: string;
+ product_price_amt: string;
+ product_price_cur: string;
+ product_price_qty_amt: string;
+ product_price_qty_unit: string;
+}
+
+export interface RadrootsListingEvent {
+ event: RadrootsNostrEvent;
+ data: RadrootsListingEventData;
+}
+
+export interface RadrootsListingIndexShardMetadata {
+ file: string;
+ count: number;
+ first_id: string;
+ last_id: string;
+ first_published_at: number;
+ last_published_at: number;
+ sha256: string;
+}
+
+export interface RadrootsListingIndexCountryManifest {
+ country: string;
+ total: number;
+ shard_size: number;
+ first_published_at: number;
+ last_published_at: number;
+ shards: RadrootsListingIndexShardMetadata[];
+}
+
export interface RadrootsMetadataEventDataMetadata {
name: string;
display_name?: string;
@@ -95,6 +148,8 @@ export interface RadrootsMetadataEventDataMetadata {
}
export interface RadrootsMetadataEventData {
+ id: string;
+ public_key: string;
published_at: number;
metadata: RadrootsMetadataEventDataMetadata;
}
@@ -139,38 +194,6 @@ export interface RadrootsNostrEvent3 {
data: RadrootsNostrEvent3Data;
}
-export interface RadrootsNostrEvent30402Data {
- published_at: number;
- d_tag: string;
- title: string;
- summary: string;
- images: string[];
- location_address: string;
- location_city: string;
- location_region: string;
- location_country: string;
- location_lat: string;
- location_lng: string;
- location_geohash: string;
- product_kind: string;
- product_category: string;
- product_process: string;
- product_lot: string;
- product_profile: string;
- product_year: string;
- product_quantity_amt: string;
- product_quantity_unit: string;
- product_price_amt: string;
- product_price_cur: string;
- product_price_qty_amt: string;
- product_price_qty_unit: string;
-}
-
-export interface RadrootsNostrEvent30402 {
- event: RadrootsNostrEvent;
- data: RadrootsNostrEvent30402Data;
-}
-
export interface RadrootsNostrEvent7Data {
published_at: number;
root: RadrootsNostrEventRef;
diff --git a/src/models/events.rs b/src/models/events.rs
@@ -41,6 +41,8 @@ pub struct RadrootsMetadataEventDataMetadata {
#[typeshare]
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct RadrootsMetadataEventData {
+ pub id: String,
+ pub public_key: String,
pub published_at: u32,
pub metadata: RadrootsMetadataEventDataMetadata,
}
@@ -100,14 +102,16 @@ pub struct RadrootsNostrEvent1111Data {
#[typeshare]
#[derive(Clone, Debug, Serialize, Deserialize)]
-pub struct RadrootsNostrEvent30402 {
+pub struct RadrootsListingEvent {
pub event: RadrootsNostrEvent,
- pub data: RadrootsNostrEvent30402Data,
+ pub data: RadrootsListingEventData,
}
#[typeshare]
#[derive(Clone, Debug, Serialize, Deserialize)]
-pub struct RadrootsNostrEvent30402Data {
+pub struct RadrootsListingEventData {
+ pub id: String,
+ pub author: String,
pub published_at: u32,
pub d_tag: String,
pub title: String,
diff --git a/src/models/indexer.rs b/src/models/indexer.rs
@@ -0,0 +1,25 @@
+use serde::{Deserialize, Serialize};
+use typeshare::typeshare;
+
+#[typeshare]
+#[derive(Clone, Debug, Serialize, Deserialize)]
+pub struct RadrootsListingIndexShardMetadata {
+ pub file: String,
+ pub count: u32,
+ pub first_id: String,
+ pub last_id: String,
+ pub first_published_at: u32,
+ pub last_published_at: u32,
+ pub sha256: String,
+}
+
+#[typeshare]
+#[derive(Clone, Debug, Serialize, Deserialize)]
+pub struct RadrootsListingIndexCountryManifest {
+ pub country: String,
+ pub total: u32,
+ pub shard_size: u32,
+ pub first_published_at: u32,
+ pub last_published_at: u32,
+ pub shards: Vec<RadrootsListingIndexShardMetadata>,
+}
+\ No newline at end of file
diff --git a/src/models/mod.rs b/src/models/mod.rs
@@ -1,3 +1,4 @@
pub mod events;
pub mod listing_order;
pub mod listing_order_request;
+pub mod indexer;
+\ No newline at end of file