@salve-software/react-native-nitro-jsdom 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/android/CMakeLists.txt +2 -0
  2. package/cpp/HybridHtmlSandbox.cpp +7 -4
  3. package/cpp/HybridHtmlSandbox.hpp +1 -1
  4. package/cpp/lexbor/LexborDocument.cpp +3 -3
  5. package/cpp/lexbor/LexborDocument.hpp +3 -2
  6. package/cpp/quickjs/DOMBindings.cpp +5 -0
  7. package/cpp/quickjs/QuickJSRuntime.hpp +1 -0
  8. package/cpp/quickjs/bindings/CSSOMBindings.cpp +50 -0
  9. package/cpp/quickjs/bindings/CustomElementsBindings.cpp +1 -1
  10. package/cpp/quickjs/bindings/DocumentBindings.cpp +8 -0
  11. package/cpp/quickjs/bindings/ElementBindings.cpp +221 -1
  12. package/cpp/quickjs/bindings/EventBindings.cpp +8 -4
  13. package/cpp/quickjs/bindings/FormBindings.cpp +71 -0
  14. package/cpp/quickjs/bindings/IntlBindings.cpp +352 -0
  15. package/cpp/quickjs/bindings/IntlBindings.hpp +29 -0
  16. package/cpp/quickjs/bindings/UrlBindings.cpp +34 -0
  17. package/cpp/quickjs/bindings/WindowBindings.cpp +9 -0
  18. package/cpp/quickjs/bindings/WindowNamedPropertiesBindings.cpp +241 -0
  19. package/cpp/quickjs/bindings/WindowNamedPropertiesBindings.hpp +30 -0
  20. package/lib/commonjs/classes/JSDOM/JSDOM.class.js +2 -1
  21. package/lib/commonjs/classes/JSDOM/JSDOM.class.js.map +1 -1
  22. package/lib/module/classes/JSDOM/JSDOM.class.js +2 -1
  23. package/lib/module/classes/JSDOM/JSDOM.class.js.map +1 -1
  24. package/lib/typescript/src/classes/JSDOM/JSDOM.class.d.ts.map +1 -1
  25. package/lib/typescript/src/classes/JSDOM/types/IJSDOMOptions.d.ts +5 -4
  26. package/lib/typescript/src/classes/JSDOM/types/IJSDOMOptions.d.ts.map +1 -1
  27. package/lib/typescript/src/specs/HtmlSandbox.nitro.d.ts +1 -1
  28. package/lib/typescript/src/specs/HtmlSandbox.nitro.d.ts.map +1 -1
  29. package/nitrogen/generated/shared/c++/HybridHtmlSandboxSpec.hpp +1 -1
  30. package/package.json +1 -1
  31. package/src/classes/JSDOM/JSDOM.class.ts +2 -1
  32. package/src/classes/JSDOM/types/IJSDOMOptions.ts +5 -4
  33. package/src/specs/HtmlSandbox.nitro.ts +1 -1
@@ -0,0 +1,30 @@
1
+ #pragma once
2
+
3
+ #include "quickjs.h"
4
+
5
+ namespace margelo::nitro::nitrojsdom {
6
+
7
+ // Implements "named access on the Window object"
8
+ // (https://html.spec.whatwg.org/#named-access-on-the-window-object): an
9
+ // element with an `id`, or a `name` attribute on `embed`/`form`/`img`/
10
+ // `object`/`iframe`/`frame`, becomes reachable as a bare global while
11
+ // connected to the primary document.
12
+ //
13
+ // Pure JS, monkey-patching appendChild/removeChild/remove/innerHTML/
14
+ // textContent/insertAdjacentHTML/setAttribute/removeAttribute/the `id`
15
+ // accessor — no new native bindings, no engine-level Proxy (QuickJS's real
16
+ // global object can't be swapped for one), so exposure is push-based.
17
+ //
18
+ // Duplicate ids/names resolve to a plain array, not a live `HTMLCollection`
19
+ // (same trade-off as `form.elements`/`element.labels`). insertBefore/before/
20
+ // after/replaceWith/append/prepend/insertAdjacentElement are not hooked
21
+ // (same scope CustomElementsBindings' connectivity tracking accepted).
22
+ // Never overwrites a key already present on `globalThis`.
23
+ //
24
+ // Must run last in DOMBindings::install (after localStorage/sessionStorage
25
+ // exist, so it never claims those keys).
26
+ struct WindowNamedPropertiesBindings {
27
+ static void install(JSContext* ctx);
28
+ };
29
+
30
+ } // namespace margelo::nitro::nitrojsdom
@@ -47,7 +47,8 @@ class JSDOM {
47
47
  sandbox.setConsoleCallback(null);
48
48
  }
