sdk

Radroots SDK and bindings
git clone https://radroots.dev/git/sdk.git
Log | Files | Refs | README

model.rs (7408B)


      1 use radroots_events::{kinds, listing::RADROOTS_LISTING_PRODUCT_TAG_KEYS};
      2 
      3 pub fn constants_module() -> String {
      4     format!(
      5         "import type {{ RadrootsListingProductTagKeys }} from \"./types.js\";\n\nexport const RADROOTS_LISTING_PRODUCT_TAG_KEYS: RadrootsListingProductTagKeys = {};",
      6         render_string_array(&RADROOTS_LISTING_PRODUCT_TAG_KEYS)
      7     )
      8 }
      9 
     10 pub fn kinds_module() -> String {
     11     render_number_constants(EVENT_KIND_EXPORTS)
     12 }
     13 
     14 const EVENT_KIND_EXPORTS: &[(&str, u32)] = &[
     15     ("KIND_PROFILE", kinds::KIND_PROFILE),
     16     ("KIND_POST", kinds::KIND_POST),
     17     ("KIND_FOLLOW", kinds::KIND_FOLLOW),
     18     ("KIND_REACTION", kinds::KIND_REACTION),
     19     ("KIND_SEAL", kinds::KIND_SEAL),
     20     ("KIND_MESSAGE", kinds::KIND_MESSAGE),
     21     ("KIND_MESSAGE_FILE", kinds::KIND_MESSAGE_FILE),
     22     ("KIND_GIFT_WRAP", kinds::KIND_GIFT_WRAP),
     23     ("KIND_COMMENT", kinds::KIND_COMMENT),
     24     ("KIND_GEOCHAT", kinds::KIND_GEOCHAT),
     25     ("KIND_LIST_MUTE", kinds::KIND_LIST_MUTE),
     26     ("KIND_LIST_PINNED_NOTES", kinds::KIND_LIST_PINNED_NOTES),
     27     (
     28         "KIND_LIST_READ_WRITE_RELAYS",
     29         kinds::KIND_LIST_READ_WRITE_RELAYS,
     30     ),
     31     ("KIND_LIST_BOOKMARKS", kinds::KIND_LIST_BOOKMARKS),
     32     ("KIND_LIST_COMMUNITIES", kinds::KIND_LIST_COMMUNITIES),
     33     ("KIND_LIST_PUBLIC_CHATS", kinds::KIND_LIST_PUBLIC_CHATS),
     34     ("KIND_LIST_BLOCKED_RELAYS", kinds::KIND_LIST_BLOCKED_RELAYS),
     35     ("KIND_LIST_SEARCH_RELAYS", kinds::KIND_LIST_SEARCH_RELAYS),
     36     ("KIND_LIST_SIMPLE_GROUPS", kinds::KIND_LIST_SIMPLE_GROUPS),
     37     ("KIND_LIST_RELAY_FEEDS", kinds::KIND_LIST_RELAY_FEEDS),
     38     ("KIND_LIST_INTERESTS", kinds::KIND_LIST_INTERESTS),
     39     ("KIND_LIST_MEDIA_FOLLOWS", kinds::KIND_LIST_MEDIA_FOLLOWS),
     40     ("KIND_LIST_EMOJIS", kinds::KIND_LIST_EMOJIS),
     41     ("KIND_LIST_DM_RELAYS", kinds::KIND_LIST_DM_RELAYS),
     42     (
     43         "KIND_LIST_GOOD_WIKI_AUTHORS",
     44         kinds::KIND_LIST_GOOD_WIKI_AUTHORS,
     45     ),
     46     (
     47         "KIND_LIST_GOOD_WIKI_RELAYS",
     48         kinds::KIND_LIST_GOOD_WIKI_RELAYS,
     49     ),
     50     ("KIND_LIST_SET_FOLLOW", kinds::KIND_LIST_SET_FOLLOW),
     51     ("KIND_LIST_SET_GENERIC", kinds::KIND_LIST_SET_GENERIC),
     52     ("KIND_LIST_SET_RELAY", kinds::KIND_LIST_SET_RELAY),
     53     ("KIND_LIST_SET_BOOKMARK", kinds::KIND_LIST_SET_BOOKMARK),
     54     ("KIND_LIST_SET_CURATION", kinds::KIND_LIST_SET_CURATION),
     55     ("KIND_LIST_SET_VIDEO", kinds::KIND_LIST_SET_VIDEO),
     56     ("KIND_LIST_SET_PICTURE", kinds::KIND_LIST_SET_PICTURE),
     57     ("KIND_LIST_SET_KIND_MUTE", kinds::KIND_LIST_SET_KIND_MUTE),
     58     ("KIND_LIST_SET_INTEREST", kinds::KIND_LIST_SET_INTEREST),
     59     ("KIND_LIST_SET_EMOJI", kinds::KIND_LIST_SET_EMOJI),
     60     (
     61         "KIND_LIST_SET_RELEASE_ARTIFACT",
     62         kinds::KIND_LIST_SET_RELEASE_ARTIFACT,
     63     ),
     64     (
     65         "KIND_LIST_SET_APP_CURATION",
     66         kinds::KIND_LIST_SET_APP_CURATION,
     67     ),
     68     ("KIND_LIST_SET_CALENDAR", kinds::KIND_LIST_SET_CALENDAR),
     69     (
     70         "KIND_LIST_SET_STARTER_PACK",
     71         kinds::KIND_LIST_SET_STARTER_PACK,
     72     ),
     73     (
     74         "KIND_LIST_SET_MEDIA_STARTER_PACK",
     75         kinds::KIND_LIST_SET_MEDIA_STARTER_PACK,
     76     ),
     77     ("KIND_FARM", kinds::KIND_FARM),
     78     ("KIND_PLOT", kinds::KIND_PLOT),
     79     ("KIND_COOP", kinds::KIND_COOP),
     80     ("KIND_DOCUMENT", kinds::KIND_DOCUMENT),
     81     ("KIND_RESOURCE_AREA", kinds::KIND_RESOURCE_AREA),
     82     (
     83         "KIND_RESOURCE_HARVEST_CAP",
     84         kinds::KIND_RESOURCE_HARVEST_CAP,
     85     ),
     86     ("KIND_ACCOUNT_CLAIM", kinds::KIND_ACCOUNT_CLAIM),
     87     ("KIND_APP_DATA", kinds::KIND_APP_DATA),
     88     ("KIND_LISTING", kinds::KIND_LISTING),
     89     ("KIND_APPLICATION_HANDLER", kinds::KIND_APPLICATION_HANDLER),
     90     (
     91         "KIND_TRADE_LISTING_VALIDATE_REQ",
     92         kinds::KIND_TRADE_LISTING_VALIDATE_REQ,
     93     ),
     94     (
     95         "KIND_TRADE_LISTING_VALIDATE_RES",
     96         kinds::KIND_TRADE_LISTING_VALIDATE_RES,
     97     ),
     98     (
     99         "KIND_WORKER_TRADE_TRANSITION_PROOF_REQ",
    100         kinds::KIND_WORKER_TRADE_TRANSITION_PROOF_REQ,
    101     ),
    102     (
    103         "KIND_WORKER_TRADE_TRANSITION_PROOF_RES",
    104         kinds::KIND_WORKER_TRADE_TRANSITION_PROOF_RES,
    105     ),
    106     ("KIND_TRADE_ORDER_REQUEST", kinds::KIND_TRADE_ORDER_REQUEST),
    107     (
    108         "KIND_TRADE_ORDER_RESPONSE",
    109         kinds::KIND_TRADE_ORDER_RESPONSE,
    110     ),
    111     (
    112         "KIND_TRADE_ORDER_DECISION",
    113         kinds::KIND_TRADE_ORDER_DECISION,
    114     ),
    115     (
    116         "KIND_TRADE_ORDER_REVISION",
    117         kinds::KIND_TRADE_ORDER_REVISION,
    118     ),
    119     (
    120         "KIND_TRADE_ORDER_REVISION_RESPONSE",
    121         kinds::KIND_TRADE_ORDER_REVISION_RESPONSE,
    122     ),
    123     ("KIND_TRADE_QUESTION", kinds::KIND_TRADE_QUESTION),
    124     ("KIND_TRADE_ANSWER", kinds::KIND_TRADE_ANSWER),
    125     (
    126         "KIND_TRADE_DISCOUNT_REQUEST",
    127         kinds::KIND_TRADE_DISCOUNT_REQUEST,
    128     ),
    129     (
    130         "KIND_TRADE_DISCOUNT_OFFER",
    131         kinds::KIND_TRADE_DISCOUNT_OFFER,
    132     ),
    133     (
    134         "KIND_TRADE_DISCOUNT_ACCEPT",
    135         kinds::KIND_TRADE_DISCOUNT_ACCEPT,
    136     ),
    137     (
    138         "KIND_TRADE_FORBIDDEN_3431",
    139         kinds::KIND_TRADE_FORBIDDEN_3431,
    140     ),
    141     ("KIND_TRADE_CANCEL", kinds::KIND_TRADE_CANCEL),
    142     (
    143         "KIND_TRADE_FULFILLMENT_UPDATE",
    144         kinds::KIND_TRADE_FULFILLMENT_UPDATE,
    145     ),
    146     ("KIND_TRADE_RECEIPT", kinds::KIND_TRADE_RECEIPT),
    147     (
    148         "KIND_TRADE_VALIDATION_RECEIPT",
    149         kinds::KIND_TRADE_VALIDATION_RECEIPT,
    150     ),
    151     (
    152         "KIND_TRADE_LISTING_ORDER_REQ",
    153         kinds::KIND_TRADE_LISTING_ORDER_REQ,
    154     ),
    155     (
    156         "KIND_TRADE_LISTING_ORDER_RES",
    157         kinds::KIND_TRADE_LISTING_ORDER_RES,
    158     ),
    159     (
    160         "KIND_TRADE_LISTING_ORDER_REVISION_REQ",
    161         kinds::KIND_TRADE_LISTING_ORDER_REVISION_REQ,
    162     ),
    163     (
    164         "KIND_TRADE_LISTING_ORDER_REVISION_RES",
    165         kinds::KIND_TRADE_LISTING_ORDER_REVISION_RES,
    166     ),
    167     (
    168         "KIND_TRADE_LISTING_QUESTION_REQ",
    169         kinds::KIND_TRADE_LISTING_QUESTION_REQ,
    170     ),
    171     (
    172         "KIND_TRADE_LISTING_ANSWER_RES",
    173         kinds::KIND_TRADE_LISTING_ANSWER_RES,
    174     ),
    175     (
    176         "KIND_TRADE_LISTING_DISCOUNT_REQ",
    177         kinds::KIND_TRADE_LISTING_DISCOUNT_REQ,
    178     ),
    179     (
    180         "KIND_TRADE_LISTING_DISCOUNT_OFFER_RES",
    181         kinds::KIND_TRADE_LISTING_DISCOUNT_OFFER_RES,
    182     ),
    183     (
    184         "KIND_TRADE_LISTING_DISCOUNT_ACCEPT_REQ",
    185         kinds::KIND_TRADE_LISTING_DISCOUNT_ACCEPT_REQ,
    186     ),
    187     (
    188         "KIND_TRADE_LISTING_CANCEL_REQ",
    189         kinds::KIND_TRADE_LISTING_CANCEL_REQ,
    190     ),
    191     (
    192         "KIND_TRADE_LISTING_FULFILLMENT_UPDATE_REQ",
    193         kinds::KIND_TRADE_LISTING_FULFILLMENT_UPDATE_REQ,
    194     ),
    195     (
    196         "KIND_TRADE_LISTING_RECEIPT_REQ",
    197         kinds::KIND_TRADE_LISTING_RECEIPT_REQ,
    198     ),
    199     ("KIND_JOB_REQUEST_MIN", kinds::KIND_JOB_REQUEST_MIN),
    200     ("KIND_JOB_REQUEST_MAX", kinds::KIND_JOB_REQUEST_MAX),
    201     ("KIND_JOB_RESULT_MIN", kinds::KIND_JOB_RESULT_MIN),
    202     ("KIND_JOB_RESULT_MAX", kinds::KIND_JOB_RESULT_MAX),
    203     ("KIND_JOB_FEEDBACK", kinds::KIND_JOB_FEEDBACK),
    204 ];
    205 
    206 fn render_number_constants(exports: &[(&str, u32)]) -> String {
    207     let mut rendered = String::new();
    208     for (name, value) in exports {
    209         rendered.push_str("export const ");
    210         rendered.push_str(name);
    211         rendered.push_str(" = ");
    212         rendered.push_str(&value.to_string());
    213         rendered.push_str(";\n");
    214     }
    215     rendered
    216 }
    217 
    218 fn render_string_array(values: &[&str]) -> String {
    219     let items = values
    220         .iter()
    221         .map(|value| format!("{value:?}"))
    222         .collect::<Vec<_>>()
    223         .join(", ");
    224     format!("[{items}]")
    225 }