lib

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

commit 53d95b42f1a66297d3ffb2e01aaeab53873b8a1b
parent fc456f548fa782eb25f72b5da3d83d728fcb4514
Author: triesap <tyson@radroots.org>
Date:   Wed, 24 Dec 2025 21:10:22 +0000

wasm: add job tag exports


- Import job request/result/feedback event types and encoders
- Add JSON parsers for RadrootsJobRequest/Result/Feedback payloads
- Expose job_request_tags/job_result_tags/job_feedback_tags via wasm_bindgen
- Build job tags and serialize tag vectors to JSON for JS consumers

Diffstat:
Mevents-codec-wasm/src/lib.rs | 39+++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+), 0 deletions(-)

diff --git a/events-codec-wasm/src/lib.rs b/events-codec-wasm/src/lib.rs @@ -3,10 +3,16 @@ use radroots_events::comment::RadrootsComment; use radroots_events::follow::RadrootsFollow; +use radroots_events::job_feedback::RadrootsJobFeedback; +use radroots_events::job_request::RadrootsJobRequest; +use radroots_events::job_result::RadrootsJobResult; use radroots_events::listing::RadrootsListing; use radroots_events::reaction::RadrootsReaction; use radroots_events_codec::comment::encode::comment_build_tags; use radroots_events_codec::follow::encode::follow_build_tags; +use radroots_events_codec::job::feedback::encode::job_feedback_build_tags; +use radroots_events_codec::job::request::encode::job_request_build_tags; +use radroots_events_codec::job::result::encode::job_result_build_tags; use radroots_events_codec::reaction::encode::reaction_build_tags; use radroots_events_codec::listing::tags::{ listing_tags as listing_tags_impl, @@ -30,6 +36,18 @@ fn parse_follow(follow_json: &str) -> Result<RadrootsFollow, JsValue> { serde_json::from_str(follow_json).map_err(err_js) } +fn parse_job_request(job_json: &str) -> Result<RadrootsJobRequest, JsValue> { + serde_json::from_str(job_json).map_err(err_js) +} + +fn parse_job_result(job_json: &str) -> Result<RadrootsJobResult, JsValue> { + serde_json::from_str(job_json).map_err(err_js) +} + +fn parse_job_feedback(job_json: &str) -> Result<RadrootsJobFeedback, JsValue> { + serde_json::from_str(job_json).map_err(err_js) +} + fn parse_reaction(reaction_json: &str) -> Result<RadrootsReaction, JsValue> { serde_json::from_str(reaction_json).map_err(err_js) } @@ -66,6 +84,27 @@ pub fn follow_tags(follow_json: &str) -> Result<String, JsValue> { tags_to_json(tags) } +#[wasm_bindgen(js_name = job_request_tags)] +pub fn job_request_tags(job_json: &str) -> Result<String, JsValue> { + let job = parse_job_request(job_json)?; + let tags = job_request_build_tags(&job); + tags_to_json(tags) +} + +#[wasm_bindgen(js_name = job_result_tags)] +pub fn job_result_tags(job_json: &str) -> Result<String, JsValue> { + let job = parse_job_result(job_json)?; + let tags = job_result_build_tags(&job); + tags_to_json(tags) +} + +#[wasm_bindgen(js_name = job_feedback_tags)] +pub fn job_feedback_tags(job_json: &str) -> Result<String, JsValue> { + let job = parse_job_feedback(job_json)?; + let tags = job_feedback_build_tags(&job); + tags_to_json(tags) +} + #[wasm_bindgen(js_name = reaction_tags)] pub fn reaction_tags(reaction_json: &str) -> Result<String, JsValue> { let reaction = parse_reaction(reaction_json)?;