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