1 module libwasm.bindings.Worker;
2 
3 import libwasm.types;
4 
5 import memutils.ct: tuple;
6 import libwasm.bindings.AbortSignal;
7 import libwasm.bindings.AbstractWorker;
8 import libwasm.bindings.Blob;
9 import libwasm.bindings.CloseEvent;
10 import libwasm.bindings.CustomEvent;
11 import libwasm.bindings.DOMException;
12 import libwasm.bindings.ErrorEvent;
13 import libwasm.bindings.Event;
14 import libwasm.bindings.EventHandler;
15 import libwasm.bindings.EventListener;
16 import libwasm.bindings.EventTarget;
17 import libwasm.bindings.File;
18 import libwasm.bindings.FormData;
19 import libwasm.bindings.HTMLFormElement;
20 import libwasm.bindings.Headers;
21 import libwasm.bindings.IDBVersionChangeEvent;
22 import libwasm.bindings.ImageBitmap;
23 import libwasm.bindings.MessageEvent;
24 import libwasm.bindings.MessagePort;
25 import libwasm.bindings.Notification;
26 import libwasm.bindings.Performance;
27 import libwasm.bindings.PerformanceObserver;
28 import libwasm.bindings.ProgressEvent;
29 import libwasm.bindings.PromiseRejectionEvent;
30 import libwasm.bindings.Request;
31 import libwasm.bindings.Response;
32 import libwasm.bindings.TextDecoder;
33 import libwasm.bindings.TextEncoder;
34 import libwasm.bindings.URLSearchParams;
35 import libwasm.bindings.WebGLContextEvent;
36 import libwasm.bindings.WebSocket;
37 
38 @safe:
39 nothrow:
40 
41 struct ChromeWorker {
42   nothrow:
43   libwasm.bindings.Worker.Worker _parent;
44   alias _parent this;
45   this(Handle h) {
46     _parent = .Worker(h);
47   }
48 }
49 struct Worker {
50   nothrow:
51   libwasm.bindings.EventTarget.EventTarget _parent;
52   alias _parent this;
53   this(Handle h) {
54     _parent = .EventTarget(h);
55   }
56   void terminate()() {
57     Object_Call__void(this._parent, "terminate");
58   }
59   void postMessage(T0)(scope auto ref T0 message, scope ref Sequence!(JsObject) transfer) {
60     // Any
61     Handle _handle_message = getOrCreateHandle(message);
62     Serialize_Object_VarArgCall!void(this._parent, "postMessage", "Handle;Handle", tuple(_handle_message, cast(Handle)transfer.handle));
63     dropHandle!(T0)(_handle_message);
64   }
65   void postMessage(T0)(scope auto ref T0 message, scope ref PostMessageOptions aOptions) {
66     // Any
67     Handle _handle_message = getOrCreateHandle(message);
68     Serialize_Object_VarArgCall!void(this._parent, "postMessage", "Handle;Handle", tuple(_handle_message, cast(Handle)aOptions.handle));
69     dropHandle!(T0)(_handle_message);
70   }
71   void postMessage(T0)(scope auto ref T0 message) {
72     import std.traits : isNumeric, isFloatingPoint, isSomeString;
73     if (isSomeString!T0) {
74       Object_Call_string__void(this._parent, "postMessage", cast(string) message);
75       return;
76     } else if (isNumeric!T0 && !isFloatingPoint!T0) {
77       Object_Call_long__void(this._parent, "postMessage", cast(long) message);
78       return;
79     } else if (isFloatingPoint!T0) {
80       Object_Call_double__void(this._parent, "postMessage", cast(double) message);
81       return;
82     }
83     // Any
84     Handle _handle_message = getOrCreateHandle(message);
85     Object_Call_Handle__void(this._parent, "postMessage", _handle_message);
86     dropHandle!(T0)(_handle_message);
87   }
88   void onmessage(T0)(scope auto ref Optional!(T0) onmessage) if (isTOrPointer!(T0, EventHandlerNonNull)) {
89     Object_Call_EventHandler__void(this._parent, "onmessage", !onmessage.empty, onmessage.front);
90   }
91   EventHandler onmessage()() {
92     return Object_Getter__EventHandler(this._parent, "onmessage");
93   }
94   void onmessageerror(T0)(scope auto ref Optional!(T0) onmessageerror) if (isTOrPointer!(T0, EventHandlerNonNull)) {
95     Object_Call_EventHandler__void(this._parent, "onmessageerror", !onmessageerror.empty, onmessageerror.front);
96   }
97   EventHandler onmessageerror()() {
98     return Object_Getter__EventHandler(this._parent, "onmessageerror");
99   }
100   void onerror(T0)(scope auto ref Optional!(T0) onerror) if (isTOrPointer!(T0, EventHandlerNonNull)) {
101     Object_Call_EventHandler__void(this._parent, "onerror", !onerror.empty, onerror.front);
102   }
103   EventHandler onerror()() {
104     return Object_Getter__EventHandler(this._parent, "onerror");
105   }
106   auto Headers()(scope ref HeadersInit init) {
107     return .Headers(Serialize_Object_VarArgCall!Handle(this._parent, "Headers", "SumType!(Handle,Handle,Handle)", tuple(libwasm.sumtype.match!(((ref init.Types[0] v) => 0),((ref init.Types[1] v) => 1),((ref init.Types[2] v) => 2))(init),tuple(libwasm.sumtype.match!(((ref init.Types[0] v) => cast(Handle)v.handle),((ref init.Types[1] v) => Handle.init),((ref init.Types[2] v) => Handle.init))(init),libwasm.sumtype.match!(((ref init.Types[0] v) => Handle.init),((ref init.Types[1] v) => cast(Handle)v.handle),((ref init.Types[2] v) => Handle.init))(init),libwasm.sumtype.match!(((ref init.Types[0] v) => Handle.init),((ref init.Types[1] v) => Handle.init),((ref init.Types[2] v) => cast(Handle)v.handle))(init)))));
108   }
109   auto BroadcastChannel()(string channel) {
110     return .BroadcastChannel(Object_Call_string__Handle(this._parent, "BroadcastChannel", channel));
111   }
112   auto Event()(string type, scope ref EventInit eventInitDict) {
113     return .Event(Serialize_Object_VarArgCall!Handle(this._parent, "Event", "string;Handle", tuple(type, cast(Handle)eventInitDict.handle)));
114   }
115   auto Blob()(scope ref Sequence!(BlobPart) blobParts, scope ref BlobPropertyBag options) {
116     return .Blob(Serialize_Object_VarArgCall!Handle(this._parent, "Blob", "Handle;Handle", tuple(cast(Handle)blobParts.handle, cast(Handle)options.handle)));
117   }
118   auto WebGLContextEvent()(string type, scope ref WebGLContextEventInit eventInit) {
119     return .WebGLContextEvent(Serialize_Object_VarArgCall!Handle(this._parent, "WebGLContextEvent", "string;Handle", tuple(type, cast(Handle)eventInit._parent)));
120   }
121   auto URL()(string url, string base) {
122     return .URL(Object_Call_string_string__Handle(this._parent, "URL", url, base));
123   }
124   auto MessageEvent()(string type, scope ref MessageEventInit eventInitDict) {
125     return .MessageEvent(Serialize_Object_VarArgCall!Handle(this._parent, "MessageEvent", "string;Handle", tuple(type, cast(Handle)eventInitDict._parent)));
126   }
127   auto CloseEvent()(string type, scope ref CloseEventInit eventInitDict) {
128     return .CloseEvent(Serialize_Object_VarArgCall!Handle(this._parent, "CloseEvent", "string;Handle", tuple(type, cast(Handle)eventInitDict._parent)));
129   }
130   auto Notification()(string title, scope ref NotificationOptions options) {
131     return .Notification(Serialize_Object_VarArgCall!Handle(this._parent, "Notification", "string;Handle", tuple(title, cast(Handle)options.handle)));
132   }
133   auto IDBVersionChangeEvent()(string type, scope ref IDBVersionChangeEventInit eventInitDict) {
134     return .IDBVersionChangeEvent(Serialize_Object_VarArgCall!Handle(this._parent, "IDBVersionChangeEvent", "string;Handle", tuple(type, cast(Handle)eventInitDict._parent)));
135   }
136   auto ErrorEvent()(string type, scope ref ErrorEventInit eventInitDict) {
137     return .ErrorEvent(Serialize_Object_VarArgCall!Handle(this._parent, "ErrorEvent", "string;Handle", tuple(type, cast(Handle)eventInitDict._parent)));
138   }
139   auto DOMError()(string name, string message /* = "" */) {
140     return .DOMError(Object_Call_string_string__Handle(this._parent, "DOMError", name, message));
141   }
142   auto File()(scope ref Sequence!(BlobPart) fileBits, string fileName, scope ref FilePropertyBag options) {
143     return .File(Serialize_Object_VarArgCall!Handle(this._parent, "File", "Handle;string;Handle", tuple(cast(Handle)fileBits.handle, fileName, cast(Handle)options._parent)));
144   }
145   auto ProgressEvent()(string type, scope ref ProgressEventInit eventInitDict) {
146     return .ProgressEvent(Serialize_Object_VarArgCall!Handle(this._parent, "ProgressEvent", "string;Handle", tuple(type, cast(Handle)eventInitDict._parent)));
147   }
148   auto Response(T0)(scope auto ref Optional!(T0) body_, scope ref ResponseInit init) if (isTOrPointer!(T0, SumType!(.Blob, BufferSource, .FormData, .URLSearchParams, ReadableStream, string))) {
149     return .Response(Serialize_Object_VarArgCall!Handle(this._parent, "Response", "Optional!SumType!(Handle,Handle,Handle,Handle,Handle,string);Handle", tuple(!body_.empty, libwasm.sumtype.match!(((ref body_.Types[0] v) => 0),((ref body_.Types[1] v) => 1),((ref body_.Types[2] v) => 2),((ref body_.Types[3] v) => 3),((ref body_.Types[4] v) => 4),((string v) => 5))(body_),tuple(libwasm.sumtype.match!(((ref body_.Types[0] v) => cast(Handle)v.handle),((ref body_.Types[1] v) => Handle.init),((ref body_.Types[2] v) => Handle.init),((ref body_.Types[3] v) => Handle.init),((ref body_.Types[4] v) => Handle.init),((string v) => Handle.init))(body_),libwasm.sumtype.match!(((ref body_.Types[0] v) => Handle.init),((ref body_.Types[1] v) => cast(Handle)v.handle),((ref body_.Types[2] v) => Handle.init),((ref body_.Types[3] v) => Handle.init),((ref body_.Types[4] v) => Handle.init),((string v) => Handle.init))(body_),libwasm.sumtype.match!(((ref body_.Types[0] v) => Handle.init),((ref body_.Types[1] v) => Handle.init),((ref body_.Types[2] v) => cast(Handle)v.handle),((ref body_.Types[3] v) => Handle.init),((ref body_.Types[4] v) => Handle.init),((string v) => Handle.init))(body_),libwasm.sumtype.match!(((ref body_.Types[0] v) => Handle.init),((ref body_.Types[1] v) => Handle.init),((ref body_.Types[2] v) => Handle.init),((ref body_.Types[3] v) => cast(Handle)v.handle),((ref body_.Types[4] v) => Handle.init),((string v) => Handle.init))(body_),libwasm.sumtype.match!(((ref body_.Types[0] v) => Handle.init),((ref body_.Types[1] v) => Handle.init),((ref body_.Types[2] v) => Handle.init),((ref body_.Types[3] v) => Handle.init),((ref body_.Types[4] v) => cast(Handle)v.handle),((string v) => Handle.init))(body_),libwasm.sumtype.match!(((ref body_.Types[0] v) => string.init),((ref body_.Types[1] v) => string.init),((ref body_.Types[2] v) => string.init),((ref body_.Types[3] v) => string.init),((ref body_.Types[4] v) => string.init),((string v) => v))(body_)), cast(Handle)init.handle)));
150   }
151   auto TextDecoder()(string label /* = "utf-8" */, scope ref TextDecoderOptions options) {
152     return .TextDecoder(Serialize_Object_VarArgCall!Handle(this._parent, "TextDecoder", "string;Handle", tuple(label, cast(Handle)options.handle)));
153   }
154   auto EventTarget()() {
155     return .EventTarget(Object_Getter__Handle(this._parent, "EventTarget"));
156   }
157   auto TextEncoder()() {
158     return .TextEncoder(Object_Getter__Handle(this._parent, "TextEncoder"));
159   }
160   auto FileReader()() {
161     return .FileReader(Object_Getter__Handle(this._parent, "FileReader"));
162   }
163   auto WebSocket()(string url) {
164     return .WebSocket(Object_Call_string__Handle(this._parent, "WebSocket", url));
165   }
166   auto WebSocket()(string url, string protocols) {
167     return .WebSocket(Object_Call_string_string__Handle(this._parent, "WebSocket", url, protocols));
168   }
169   auto WebSocket()(string url, scope ref Sequence!(string) protocols) {
170     return .WebSocket(Serialize_Object_VarArgCall!Handle(this._parent, "WebSocket", "string;Handle", tuple(url, cast(Handle)protocols.handle)));
171   }
172   auto StructuredCloneTester()(bool serializable, bool deserializable) {
173     return .StructuredCloneTester(Serialize_Object_VarArgCall!Handle(this._parent, "StructuredCloneTester", "bool;bool", tuple(serializable, deserializable)));
174   }
175   auto PerformanceObserver()(PerformanceObserverCallback callback) {
176     return .PerformanceObserver(Worker_PerformanceObserver(this._parent, callback));
177   }
178   auto PromiseRejectionEvent()(string type, scope ref PromiseRejectionEventInit eventInitDict) {
179     return .PromiseRejectionEvent(Serialize_Object_VarArgCall!Handle(this._parent, "PromiseRejectionEvent", "string;Handle", tuple(type, cast(Handle)eventInitDict._parent)));
180   }
181   auto AbortController()() {
182     return .AbortController(Object_Getter__Handle(this._parent, "AbortController"));
183   }
184   auto MessageChannel()() {
185     return .MessageChannel(Object_Getter__Handle(this._parent, "MessageChannel"));
186   }
187   auto CustomEvent()(string type, scope ref CustomEventInit eventInitDict) {
188     return .CustomEvent(Serialize_Object_VarArgCall!Handle(this._parent, "CustomEvent", "string;Handle", tuple(type, cast(Handle)eventInitDict._parent)));
189   }
190   auto URLSearchParams()(scope ref SumType!(Sequence!(Sequence!(string)), Record!(string, string), string) init /* = "" */) {
191     return .URLSearchParams(Serialize_Object_VarArgCall!Handle(this._parent, "URLSearchParams", "SumType!(Handle,Handle,string)", tuple(libwasm.sumtype.match!(((ref init.Types[0] v) => 0),((ref init.Types[1] v) => 1),((string v) => 2))(init),tuple(libwasm.sumtype.match!(((ref init.Types[0] v) => cast(Handle)v.handle),((ref init.Types[1] v) => Handle.init),((string v) => Handle.init))(init),libwasm.sumtype.match!(((ref init.Types[0] v) => Handle.init),((ref init.Types[1] v) => cast(Handle)v.handle),((string v) => Handle.init))(init),libwasm.sumtype.match!(((ref init.Types[0] v) => string.init),((ref init.Types[1] v) => string.init),((string v) => v))(init)))));
192   }
193   auto ImageData()(uint sw, uint sh) {
194     return .ImageData(Serialize_Object_VarArgCall!Handle(this._parent, "ImageData", "uint;uint", tuple(sw, sh)));
195   }
196   auto ImageData()(scope ref Uint8ClampedArray data, uint sw, uint sh) {
197     return .ImageData(Serialize_Object_VarArgCall!Handle(this._parent, "ImageData", "Handle;uint;uint", tuple(cast(Handle)data.handle, sw, sh)));
198   }
199   auto FormData()(scope ref HTMLFormElement form) {
200     return .FormData(Object_Call_Handle__Handle(this._parent, "FormData", form._parent));
201   }
202   auto DOMException()(string message /* = "" */, string name) {
203     return .DOMException(Object_Call_string_string__Handle(this._parent, "DOMException", message, name));
204   }
205   auto Request()(scope ref RequestInfo input, scope ref RequestInit init) {
206     return .Request(Serialize_Object_VarArgCall!Handle(this._parent, "Request", "SumType!(Handle,string);Handle", tuple(libwasm.sumtype.match!(((ref input.Types[0] v) => 0),((string v) => 1))(input),tuple(libwasm.sumtype.match!(((ref input.Types[0] v) => cast(Handle)v.handle),((string v) => Handle.init))(input),libwasm.sumtype.match!(((ref input.Types[0] v) => string.init),((string v) => v))(input)), cast(Handle)init.handle)));
207   }
208   auto OffscreenCanvas()(uint width, uint height) {
209     return .OffscreenCanvas(Serialize_Object_VarArgCall!Handle(this._parent, "OffscreenCanvas", "uint;uint", tuple(width, height)));
210   }
211 }
212 struct WorkerOptions {
213   nothrow:
214   JsHandle handle;
215   alias handle this;
216   this(Handle h) {
217     this.handle = JsHandle(h);
218   }
219   static auto create() {
220     return WorkerOptions(libwasm_add__object());
221   }
222   void name()(string name) {
223     Object_Call_string__void(this.handle, "name", name);
224   }
225   string name()() {
226     return Object_Getter__string(this.handle, "name");
227   }
228 }
229 
230 
231 extern (C) Handle Worker_PerformanceObserver(Handle, PerformanceObserverCallback);