From 22ee807156d86d92068071966ef5a57ea31a8224 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 3 May 2022 11:25:10 +0100 Subject: [PATCH] Add `websockets` IDL spec and generated code --- Sources/DOMKit/Generated.swift | 144 +++++++++++++++++++++++++++++++++ parse-idl/parse-all.js | 1 + 2 files changed, 145 insertions(+) diff --git a/Sources/DOMKit/Generated.swift b/Sources/DOMKit/Generated.swift index f2a075f0..192cdd99 100644 --- a/Sources/DOMKit/Generated.swift +++ b/Sources/DOMKit/Generated.swift @@ -760,6 +760,24 @@ public class BeforeUnloadEvent: Event { // XXX: member 'returnValue' is ignored } +public enum BinaryType: JSString, JSValueCompatible { + case blob = "blob" + case arraybuffer = "arraybuffer" + + @inlinable public static func construct(from jsValue: JSValue) -> Self? { + if let string = jsValue.jsString { + return Self(rawValue: string) + } + return nil + } + + @inlinable public init?(string: String) { + self.init(rawValue: JSString(string)) + } + + @inlinable public var jsValue: JSValue { rawValue.jsValue } +} + public class Blob: JSBridgedClass { @inlinable public class var constructor: JSFunction { JSObject.global[Strings.Blob].function! } @@ -2095,6 +2113,56 @@ public enum ClientType: JSString, JSValueCompatible { @inlinable public var jsValue: JSValue { rawValue.jsValue } } +public class CloseEvent: Event { + @inlinable override public class var constructor: JSFunction { JSObject.global[Strings.CloseEvent].function! } + + public required init(unsafelyWrapping jsObject: JSObject) { + _wasClean = ReadonlyAttribute(jsObject: jsObject, name: Strings.wasClean) + _code = ReadonlyAttribute(jsObject: jsObject, name: Strings.code) + _reason = ReadonlyAttribute(jsObject: jsObject, name: Strings.reason) + super.init(unsafelyWrapping: jsObject) + } + + @inlinable public convenience init(type: String, eventInitDict: CloseEventInit? = nil) { + self.init(unsafelyWrapping: Self.constructor.new(arguments: [type.jsValue, eventInitDict?.jsValue ?? .undefined])) + } + + @ReadonlyAttribute + public var wasClean: Bool + + @ReadonlyAttribute + public var code: UInt16 + + @ReadonlyAttribute + public var reason: String +} + +public class CloseEventInit: BridgedDictionary { + public convenience init(wasClean: Bool, code: UInt16, reason: String) { + let object = JSObject.global[Strings.Object].function!.new() + object[Strings.wasClean] = wasClean.jsValue + object[Strings.code] = code.jsValue + object[Strings.reason] = reason.jsValue + self.init(unsafelyWrapping: object) + } + + public required init(unsafelyWrapping object: JSObject) { + _wasClean = ReadWriteAttribute(jsObject: object, name: Strings.wasClean) + _code = ReadWriteAttribute(jsObject: object, name: Strings.code) + _reason = ReadWriteAttribute(jsObject: object, name: Strings.reason) + super.init(unsafelyWrapping: object) + } + + @ReadWriteAttribute + public var wasClean: Bool + + @ReadWriteAttribute + public var code: UInt16 + + @ReadWriteAttribute + public var reason: String +} + public enum ColorSpaceConversion: JSString, JSValueCompatible { case none = "none" case `default` = "default" @@ -13675,6 +13743,76 @@ public class VideoTrackList: EventTarget { public var onremovetrack: EventHandler } +public class WebSocket: EventTarget { + @inlinable override public class var constructor: JSFunction { JSObject.global[Strings.WebSocket].function! } + + public required init(unsafelyWrapping jsObject: JSObject) { + _url = ReadonlyAttribute(jsObject: jsObject, name: Strings.url) + _readyState = ReadonlyAttribute(jsObject: jsObject, name: Strings.readyState) + _bufferedAmount = ReadonlyAttribute(jsObject: jsObject, name: Strings.bufferedAmount) + _onopen = ClosureAttribute1Optional(jsObject: jsObject, name: Strings.onopen) + _onerror = ClosureAttribute1Optional(jsObject: jsObject, name: Strings.onerror) + _onclose = ClosureAttribute1Optional(jsObject: jsObject, name: Strings.onclose) + _extensions = ReadonlyAttribute(jsObject: jsObject, name: Strings.extensions) + _protocol = ReadonlyAttribute(jsObject: jsObject, name: Strings.protocol) + _onmessage = ClosureAttribute1Optional(jsObject: jsObject, name: Strings.onmessage) + _binaryType = ReadWriteAttribute(jsObject: jsObject, name: Strings.binaryType) + super.init(unsafelyWrapping: jsObject) + } + + @inlinable public convenience init(url: String, protocols: String_or_seq_of_String? = nil) { + self.init(unsafelyWrapping: Self.constructor.new(arguments: [url.jsValue, protocols?.jsValue ?? .undefined])) + } + + @ReadonlyAttribute + public var url: String + + public static let CONNECTING: UInt16 = 0 + + public static let OPEN: UInt16 = 1 + + public static let CLOSING: UInt16 = 2 + + public static let CLOSED: UInt16 = 3 + + @ReadonlyAttribute + public var readyState: UInt16 + + @ReadonlyAttribute + public var bufferedAmount: UInt64 + + @ClosureAttribute1Optional + public var onopen: EventHandler + + @ClosureAttribute1Optional + public var onerror: EventHandler + + @ClosureAttribute1Optional + public var onclose: EventHandler + + @ReadonlyAttribute + public var extensions: String + + @ReadonlyAttribute + public var `protocol`: String + + @inlinable public func close(code: UInt16? = nil, reason: String? = nil) { + let this = jsObject + _ = this[Strings.close].function!(this: this, arguments: [code?.jsValue ?? .undefined, reason?.jsValue ?? .undefined]) + } + + @ClosureAttribute1Optional + public var onmessage: EventHandler + + @ReadWriteAttribute + public var binaryType: BinaryType + + @inlinable public func send(data: BlobPart) { + let this = jsObject + _ = this[Strings.send].function!(this: this, arguments: [data.jsValue]) + } +} + public class WheelEvent: MouseEvent { @inlinable override public class var constructor: JSFunction { JSObject.global[Strings.WheelEvent].function! } @@ -15309,6 +15447,7 @@ public enum console { @usableFromInline static let CanvasPattern: JSString = "CanvasPattern" @usableFromInline static let CanvasRenderingContext2D: JSString = "CanvasRenderingContext2D" @usableFromInline static let CharacterData: JSString = "CharacterData" + @usableFromInline static let CloseEvent: JSString = "CloseEvent" @usableFromInline static let Comment: JSString = "Comment" @usableFromInline static let CompositionEvent: JSString = "CompositionEvent" @usableFromInline static let CountQueuingStrategy: JSString = "CountQueuingStrategy" @@ -15499,6 +15638,7 @@ public enum console { @usableFromInline static let ValidityState: JSString = "ValidityState" @usableFromInline static let VideoTrack: JSString = "VideoTrack" @usableFromInline static let VideoTrackList: JSString = "VideoTrackList" + @usableFromInline static let WebSocket: JSString = "WebSocket" @usableFromInline static let WheelEvent: JSString = "WheelEvent" @usableFromInline static let Window: JSString = "Window" @usableFromInline static let Worker: JSString = "Worker" @@ -15640,6 +15780,7 @@ public enum console { @usableFromInline static let behavior: JSString = "behavior" @usableFromInline static let bezierCurveTo: JSString = "bezierCurveTo" @usableFromInline static let bgColor: JSString = "bgColor" + @usableFromInline static let binaryType: JSString = "binaryType" @usableFromInline static let blob: JSString = "blob" @usableFromInline static let blocking: JSString = "blocking" @usableFromInline static let blur: JSString = "blur" @@ -15651,6 +15792,7 @@ public enum console { @usableFromInline static let btoa: JSString = "btoa" @usableFromInline static let bubbles: JSString = "bubbles" @usableFromInline static let buffered: JSString = "buffered" + @usableFromInline static let bufferedAmount: JSString = "bufferedAmount" @usableFromInline static let button: JSString = "button" @usableFromInline static let buttons: JSString = "buttons" @usableFromInline static let byobRequest: JSString = "byobRequest" @@ -15875,6 +16017,7 @@ public enum console { @usableFromInline static let eventPhase: JSString = "eventPhase" @usableFromInline static let execCommand: JSString = "execCommand" @usableFromInline static let extends: JSString = "extends" + @usableFromInline static let extensions: JSString = "extensions" @usableFromInline static let external: JSString = "external" @usableFromInline static let extractContents: JSString = "extractContents" @usableFromInline static let f: JSString = "f" @@ -16696,6 +16839,7 @@ public enum console { @usableFromInline static let w: JSString = "w" @usableFromInline static let waiting: JSString = "waiting" @usableFromInline static let warn: JSString = "warn" + @usableFromInline static let wasClean: JSString = "wasClean" @usableFromInline static let webkitMatchesSelector: JSString = "webkitMatchesSelector" @usableFromInline static let whatToShow: JSString = "whatToShow" @usableFromInline static let whenDefined: JSString = "whenDefined" diff --git a/parse-idl/parse-all.js b/parse-idl/parse-all.js index a992f772..bc17cefa 100644 --- a/parse-idl/parse-all.js +++ b/parse-idl/parse-all.js @@ -23,6 +23,7 @@ console.log( "url", "streams", "console", + "websockets", ].map((key) => parsedFiles[key]), null, 2