lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

model.rs (6183B)


      1 use dto_bindgen_backend_ts::{
      2     TypeScriptDeclaration, TypeScriptImport, TypeScriptModule, TypeScriptType, TypeScriptValue,
      3 };
      4 use radroots_event::{
      5     envelope::kind as kinds, listing::operational::RADROOTS_OPERATIONAL_LISTING_PRODUCT_TAG_KEYS,
      6 };
      7 
      8 pub fn constants_module() -> TypeScriptModule {
      9     TypeScriptModule::new("src/generated/constants.ts")
     10         .with_import(TypeScriptImport::type_only(
     11             ["RadrootsOperationalListingProductTagKeys"],
     12             "./types.js",
     13         ))
     14         .with_declaration(TypeScriptDeclaration::constant(
     15             "RADROOTS_OPERATIONAL_LISTING_PRODUCT_TAG_KEYS",
     16             Some(TypeScriptType::named(
     17                 "RadrootsOperationalListingProductTagKeys",
     18             )),
     19             TypeScriptValue::array(
     20                 RADROOTS_OPERATIONAL_LISTING_PRODUCT_TAG_KEYS
     21                     .iter()
     22                     .map(|value| TypeScriptValue::string(*value))
     23                     .collect::<Vec<_>>(),
     24             ),
     25         ))
     26 }
     27 
     28 pub fn kinds_module() -> TypeScriptModule {
     29     EVENT_KIND_EXPORTS.iter().fold(
     30         TypeScriptModule::new("src/generated/kinds.ts"),
     31         |module, (name, value)| {
     32             module.with_declaration(TypeScriptDeclaration::constant(
     33                 *name,
     34                 None,
     35                 TypeScriptValue::number(i64::from(*value)),
     36             ))
     37         },
     38     )
     39 }
     40 
     41 const EVENT_KIND_EXPORTS: &[(&str, u32)] = &[
     42     ("KIND_PROFILE", kinds::KIND_PROFILE),
     43     ("KIND_POST", kinds::KIND_POST),
     44     ("KIND_FOLLOW", kinds::KIND_FOLLOW),
     45     ("KIND_REACTION", kinds::KIND_REACTION),
     46     ("KIND_SEAL", kinds::KIND_SEAL),
     47     ("KIND_MESSAGE", kinds::KIND_MESSAGE),
     48     ("KIND_MESSAGE_FILE", kinds::KIND_MESSAGE_FILE),
     49     ("KIND_GIFT_WRAP", kinds::KIND_GIFT_WRAP),
     50     ("KIND_COMMENT", kinds::KIND_COMMENT),
     51     ("KIND_GEOCHAT", kinds::KIND_GEOCHAT),
     52     ("KIND_WIKI_MERGE_REQUEST", kinds::KIND_WIKI_MERGE_REQUEST),
     53     ("KIND_WIKI_ARTICLE", kinds::KIND_WIKI_ARTICLE),
     54     ("KIND_WIKI_REDIRECT", kinds::KIND_WIKI_REDIRECT),
     55     ("KIND_LIST_MUTE", kinds::KIND_LIST_MUTE),
     56     ("KIND_LIST_PINNED_NOTES", kinds::KIND_LIST_PINNED_NOTES),
     57     (
     58         "KIND_LIST_READ_WRITE_RELAYS",
     59         kinds::KIND_LIST_READ_WRITE_RELAYS,
     60     ),
     61     ("KIND_LIST_BOOKMARKS", kinds::KIND_LIST_BOOKMARKS),
     62     ("KIND_LIST_COMMUNITIES", kinds::KIND_LIST_COMMUNITIES),
     63     ("KIND_LIST_PUBLIC_CHATS", kinds::KIND_LIST_PUBLIC_CHATS),
     64     ("KIND_LIST_BLOCKED_RELAYS", kinds::KIND_LIST_BLOCKED_RELAYS),
     65     ("KIND_LIST_SEARCH_RELAYS", kinds::KIND_LIST_SEARCH_RELAYS),
     66     ("KIND_LIST_SIMPLE_GROUPS", kinds::KIND_LIST_SIMPLE_GROUPS),
     67     ("KIND_LIST_RELAY_FEEDS", kinds::KIND_LIST_RELAY_FEEDS),
     68     ("KIND_LIST_INTERESTS", kinds::KIND_LIST_INTERESTS),
     69     ("KIND_LIST_MEDIA_FOLLOWS", kinds::KIND_LIST_MEDIA_FOLLOWS),
     70     ("KIND_LIST_EMOJIS", kinds::KIND_LIST_EMOJIS),
     71     ("KIND_LIST_DM_RELAYS", kinds::KIND_LIST_DM_RELAYS),
     72     (
     73         "KIND_LIST_GOOD_WIKI_AUTHORS",
     74         kinds::KIND_LIST_GOOD_WIKI_AUTHORS,
     75     ),
     76     (
     77         "KIND_LIST_GOOD_WIKI_RELAYS",
     78         kinds::KIND_LIST_GOOD_WIKI_RELAYS,
     79     ),
     80     ("KIND_LIST_SET_FOLLOW", kinds::KIND_LIST_SET_FOLLOW),
     81     ("KIND_LIST_SET_GENERIC", kinds::KIND_LIST_SET_GENERIC),
     82     ("KIND_LIST_SET_RELAY", kinds::KIND_LIST_SET_RELAY),
     83     ("KIND_LIST_SET_BOOKMARK", kinds::KIND_LIST_SET_BOOKMARK),
     84     ("KIND_LIST_SET_CURATION", kinds::KIND_LIST_SET_CURATION),
     85     ("KIND_LIST_SET_VIDEO", kinds::KIND_LIST_SET_VIDEO),
     86     ("KIND_LIST_SET_PICTURE", kinds::KIND_LIST_SET_PICTURE),
     87     ("KIND_LIST_SET_KIND_MUTE", kinds::KIND_LIST_SET_KIND_MUTE),
     88     ("KIND_LIST_SET_INTEREST", kinds::KIND_LIST_SET_INTEREST),
     89     ("KIND_LIST_SET_EMOJI", kinds::KIND_LIST_SET_EMOJI),
     90     (
     91         "KIND_LIST_SET_RELEASE_ARTIFACT",
     92         kinds::KIND_LIST_SET_RELEASE_ARTIFACT,
     93     ),
     94     (
     95         "KIND_LIST_SET_APP_CURATION",
     96         kinds::KIND_LIST_SET_APP_CURATION,
     97     ),
     98     ("KIND_LIST_SET_CALENDAR", kinds::KIND_LIST_SET_CALENDAR),
     99     (
    100         "KIND_LIST_SET_STARTER_PACK",
    101         kinds::KIND_LIST_SET_STARTER_PACK,
    102     ),
    103     (
    104         "KIND_LIST_SET_MEDIA_STARTER_PACK",
    105         kinds::KIND_LIST_SET_MEDIA_STARTER_PACK,
    106     ),
    107     ("KIND_FARM", kinds::KIND_FARM),
    108     ("KIND_PLOT", kinds::KIND_PLOT),
    109     ("KIND_COOP", kinds::KIND_COOP),
    110     ("KIND_DOCUMENT", kinds::KIND_DOCUMENT),
    111     ("KIND_RESOURCE_AREA", kinds::KIND_RESOURCE_AREA),
    112     (
    113         "KIND_RESOURCE_HARVEST_CAP",
    114         kinds::KIND_RESOURCE_HARVEST_CAP,
    115     ),
    116     ("KIND_ACCOUNT_CLAIM", kinds::KIND_ACCOUNT_CLAIM),
    117     ("KIND_APP_DATA", kinds::KIND_APP_DATA),
    118     ("KIND_CLASSIFIED_LISTING", kinds::KIND_CLASSIFIED_LISTING),
    119     ("KIND_APPLICATION_HANDLER", kinds::KIND_APPLICATION_HANDLER),
    120     ("KIND_TRADE_PROPOSAL", kinds::KIND_TRADE_PROPOSAL),
    121     ("KIND_TRADE_DECISION", kinds::KIND_TRADE_DECISION),
    122     (
    123         "KIND_TRADE_REVISION_PROPOSAL",
    124         kinds::KIND_TRADE_REVISION_PROPOSAL,
    125     ),
    126     (
    127         "KIND_TRADE_REVISION_DECISION",
    128         kinds::KIND_TRADE_REVISION_DECISION,
    129     ),
    130     ("KIND_TRADE_CANCELLATION", kinds::KIND_TRADE_CANCELLATION),
    131     (
    132         "KIND_TRADE_SELLER_RESERVATION_ASSERTION",
    133         kinds::KIND_TRADE_SELLER_RESERVATION_ASSERTION,
    134     ),
    135     (
    136         "KIND_RHI_EVIDENCE_ATTESTATION",
    137         kinds::KIND_RHI_EVIDENCE_ATTESTATION,
    138     ),
    139     ("KIND_KNOWLEDGE_CLAIM", kinds::KIND_KNOWLEDGE_CLAIM),
    140     ("KIND_KNOWLEDGE_RELATION", kinds::KIND_KNOWLEDGE_RELATION),
    141     ("KIND_KNOWLEDGE_REVIEW", kinds::KIND_KNOWLEDGE_REVIEW),
    142     (
    143         "KIND_KNOWLEDGE_FIELD_REPORT",
    144         kinds::KIND_KNOWLEDGE_FIELD_REPORT,
    145     ),
    146     (
    147         "KIND_KNOWLEDGE_CHANGE_PROPOSAL",
    148         kinds::KIND_KNOWLEDGE_CHANGE_PROPOSAL,
    149     ),
    150     (
    151         "KIND_CONTRIBUTION_ATTESTATION",
    152         kinds::KIND_CONTRIBUTION_ATTESTATION,
    153     ),
    154     ("KIND_KNOWLEDGE_SOURCE", kinds::KIND_KNOWLEDGE_SOURCE),
    155     ("KIND_EVIDENCE_BOUNTY", kinds::KIND_EVIDENCE_BOUNTY),
    156     ("KIND_JOB_REQUEST_MIN", kinds::KIND_JOB_REQUEST_MIN),
    157     ("KIND_JOB_REQUEST_MAX", kinds::KIND_JOB_REQUEST_MAX),
    158     ("KIND_JOB_RESULT_MIN", kinds::KIND_JOB_RESULT_MIN),
    159     ("KIND_JOB_RESULT_MAX", kinds::KIND_JOB_RESULT_MAX),
    160     ("KIND_JOB_FEEDBACK", kinds::KIND_JOB_FEEDBACK),
    161 ];