fix: support async browser scripts in build_eval_js
Wrap eval script in async IIFE and await Promise-like results.
Fixes Promise serialization returning '{}' for async skill scripts.
🤖 Generated with [Qoder][https://qoder.com]
This commit is contained in:
@@ -436,7 +436,9 @@ fn build_eval_js(source_url: &str, script: &str) -> String {
|
|||||||
let events_url = escape_js_single_quoted(&events_endpoint_url(source_url));
|
let events_url = escape_js_single_quoted(&events_endpoint_url(source_url));
|
||||||
|
|
||||||
format!(
|
format!(
|
||||||
"(function(){{try{{var v=(function(){{return {script}}})();\
|
"(async function(){{try{{\
|
||||||
|
var v=await (async function(){{return {script}}})();\
|
||||||
|
if(v&&typeof v.then==='function'){{v=await v;}}\
|
||||||
var t=(typeof v==='string')?v:JSON.stringify(v);\
|
var t=(typeof v==='string')?v:JSON.stringify(v);\
|
||||||
try{{callBackJsToCpp('{escaped_source_url}@_@'+window.location.href+'@_@{callback}@_@sgBrowserExcuteJsCodeByDomain@_@'+(t??''))}}catch(_){{}}\
|
try{{callBackJsToCpp('{escaped_source_url}@_@'+window.location.href+'@_@{callback}@_@sgBrowserExcuteJsCodeByDomain@_@'+(t??''))}}catch(_){{}}\
|
||||||
var j=JSON.stringify({{type:'callback',callback:'{callback}',request_url:'{escaped_source_url}',payload:{{value:(t??'')}}}});\
|
var j=JSON.stringify({{type:'callback',callback:'{callback}',request_url:'{escaped_source_url}',payload:{{value:(t??'')}}}});\
|
||||||
|
|||||||
Reference in New Issue
Block a user