1 module libwasm.bindings.ServiceWorker; 2 3 import libwasm.types; 4 5 import memutils.ct: tuple; 6 import libwasm.bindings.AbstractWorker; 7 import libwasm.bindings.Client; 8 import libwasm.bindings.EventHandler; 9 import libwasm.bindings.EventTarget; 10 import libwasm.bindings.ExtendableEvent; 11 import libwasm.bindings.ExtendableMessageEvent; 12 import libwasm.bindings.FetchEvent; 13 import libwasm.bindings.MessagePort; 14 import libwasm.bindings.Request; 15 import libwasm.bindings.Response; 16 17 @safe: 18 nothrow: 19 20 struct ServiceWorker { 21 nothrow: 22 libwasm.bindings.EventTarget.EventTarget _parent; 23 alias _parent this; 24 this(Handle h) { 25 _parent = .EventTarget(h); 26 } 27 string scriptURL()() { 28 return Object_Getter__string(this._parent, "scriptURL"); 29 } 30 ServiceWorkerState state()() { 31 return Object_Getter__int(this._parent, "state"); 32 } 33 void onstatechange(T0)(scope auto ref Optional!(T0) onstatechange) if (isTOrPointer!(T0, EventHandlerNonNull)) { 34 Object_Call_EventHandler__void(this._parent, "onstatechange", !onstatechange.empty, onstatechange.front); 35 } 36 EventHandler onstatechange()() { 37 return Object_Getter__EventHandler(this._parent, "onstatechange"); 38 } 39 void postMessage(T0)(scope auto ref T0 message, scope ref Sequence!(JsObject) transferable) { 40 // Any 41 Handle _handle_message = getOrCreateHandle(message); 42 Serialize_Object_VarArgCall!void(this._parent, "postMessage", "Handle;Handle", tuple(_handle_message, cast(Handle)transferable.handle)); 43 dropHandle!(T0)(_handle_message); 44 } 45 void postMessage(T0)(scope auto ref T0 message, scope ref PostMessageOptions options) { 46 // Any 47 Handle _handle_message = getOrCreateHandle(message); 48 Serialize_Object_VarArgCall!void(this._parent, "postMessage", "Handle;Handle", tuple(_handle_message, cast(Handle)options.handle)); 49 dropHandle!(T0)(_handle_message); 50 } 51 void postMessage(T0)(scope auto ref T0 message) { 52 import std.traits : isNumeric, isFloatingPoint, isSomeString; 53 if (isSomeString!T0) { 54 Object_Call_string__void(this._parent, "postMessage", cast(string) message); 55 return; 56 } else if (isNumeric!T0 && !isFloatingPoint!T0) { 57 Object_Call_long__void(this._parent, "postMessage", cast(long) message); 58 return; 59 } else if (isFloatingPoint!T0) { 60 Object_Call_double__void(this._parent, "postMessage", cast(double) message); 61 return; 62 } 63 // Any 64 Handle _handle_message = getOrCreateHandle(message); 65 Object_Call_Handle__void(this._parent, "postMessage", _handle_message); 66 dropHandle!(T0)(_handle_message); 67 } 68 void onerror(T0)(scope auto ref Optional!(T0) onerror) if (isTOrPointer!(T0, EventHandlerNonNull)) { 69 Object_Call_EventHandler__void(this._parent, "onerror", !onerror.empty, onerror.front); 70 } 71 EventHandler onerror()() { 72 return Object_Getter__EventHandler(this._parent, "onerror"); 73 } 74 auto FetchEvent()(string type, scope ref FetchEventInit eventInitDict) { 75 return .FetchEvent(Serialize_Object_VarArgCall!Handle(this._parent, "FetchEvent", "string;Handle", tuple(type, cast(Handle)eventInitDict._parent))); 76 } 77 auto ExtendableMessageEvent()(string type, scope ref ExtendableMessageEventInit eventInitDict) { 78 return .ExtendableMessageEvent(Serialize_Object_VarArgCall!Handle(this._parent, "ExtendableMessageEvent", "string;Handle", tuple(type, cast(Handle)eventInitDict._parent))); 79 } 80 } 81 enum ServiceWorkerState { 82 parsed, 83 installing, 84 installed, 85 activating, 86 activated, 87 redundant 88 } 89 90