49
49
  if (options?.onAlert || options?.onConfirm || options?.onPrompt) {
50
- sandbox.setDialogCallbacks(options.onAlert ?? null, options.onConfirm ?? null, options.onPrompt ?? null);
50
+ const onConfirm = options.onConfirm;
51
+ sandbox.setDialogCallbacks(options.onAlert ?? null, onConfirm ? async message => await onConfirm(message) : null, options.onPrompt ?? null);
51
52
  }
52
53
  if (options?.onFetch) {
53
54
  const onFetch = options.onFetch;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","safeParseHeaders","headersJson","parsed","JSON","parse","JSDOM","_disposed","constructor","sandbox","create","html","options","NitroModules","createHybridObject","initialize","runScripts","url","pretendToBeVisual","onConsole","cb","setConsoleCallback","level","args","onAlert","onConfirm","onPrompt","setDialogCallbacks","onFetch","setFetchCallback","method","body","headers","then","res","stringify","ok","status","statusText","catch","err","error","Error","message","String","evaluate","script","Promise","reject","serialize","dispose","exports"],"sourceRoot":"../../../../src","sources":["classes/JSDOM/JSDOM.class.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","safeParseHeaders","headersJson","parsed","JSON","parse","JSDOM","_disposed","constructor","sandbox","create","html","options","NitroModules","createHybridObject","initialize","runScripts","url","pretendToBeVisual","onConsole","cb","setConsoleCallback","level","args","onAlert","onConfirm","onPrompt","setDialogCallbacks","message","onFetch","setFetchCallback","method","body","headers","then","res","stringify","ok","status","statusText","catch","err","error","Error","String","evaluate","script","Promise","reject","serialize","dispose","exports"],"sourceRoot":"../../../../src","sources":["classes/JSDOM/JSDOM.class.ts"],"mappings":"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","ignoreList":[]}
@@ -43,7 +43,8 @@ export class JSDOM {
43
43
  sandbox.setConsoleCallback(null);
44
44
  }
45
45
  if (options?.onAlert || options?.onConfirm || options?.onPrompt) {
46
- sandbox.setDialogCallbacks(options.onAlert ?? null, options.onConfirm ?? null, options.onPrompt ?? null);
46
+ const onConfirm = options.onConfirm;
47
+ sandbox.setDialogCallbacks(options.onAlert ?? null, onConfirm ? async message => await onConfirm(message) : null, options.onPrompt ?? null);
47
48
  }
48
49
  if (options?.onFetch) {
49
50
  const onFetch = options.onFetch;
@@ -1 +1 @@
1
- {"version":3,"names":["NitroModules","safeParseHeaders","headersJson","parsed","JSON","parse","JSDOM","_disposed","constructor","sandbox","create","html","options","createHybridObject","initialize","runScripts","url","pretendToBeVisual","onConsole","cb","setConsoleCallback","level","args","onAlert","onConfirm","onPrompt","setDialogCallbacks","onFetch","setFetchCallback","method","body","headers","then","res","stringify","ok","status","statusText","catch","err","error","Error","message","String","evaluate","script","Promise","reject","serialize","dispose"],"sourceRoot":"../../../../src","sources":["classes/JSDOM/JSDOM.class.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NitroModules","safeParseHeaders","headersJson","parsed","JSON","parse","JSDOM","_disposed","constructor","sandbox","create","html","options","createHybridObject","initialize","runScripts","url","pretendToBeVisual","onConsole","cb","setConsoleCallback","level","args","onAlert","onConfirm","onPrompt","setDialogCallbacks","message","onFetch","setFetchCallback","method","body","headers","then","res","stringify","ok","status","statusText","catch","err","error","Error","String","evaluate","script","Promise","reject","serialize","dispose"],"sourceRoot":"../../../../src","sources":["classes/JSDOM/JSDOM.class.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"JSDOM.class.d.ts","sourceRoot":"","sources":["../../../../../src/classes/JSDOM/JSDOM.class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C,qBAAa,KAAK;IAChB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAAkB;IAEnC,OAAO;IAIP;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,KAAK;IA4C3D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzC;;;;;;;;;;;OAWG;IACH,SAAS,IAAI,MAAM;IAKnB;;;;;;;;;;;;OAYG;IACH,OAAO,IAAI,IAAI;CAKhB"}
1
+ {"version":3,"file":"JSDOM.class.d.ts","sourceRoot":"","sources":["../../../../../src/classes/JSDOM/JSDOM.class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C,qBAAa,KAAK;IAChB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAAkB;IAEnC,OAAO;IAIP;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,KAAK;IA6C3D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzC;;;;;;;;;;;OAWG;IACH,SAAS,IAAI,MAAM;IAKnB;;;;;;;;;;;;OAYG;IACH,OAAO,IAAI,IAAI;CAKhB"}
@@ -21,12 +21,13 @@ export interface IJSDOMOptions {
21
21
  onAlert?: (message: string) => void;
22
22
  /**
23
23
  * Callback invoked when `window.confirm(message)` is called inside the sandbox.
24
- * Must return a boolean. If not provided, confirm() returns false (browser default).
24
+ * Return a boolean, or a `Promise<boolean>`. If not provided, confirm() returns
25
+ * false (browser default).
25
26
  *
26
- * WARNING: The callback is synchronous. Do NOT call back into the same sandbox
27
- * from inside the callback — QuickJS is not re-entrant.
27
+ * WARNING: Do NOT call back into the same sandbox from inside the callback —
28
+ * QuickJS is not re-entrant.
28
29
  */
29
- onConfirm?: (message: string) => boolean;
30
+ onConfirm?: (message: string) => boolean | Promise<boolean>;
30
31
  /**
31
32
  * Callback invoked when `window.prompt(message, defaultValue?)` is called inside
32
33
  * the sandbox. Return a string for the user input, or null for a dismissed prompt.
@@ -1 +1 @@
1
- {"version":3,"file":"IJSDOMOptions.d.ts","sourceRoot":"","sources":["../../../../../../src/classes/JSDOM/types/IJSDOMOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACzF;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrE;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjF"}
1
+ {"version":3,"file":"IJSDOMOptions.d.ts","sourceRoot":"","sources":["../../../../../../src/classes/JSDOM/types/IJSDOMOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACzF;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrE;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjF"}
@@ -7,7 +7,7 @@ export interface HtmlSandbox extends HybridObject<{
7
7
  evaluate(script: string): Promise<string>;
8
8
  serialize(): string;
9
9
  setConsoleCallback(callback: ((level: string, args: string[]) => void) | null): void;
10
- setDialogCallbacks(onAlert: ((message: string) => void) | null, onConfirm: ((message: string) => boolean) | null, onPrompt: ((message: string, defaultValue?: string) => string | null) | null): void;
10
+ setDialogCallbacks(onAlert: ((message: string) => void) | null, onConfirm: ((message: string) => Promise<boolean>) | null, onPrompt: ((message: string, defaultValue?: string) => string | null) | null): void;
11
11
  setFetchCallback(callback: ((url: string, method: string, headersJson: string, body?: string) => Promise<string>) | null): void;
12
12
  }
13
13
  //# sourceMappingURL=HtmlSandbox.nitro.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HtmlSandbox.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/HtmlSandbox.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,WAAY,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IAE/E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;IAG7F,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAG1C,SAAS,IAAI,MAAM,CAAC;IAGpB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAIrF,kBAAkB,CAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,EAC3C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,EAChD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAC3E,IAAI,CAAC;IAQR,gBAAgB,CACd,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GACtG,IAAI,CAAC;CACT"}
1
+ {"version":3,"file":"HtmlSandbox.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/HtmlSandbox.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,WAAY,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IAE/E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;IAG7F,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAG1C,SAAS,IAAI,MAAM,CAAC;IAGpB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAIrF,kBAAkB,CAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,EAC3C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,EACzD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAC3E,IAAI,CAAC;IAQR,gBAAgB,CACd,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GACtG,IAAI,CAAC;CACT"}
@@ -58,7 +58,7 @@ namespace margelo::nitro::nitrojsdom {
58
58
  virtual std::shared_ptr<Promise<std::string>> evaluate(const std::string& script) = 0;
59
59
  virtual std::string serialize() = 0;
60
60
  virtual void setConsoleCallback(const std::optional<std::variant<nitro::NullType, std::function<void(const std::string& /* level */, const std::vector<std::string>& /* args */)>>>& callback) = 0;
61
- virtual void setDialogCallbacks(const std::optional<std::variant<nitro::NullType, std::function<void(const std::string& /* message */)>>>& onAlert, const std::optional<std::variant<nitro::NullType, std::function<std::shared_ptr<Promise<bool>>(const std::string& /* message */)>>>& onConfirm, const std::optional<std::variant<nitro::NullType, std::function<std::shared_ptr<Promise<std::variant<nitro::NullType, std::string>>>(const std::string& /* message */, const std::optional<std::string>& /* defaultValue */)>>>& onPrompt) = 0;
61
+ virtual void setDialogCallbacks(const std::optional<std::variant<nitro::NullType, std::function<void(const std::string& /* message */)>>>& onAlert, const std::optional<std::variant<nitro::NullType, std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<bool>>>>(const std::string& /* message */)>>>& onConfirm, const std::optional<std::variant<nitro::NullType, std::function<std::shared_ptr<Promise<std::variant<nitro::NullType, std::string>>>(const std::string& /* message */, const std::optional<std::string>& /* defaultValue */)>>>& onPrompt) = 0;
62
62
  virtual void setFetchCallback(const std::optional<std::variant<nitro::NullType, std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<std::string>>>>(const std::string& /* url */, const std::string& /* method */, const std::string& /* headersJson */, const std::optional<std::string>& /* body */)>>>& callback) = 0;
63
63
 
64
64
  protected:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salve-software/react-native-nitro-jsdom",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "packageManager": "yarn@4.9.1",
5
5
  "description": "A headless HTML/DOM environment for React Native.",
6
6
  "main": "./lib/commonjs/index.js",
@@ -55,9 +55,10 @@ export class JSDOM {
55
55
  }
56
56
 
57
57
  if (options?.onAlert || options?.onConfirm || options?.onPrompt) {
58
+ const onConfirm = options.onConfirm;
58
59
  sandbox.setDialogCallbacks(
59
60
  options.onAlert ?? null,
60
- options.onConfirm ?? null,
61
+ onConfirm ? async (message) => await onConfirm(message) : null,
61
62
  options.onPrompt ?? null,
62
63
  );
63
64
  }
@@ -22,12 +22,13 @@ export interface IJSDOMOptions {
22
22
  onAlert?: (message: string) => void;
23
23
  /**
24
24
  * Callback invoked when `window.confirm(message)` is called inside the sandbox.
25
- * Must return a boolean. If not provided, confirm() returns false (browser default).
25
+ * Return a boolean, or a `Promise<boolean>`. If not provided, confirm() returns
26
+ * false (browser default).
26
27
  *
27
- * WARNING: The callback is synchronous. Do NOT call back into the same sandbox
28
- * from inside the callback — QuickJS is not re-entrant.
28
+ * WARNING: Do NOT call back into the same sandbox from inside the callback —
29
+ * QuickJS is not re-entrant.
29
30
  */
30
- onConfirm?: (message: string) => boolean;
31
+ onConfirm?: (message: string) => boolean | Promise<boolean>;
31
32
  /**
32
33
  * Callback invoked when `window.prompt(message, defaultValue?)` is called inside
33
34
  * the sandbox. Return a string for the user input, or null for a dismissed prompt.
@@ -17,7 +17,7 @@ export interface HtmlSandbox extends HybridObject<{ ios: 'c++'; android: 'c++' }
17
17
  // Pass null for any callback to use the browser default (no-op / false / null).
18
18
  setDialogCallbacks(
19
19
  onAlert: ((message: string) => void) | null,
20
- onConfirm: ((message: string) => boolean) | null,
20
+ onConfirm: ((message: string) => Promise<boolean>) | null,
21
21
  onPrompt: ((message: string, defaultValue?: string) => string | null) | null,
22
22
  ): void;
23
23