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);