@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.
- package/android/CMakeLists.txt +2 -0
- package/cpp/HybridHtmlSandbox.cpp +7 -4
- package/cpp/HybridHtmlSandbox.hpp +1 -1
- package/cpp/lexbor/LexborDocument.cpp +3 -3
- package/cpp/lexbor/LexborDocument.hpp +3 -2
- package/cpp/quickjs/DOMBindings.cpp +5 -0
- package/cpp/quickjs/QuickJSRuntime.hpp +1 -0
- package/cpp/quickjs/bindings/CSSOMBindings.cpp +50 -0
- package/cpp/quickjs/bindings/CustomElementsBindings.cpp +1 -1
- package/cpp/quickjs/bindings/DocumentBindings.cpp +8 -0
- package/cpp/quickjs/bindings/ElementBindings.cpp +221 -1
- package/cpp/quickjs/bindings/EventBindings.cpp +8 -4
- package/cpp/quickjs/bindings/FormBindings.cpp +71 -0
- package/cpp/quickjs/bindings/IntlBindings.cpp +352 -0
- package/cpp/quickjs/bindings/IntlBindings.hpp +29 -0
- package/cpp/quickjs/bindings/UrlBindings.cpp +34 -0
- package/cpp/quickjs/bindings/WindowBindings.cpp +9 -0
- package/cpp/quickjs/bindings/WindowNamedPropertiesBindings.cpp +241 -0
- package/cpp/quickjs/bindings/WindowNamedPropertiesBindings.hpp +30 -0
- package/lib/commonjs/classes/JSDOM/JSDOM.class.js +2 -1
- package/lib/commonjs/classes/JSDOM/JSDOM.class.js.map +1 -1
- package/lib/module/classes/JSDOM/JSDOM.class.js +2 -1
- package/lib/module/classes/JSDOM/JSDOM.class.js.map +1 -1
- package/lib/typescript/src/classes/JSDOM/JSDOM.class.d.ts.map +1 -1
- package/lib/typescript/src/classes/JSDOM/types/IJSDOMOptions.d.ts +5 -4
- package/lib/typescript/src/classes/JSDOM/types/IJSDOMOptions.d.ts.map +1 -1
- package/lib/typescript/src/specs/HtmlSandbox.nitro.d.ts +1 -1
- package/lib/typescript/src/specs/HtmlSandbox.nitro.d.ts.map +1 -1
- package/nitrogen/generated/shared/c++/HybridHtmlSandboxSpec.hpp +1 -1
- package/package.json +1 -1
- package/src/classes/JSDOM/JSDOM.class.ts +2 -1
- package/src/classes/JSDOM/types/IJSDOMOptions.ts +5 -4
- 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
|
-
|
|
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","
|
|
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
|
-
|
|
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","
|
|
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;
|
|
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
|
-
*
|
|
24
|
+
* Return a boolean, or a `Promise<boolean>`. If not provided, confirm() returns
|
|
25
|
+
* false (browser default).
|
|
25
26
|
*
|
|
26
|
-
* WARNING:
|
|
27
|
-
*
|
|
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
|
|
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,
|
|
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
|
|
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
|
@@ -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
|
-
|
|
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
|
-
*
|
|
25
|
+
* Return a boolean, or a `Promise<boolean>`. If not provided, confirm() returns
|
|
26
|
+
* false (browser default).
|
|
26
27
|
*
|
|
27
|
-
* WARNING:
|
|
28
|
-
*
|
|
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
|
|