Skip to content

Commit 1a3a539

Browse files
authored
Add websockets IDL spec and generated code (#27)
1 parent e044e24 commit 1a3a539

File tree

2 files changed

+145
-0
lines changed

2 files changed

+145
-0
lines changed

Sources/DOMKit/Generated.swift

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,24 @@ public class BeforeUnloadEvent: Event {
760760
// XXX: member 'returnValue' is ignored
761761
}
762762

763+
public enum BinaryType: JSString, JSValueCompatible {
764+
case blob = "blob"
765+
case arraybuffer = "arraybuffer"
766+
767+
@inlinable public static func construct(from jsValue: JSValue) -> Self? {
768+
if let string = jsValue.jsString {
769+
return Self(rawValue: string)
770+
}
771+
return nil
772+
}
773+
774+
@inlinable public init?(string: String) {
775+
self.init(rawValue: JSString(string))
776+
}
777+
778+
@inlinable public var jsValue: JSValue { rawValue.jsValue }
779+
}
780+
763781
public class Blob: JSBridgedClass {
764782
@inlinable public class var constructor: JSFunction { JSObject.global[Strings.Blob].function! }
765783

@@ -2184,6 +2202,56 @@ public enum ClientType: JSString, JSValueCompatible {
21842202
@inlinable public var jsValue: JSValue { rawValue.jsValue }
21852203
}
21862204

2205+
public class CloseEvent: Event {
2206+
@inlinable override public class var constructor: JSFunction { JSObject.global[Strings.CloseEvent].function! }
2207+
2208+
public required init(unsafelyWrapping jsObject: JSObject) {
2209+
_wasClean = ReadonlyAttribute(jsObject: jsObject, name: Strings.wasClean)
2210+
_code = ReadonlyAttribute(jsObject: jsObject, name: Strings.code)
2211+
_reason = ReadonlyAttribute(jsObject: jsObject, name: Strings.reason)
2212+
super.init(unsafelyWrapping: jsObject)
2213+
}
2214+
2215+
@inlinable public convenience init(type: String, eventInitDict: CloseEventInit? = nil) {
2216+
self.init(unsafelyWrapping: Self.constructor.new(arguments: [type.jsValue, eventInitDict?.jsValue ?? .undefined]))
2217+
}
2218+
2219+
@ReadonlyAttribute
2220+
public var wasClean: Bool
2221+
2222+
@ReadonlyAttribute
2223+
public var code: UInt16
2224+
2225+
@ReadonlyAttribute
2226+
public var reason: String
2227+
}
2228+
2229+
public class CloseEventInit: BridgedDictionary {
2230+
public convenience init(wasClean: Bool, code: UInt16, reason: String) {
2231+
let object = JSObject.global[Strings.Object].function!.new()
2232+
object[Strings.wasClean] = wasClean.jsValue
2233+
object[Strings.code] = code.jsValue
2234+
object[Strings.reason] = reason.jsValue
2235+
self.init(unsafelyWrapping: object)
2236+
}
2237+
2238+
public required init(unsafelyWrapping object: JSObject) {
2239+
_wasClean = ReadWriteAttribute(jsObject: object, name: Strings.wasClean)
2240+
_code = ReadWriteAttribute(jsObject: object, name: Strings.code)
2241+
_reason = ReadWriteAttribute(jsObject: object, name: Strings.reason)
2242+
super.init(unsafelyWrapping: object)
2243+
}
2244+
2245+
@ReadWriteAttribute
2246+
public var wasClean: Bool
2247+
2248+
@ReadWriteAttribute
2249+
public var code: UInt16
2250+
2251+
@ReadWriteAttribute
2252+
public var reason: String
2253+
}
2254+
21872255
public enum ColorSpaceConversion: JSString, JSValueCompatible {
21882256
case none = "none"
21892257
case `default` = "default"
@@ -14183,6 +14251,76 @@ public class VideoTrackList: EventTarget {
1418314251
public var onremovetrack: EventHandler
1418414252
}
1418514253

14254+
public class WebSocket: EventTarget {
14255+
@inlinable override public class var constructor: JSFunction { JSObject.global[Strings.WebSocket].function! }
14256+
14257+
public required init(unsafelyWrapping jsObject: JSObject) {
14258+
_url = ReadonlyAttribute(jsObject: jsObject, name: Strings.url)
14259+
_readyState = ReadonlyAttribute(jsObject: jsObject, name: Strings.readyState)
14260+
_bufferedAmount = ReadonlyAttribute(jsObject: jsObject, name: Strings.bufferedAmount)
14261+
_onopen = ClosureAttribute1Optional(jsObject: jsObject, name: Strings.onopen)
14262+
_onerror = ClosureAttribute1Optional(jsObject: jsObject, name: Strings.onerror)
14263+
_onclose = ClosureAttribute1Optional(jsObject: jsObject, name: Strings.onclose)
14264+
_extensions = ReadonlyAttribute(jsObject: jsObject, name: Strings.extensions)
14265+
_protocol = ReadonlyAttribute(jsObject: jsObject, name: Strings.protocol)
14266+
_onmessage = ClosureAttribute1Optional(jsObject: jsObject, name: Strings.onmessage)
14267+
_binaryType = ReadWriteAttribute(jsObject: jsObject, name: Strings.binaryType)
14268+
super.init(unsafelyWrapping: jsObject)
14269+
}
14270+
14271+
@inlinable public convenience init(url: String, protocols: String_or_seq_of_String? = nil) {
14272+
self.init(unsafelyWrapping: Self.constructor.new(arguments: [url.jsValue, protocols?.jsValue ?? .undefined]))
14273+
}
14274+
14275+
@ReadonlyAttribute
14276+
public var url: String
14277+
14278+
public static let CONNECTING: UInt16 = 0
14279+
14280+
public static let OPEN: UInt16 = 1
14281+
14282+
public static let CLOSING: UInt16 = 2
14283+
14284+
public static let CLOSED: UInt16 = 3
14285+
14286+
@ReadonlyAttribute
14287+
public var readyState: UInt16
14288+
14289+
@ReadonlyAttribute
14290+
public var bufferedAmount: UInt64
14291+
14292+
@ClosureAttribute1Optional
14293+
public var onopen: EventHandler
14294+
14295+
@ClosureAttribute1Optional
14296+
public var onerror: EventHandler
14297+
14298+
@ClosureAttribute1Optional
14299+
public var onclose: EventHandler
14300+
14301+
@ReadonlyAttribute
14302+
public var extensions: String
14303+
14304+
@ReadonlyAttribute
14305+
public var `protocol`: String
14306+
14307+
@inlinable public func close(code: UInt16? = nil, reason: String? = nil) {
14308+
let this = jsObject
14309+
_ = this[Strings.close].function!(this: this, arguments: [code?.jsValue ?? .undefined, reason?.jsValue ?? .undefined])
14310+
}
14311+
14312+
@ClosureAttribute1Optional
14313+
public var onmessage: EventHandler
14314+
14315+
@ReadWriteAttribute
14316+
public var binaryType: BinaryType
14317+
14318+
@inlinable public func send(data: BlobPart) {
14319+
let this = jsObject
14320+
_ = this[Strings.send].function!(this: this, arguments: [data.jsValue])
14321+
}
14322+
}
14323+
1418614324
public class WheelEvent: MouseEvent {
1418714325
@inlinable override public class var constructor: JSFunction { JSObject.global[Strings.WheelEvent].function! }
1418814326

@@ -15930,6 +16068,7 @@ public enum console {
1593016068
@usableFromInline static let CanvasRenderingContext2D: JSString = "CanvasRenderingContext2D"
1593116069
@usableFromInline static let CaretPosition: JSString = "CaretPosition"
1593216070
@usableFromInline static let CharacterData: JSString = "CharacterData"
16071+
@usableFromInline static let CloseEvent: JSString = "CloseEvent"
1593316072
@usableFromInline static let Comment: JSString = "Comment"
1593416073
@usableFromInline static let CompositionEvent: JSString = "CompositionEvent"
1593516074
@usableFromInline static let CountQueuingStrategy: JSString = "CountQueuingStrategy"
@@ -16123,6 +16262,7 @@ public enum console {
1612316262
@usableFromInline static let ValidityState: JSString = "ValidityState"
1612416263
@usableFromInline static let VideoTrack: JSString = "VideoTrack"
1612516264
@usableFromInline static let VideoTrackList: JSString = "VideoTrackList"
16265+
@usableFromInline static let WebSocket: JSString = "WebSocket"
1612616266
@usableFromInline static let WheelEvent: JSString = "WheelEvent"
1612716267
@usableFromInline static let Window: JSString = "Window"
1612816268
@usableFromInline static let Worker: JSString = "Worker"
@@ -16266,6 +16406,7 @@ public enum console {
1626616406
@usableFromInline static let behavior: JSString = "behavior"
1626716407
@usableFromInline static let bezierCurveTo: JSString = "bezierCurveTo"
1626816408
@usableFromInline static let bgColor: JSString = "bgColor"
16409+
@usableFromInline static let binaryType: JSString = "binaryType"
1626916410
@usableFromInline static let blob: JSString = "blob"
1627016411
@usableFromInline static let block: JSString = "block"
1627116412
@usableFromInline static let blocking: JSString = "blocking"
@@ -16279,6 +16420,7 @@ public enum console {
1627916420
@usableFromInline static let btoa: JSString = "btoa"
1628016421
@usableFromInline static let bubbles: JSString = "bubbles"
1628116422
@usableFromInline static let buffered: JSString = "buffered"
16423+
@usableFromInline static let bufferedAmount: JSString = "bufferedAmount"
1628216424
@usableFromInline static let button: JSString = "button"
1628316425
@usableFromInline static let buttons: JSString = "buttons"
1628416426
@usableFromInline static let byobRequest: JSString = "byobRequest"
@@ -16516,6 +16658,7 @@ public enum console {
1651616658
@usableFromInline static let eventPhase: JSString = "eventPhase"
1651716659
@usableFromInline static let execCommand: JSString = "execCommand"
1651816660
@usableFromInline static let extends: JSString = "extends"
16661+
@usableFromInline static let extensions: JSString = "extensions"
1651916662
@usableFromInline static let external: JSString = "external"
1652016663
@usableFromInline static let extractContents: JSString = "extractContents"
1652116664
@usableFromInline static let f: JSString = "f"
@@ -17382,6 +17525,7 @@ public enum console {
1738217525
@usableFromInline static let w: JSString = "w"
1738317526
@usableFromInline static let waiting: JSString = "waiting"
1738417527
@usableFromInline static let warn: JSString = "warn"
17528+
@usableFromInline static let wasClean: JSString = "wasClean"
1738517529
@usableFromInline static let webkitMatchesSelector: JSString = "webkitMatchesSelector"
1738617530
@usableFromInline static let whatToShow: JSString = "whatToShow"
1738717531
@usableFromInline static let whenDefined: JSString = "whenDefined"

parse-idl/parse-all.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ console.log(
2323
"url",
2424
"streams",
2525
"console",
26+
"websockets",
2627
"css-pseudo",
2728
"cssom-view",
2829
].map((key) => parsedFiles[key]),

0 commit comments

Comments
 (0)