branch: main
js_snippets.rs
1151 bytesRaw
use wasm_bindgen::prelude::*;
use worker::*;
use crate::SomeSharedData;
#[wasm_bindgen(inline_js = "export function js_performance_now() { return performance.now(); }")]
extern "C" {
fn js_performance_now() -> f64;
}
#[wasm_bindgen(
inline_js = "export function js_console_log(value) { console.log(\"first log:\", value); }"
)]
extern "C" {
fn js_console_log(value: String);
}
#[wasm_bindgen(
inline_js = "export function js_throw_error() { throw new Error('Intentional JS error for testing recovery'); }"
)]
extern "C" {
fn js_throw_error();
}
#[worker::send]
pub async fn performance_now(_req: Request, _env: Env, _data: SomeSharedData) -> Result<Response> {
Response::ok(format!("now: {}", js_performance_now()))
}
#[worker::send]
pub async fn console_log(_req: Request, _env: Env, _data: SomeSharedData) -> Result<Response> {
js_console_log("test".to_owned());
Response::ok("OK")
}
pub fn throw_js_error(_req: Request, _env: Env, _data: SomeSharedData) -> Result<Response> {
// This will call the JS function which throws an error
js_throw_error();
Response::ok("This should never be reached")
}