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:
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)?;