1 module libwasm.bindings.Client; 2 3 import libwasm.types; 4 5 import memutils.ct: tuple; 6 import libwasm.bindings.Clients; 7 import libwasm.bindings.Document; 8 import libwasm.bindings.MessagePort; 9 10 @safe: 11 nothrow: 12 13 struct Client { 14 nothrow: 15 JsHandle handle; 16 alias handle this; 17 this(Handle h) { 18 this.handle = JsHandle(h); 19 } 20 string url()() { 21 return Object_Getter__string(this.handle, "url"); 22 } 23 FrameType frameType()() { 24 return Object_Getter__int(this.handle, "frameType"); 25 } 26 ClientType type()() { 27 return Object_Getter__int(this.handle, "type"); 28 } 29 string id()() { 30 return Object_Getter__string(this.handle, "id"); 31 } 32 void postMessage(T0)(scope auto ref T0 message, scope ref Sequence!(JsObject) transfer) { 33 // Any 34 Handle _handle_message = getOrCreateHandle(message); 35 Serialize_Object_VarArgCall!void(this.handle, "postMessage", "Handle;Handle", tuple(_handle_message, cast(Handle)transfer.handle)); 36 dropHandle!(T0)(_handle_message); 37 } 38 void postMessage(T0)(scope auto ref T0 message, scope ref PostMessageOptions aOptions) { 39 // Any 40 Handle _handle_message = getOrCreateHandle(message); 41 Serialize_Object_VarArgCall!void(this.handle, "postMessage", "Handle;Handle", tuple(_handle_message, cast(Handle)aOptions.handle)); 42 dropHandle!(T0)(_handle_message); 43 } 44 void postMessage(T0)(scope auto ref T0 message) { 45 import std.traits : isNumeric, isFloatingPoint, isSomeString; 46 if (isSomeString!T0) { 47 Object_Call_string__void(this.handle, "postMessage", cast(string) message); 48 return; 49 } else if (isNumeric!T0 && !isFloatingPoint!T0) { 50 Object_Call_long__void(this.handle, "postMessage", cast(long) message); 51 return; 52 } else if (isFloatingPoint!T0) { 53 Object_Call_double__void(this.handle, "postMessage", cast(double) message); 54 return; 55 } 56 // Any 57 Handle _handle_message = getOrCreateHandle(message); 58 Object_Call_Handle__void(this.handle, "postMessage", _handle_message); 59 dropHandle!(T0)(_handle_message); 60 } 61 } 62 enum FrameType { 63 auxiliary, 64 top_level, 65 nested, 66 none 67 } 68 struct WindowClient { 69 nothrow: 70 libwasm.bindings.Client.Client _parent; 71 alias _parent this; 72 this(Handle h) { 73 _parent = .Client(h); 74 } 75 VisibilityState visibilityState()() { 76 return Object_Getter__int(this._parent, "visibilityState"); 77 } 78 bool focused()() { 79 return Object_Getter__bool(this._parent, "focused"); 80 } 81 auto focus()() { 82 return JsPromise!(WindowClient)(Object_Getter__Handle(this._parent, "focus")); 83 } 84 auto navigate()(string url) { 85 return JsPromise!(WindowClient)(Object_Call_string__Handle(this._parent, "navigate", url)); 86 } 87 } 88 89