IDL2K better dictionary support: generate interfaces with builder function

This commit is contained in:
Sergey Mashkov
2015-06-17 13:45:21 +03:00
parent c4d53e1e16
commit 8238883ac4
11 changed files with 886 additions and 179 deletions
@@ -20,15 +20,30 @@ import org.w3c.performance.*
import org.w3c.workers.* import org.w3c.workers.*
import org.w3c.xhr.* import org.w3c.xhr.*
native public open class WebGLContextAttributes { native public interface WebGLContextAttributes {
var alpha: Boolean = true var alpha: Boolean
var depth: Boolean = true var depth: Boolean
var stencil: Boolean = false var stencil: Boolean
var antialias: Boolean = true var antialias: Boolean
var premultipliedAlpha: Boolean = true var premultipliedAlpha: Boolean
var preserveDrawingBuffer: Boolean = false var preserveDrawingBuffer: Boolean
var preferLowPowerToHighPerformance: Boolean = false var preferLowPowerToHighPerformance: Boolean
var failIfMajorPerformanceCaveat: Boolean = false var failIfMajorPerformanceCaveat: Boolean
}
inline fun WebGLContextAttributes(alpha: Boolean = true, depth: Boolean = true, stencil: Boolean = false, antialias: Boolean = true, premultipliedAlpha: Boolean = true, preserveDrawingBuffer: Boolean = false, preferLowPowerToHighPerformance: Boolean = false, failIfMajorPerformanceCaveat: Boolean = false): WebGLContextAttributes {
val o = js("({})") as WebGLContextAttributes
o.`alpha` = alpha
o.`depth` = depth
o.`stencil` = stencil
o.`antialias` = antialias
o.`premultipliedAlpha` = premultipliedAlpha
o.`preserveDrawingBuffer` = preserveDrawingBuffer
o.`preferLowPowerToHighPerformance` = preferLowPowerToHighPerformance
o.`failIfMajorPerformanceCaveat` = failIfMajorPerformanceCaveat
return o
} }
native public interface WebGLObject { native public interface WebGLObject {
@@ -541,10 +556,20 @@ native public open class WebGLContextEvent(type: String, eventInit: WebGLContext
get() = noImpl get() = noImpl
} }
native public open class WebGLContextEventInit : EventInit() { native public interface WebGLContextEventInit : EventInit {
var statusMessage: String var statusMessage: String
} }
inline fun WebGLContextEventInit(statusMessage: String, bubbles: Boolean = false, cancelable: Boolean = false): WebGLContextEventInit {
val o = js("({})") as WebGLContextEventInit
o.`statusMessage` = statusMessage
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public open class ArrayBuffer(length: Int) : Transferable { native public open class ArrayBuffer(length: Int) : Transferable {
open val byteLength: Int open val byteLength: Int
get() = noImpl get() = noImpl
@@ -121,9 +121,20 @@ native public open class UIEvent(type: String, eventInitDict: UIEventInit = noIm
fun initUIEvent(typeArg: String, bubblesArg: Boolean, cancelableArg: Boolean, viewArg: Window?, detailArg: Int): Unit = noImpl fun initUIEvent(typeArg: String, bubblesArg: Boolean, cancelableArg: Boolean, viewArg: Window?, detailArg: Int): Unit = noImpl
} }
native public open class UIEventInit : EventInit() { native public interface UIEventInit : EventInit {
var view: Window? = null var view: Window?
var detail: Int = 0 var detail: Int
}
inline fun UIEventInit(view: Window? = null, detail: Int = 0, bubbles: Boolean = false, cancelable: Boolean = false): UIEventInit {
val o = js("({})") as UIEventInit
o.`view` = view
o.`detail` = detail
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
native public open class FocusEvent(typeArg: String, focusEventInitDict: FocusEventInit = noImpl) : UIEvent(noImpl, noImpl) { native public open class FocusEvent(typeArg: String, focusEventInitDict: FocusEventInit = noImpl) : UIEvent(noImpl, noImpl) {
@@ -132,36 +143,107 @@ native public open class FocusEvent(typeArg: String, focusEventInitDict: FocusEv
fun initFocusEvent(typeArg: String, bubblesArg: Boolean, cancelableArg: Boolean, viewArg: Window?, detailArg: Int, relatedTargetArg: EventTarget?): Unit = noImpl fun initFocusEvent(typeArg: String, bubblesArg: Boolean, cancelableArg: Boolean, viewArg: Window?, detailArg: Int, relatedTargetArg: EventTarget?): Unit = noImpl
} }
native public open class FocusEventInit : UIEventInit() { native public interface FocusEventInit : UIEventInit {
var relatedTarget: EventTarget? = null var relatedTarget: EventTarget?
} }
native public open class MouseEventInit : EventModifierInit() { inline fun FocusEventInit(relatedTarget: EventTarget? = null, view: Window? = null, detail: Int = 0, bubbles: Boolean = false, cancelable: Boolean = false): FocusEventInit {
var screenX: Int = 0 val o = js("({})") as FocusEventInit
var screenY: Int = 0
var clientX: Int = 0 o.`relatedTarget` = relatedTarget
var clientY: Int = 0 o.`view` = view
var button: Short = 0 o.`detail` = detail
var buttons: Short = 0 o.`bubbles` = bubbles
var relatedTarget: EventTarget? = null o.`cancelable` = cancelable
return o
} }
native public open class EventModifierInit : UIEventInit() { native public interface MouseEventInit : EventModifierInit {
var ctrlKey: Boolean = false var screenX: Int
var shiftKey: Boolean = false var screenY: Int
var altKey: Boolean = false var clientX: Int
var metaKey: Boolean = false var clientY: Int
var modifierAltGraph: Boolean = false var button: Short
var modifierCapsLock: Boolean = false var buttons: Short
var modifierFn: Boolean = false var relatedTarget: EventTarget?
var modifierFnLock: Boolean = false }
var modifierHyper: Boolean = false
var modifierNumLock: Boolean = false inline fun MouseEventInit(screenX: Int = 0, screenY: Int = 0, clientX: Int = 0, clientY: Int = 0, button: Short = 0, buttons: Short = 0, relatedTarget: EventTarget? = null, ctrlKey: Boolean = false, shiftKey: Boolean = false, altKey: Boolean = false, metaKey: Boolean = false, modifierAltGraph: Boolean = false, modifierCapsLock: Boolean = false, modifierFn: Boolean = false, modifierFnLock: Boolean = false, modifierHyper: Boolean = false, modifierNumLock: Boolean = false, modifierOS: Boolean = false, modifierScrollLock: Boolean = false, modifierSuper: Boolean = false, modifierSymbol: Boolean = false, modifierSymbolLock: Boolean = false, view: Window? = null, detail: Int = 0, bubbles: Boolean = false, cancelable: Boolean = false): MouseEventInit {
var modifierOS: Boolean = false val o = js("({})") as MouseEventInit
var modifierScrollLock: Boolean = false
var modifierSuper: Boolean = false o.`screenX` = screenX
var modifierSymbol: Boolean = false o.`screenY` = screenY
var modifierSymbolLock: Boolean = false o.`clientX` = clientX
o.`clientY` = clientY
o.`button` = button
o.`buttons` = buttons
o.`relatedTarget` = relatedTarget
o.`ctrlKey` = ctrlKey
o.`shiftKey` = shiftKey
o.`altKey` = altKey
o.`metaKey` = metaKey
o.`modifierAltGraph` = modifierAltGraph
o.`modifierCapsLock` = modifierCapsLock
o.`modifierFn` = modifierFn
o.`modifierFnLock` = modifierFnLock
o.`modifierHyper` = modifierHyper
o.`modifierNumLock` = modifierNumLock
o.`modifierOS` = modifierOS
o.`modifierScrollLock` = modifierScrollLock
o.`modifierSuper` = modifierSuper
o.`modifierSymbol` = modifierSymbol
o.`modifierSymbolLock` = modifierSymbolLock
o.`view` = view
o.`detail` = detail
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public interface EventModifierInit : UIEventInit {
var ctrlKey: Boolean
var shiftKey: Boolean
var altKey: Boolean
var metaKey: Boolean
var modifierAltGraph: Boolean
var modifierCapsLock: Boolean
var modifierFn: Boolean
var modifierFnLock: Boolean
var modifierHyper: Boolean
var modifierNumLock: Boolean
var modifierOS: Boolean
var modifierScrollLock: Boolean
var modifierSuper: Boolean
var modifierSymbol: Boolean
var modifierSymbolLock: Boolean
}
inline fun EventModifierInit(ctrlKey: Boolean = false, shiftKey: Boolean = false, altKey: Boolean = false, metaKey: Boolean = false, modifierAltGraph: Boolean = false, modifierCapsLock: Boolean = false, modifierFn: Boolean = false, modifierFnLock: Boolean = false, modifierHyper: Boolean = false, modifierNumLock: Boolean = false, modifierOS: Boolean = false, modifierScrollLock: Boolean = false, modifierSuper: Boolean = false, modifierSymbol: Boolean = false, modifierSymbolLock: Boolean = false, view: Window? = null, detail: Int = 0, bubbles: Boolean = false, cancelable: Boolean = false): EventModifierInit {
val o = js("({})") as EventModifierInit
o.`ctrlKey` = ctrlKey
o.`shiftKey` = shiftKey
o.`altKey` = altKey
o.`metaKey` = metaKey
o.`modifierAltGraph` = modifierAltGraph
o.`modifierCapsLock` = modifierCapsLock
o.`modifierFn` = modifierFn
o.`modifierFnLock` = modifierFnLock
o.`modifierHyper` = modifierHyper
o.`modifierNumLock` = modifierNumLock
o.`modifierOS` = modifierOS
o.`modifierScrollLock` = modifierScrollLock
o.`modifierSuper` = modifierSuper
o.`modifierSymbol` = modifierSymbol
o.`modifierSymbolLock` = modifierSymbolLock
o.`view` = view
o.`detail` = detail
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
native public open class WheelEvent(typeArg: String, wheelEventInitDict: WheelEventInit = noImpl) : MouseEvent(typeArg, noImpl) { native public open class WheelEvent(typeArg: String, wheelEventInitDict: WheelEventInit = noImpl) : MouseEvent(typeArg, noImpl) {
@@ -182,11 +264,48 @@ native public open class WheelEvent(typeArg: String, wheelEventInitDict: WheelEv
} }
} }
native public open class WheelEventInit : MouseEventInit() { native public interface WheelEventInit : MouseEventInit {
var deltaX: Double = 0.0 var deltaX: Double
var deltaY: Double = 0.0 var deltaY: Double
var deltaZ: Double = 0.0 var deltaZ: Double
var deltaMode: Int = 0 var deltaMode: Int
}
inline fun WheelEventInit(deltaX: Double = 0.0, deltaY: Double = 0.0, deltaZ: Double = 0.0, deltaMode: Int = 0, screenX: Int = 0, screenY: Int = 0, clientX: Int = 0, clientY: Int = 0, button: Short = 0, buttons: Short = 0, relatedTarget: EventTarget? = null, ctrlKey: Boolean = false, shiftKey: Boolean = false, altKey: Boolean = false, metaKey: Boolean = false, modifierAltGraph: Boolean = false, modifierCapsLock: Boolean = false, modifierFn: Boolean = false, modifierFnLock: Boolean = false, modifierHyper: Boolean = false, modifierNumLock: Boolean = false, modifierOS: Boolean = false, modifierScrollLock: Boolean = false, modifierSuper: Boolean = false, modifierSymbol: Boolean = false, modifierSymbolLock: Boolean = false, view: Window? = null, detail: Int = 0, bubbles: Boolean = false, cancelable: Boolean = false): WheelEventInit {
val o = js("({})") as WheelEventInit
o.`deltaX` = deltaX
o.`deltaY` = deltaY
o.`deltaZ` = deltaZ
o.`deltaMode` = deltaMode
o.`screenX` = screenX
o.`screenY` = screenY
o.`clientX` = clientX
o.`clientY` = clientY
o.`button` = button
o.`buttons` = buttons
o.`relatedTarget` = relatedTarget
o.`ctrlKey` = ctrlKey
o.`shiftKey` = shiftKey
o.`altKey` = altKey
o.`metaKey` = metaKey
o.`modifierAltGraph` = modifierAltGraph
o.`modifierCapsLock` = modifierCapsLock
o.`modifierFn` = modifierFn
o.`modifierFnLock` = modifierFnLock
o.`modifierHyper` = modifierHyper
o.`modifierNumLock` = modifierNumLock
o.`modifierOS` = modifierOS
o.`modifierScrollLock` = modifierScrollLock
o.`modifierSuper` = modifierSuper
o.`modifierSymbol` = modifierSymbol
o.`modifierSymbolLock` = modifierSymbolLock
o.`view` = view
o.`detail` = detail
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
native public open class KeyboardEvent(typeArg: String, keyboardEventInitDict: KeyboardEventInit = noImpl) : UIEvent(noImpl, noImpl) { native public open class KeyboardEvent(typeArg: String, keyboardEventInitDict: KeyboardEventInit = noImpl) : UIEvent(noImpl, noImpl) {
@@ -225,12 +344,43 @@ native public open class KeyboardEvent(typeArg: String, keyboardEventInitDict: K
} }
} }
native public open class KeyboardEventInit : EventModifierInit() { native public interface KeyboardEventInit : EventModifierInit {
var key: String = "" var key: String
var code: String = "" var code: String
var location: Int = 0 var location: Int
var repeat: Boolean = false var repeat: Boolean
var isComposing: Boolean = false var isComposing: Boolean
}
inline fun KeyboardEventInit(key: String = "", code: String = "", location: Int = 0, repeat: Boolean = false, isComposing: Boolean = false, ctrlKey: Boolean = false, shiftKey: Boolean = false, altKey: Boolean = false, metaKey: Boolean = false, modifierAltGraph: Boolean = false, modifierCapsLock: Boolean = false, modifierFn: Boolean = false, modifierFnLock: Boolean = false, modifierHyper: Boolean = false, modifierNumLock: Boolean = false, modifierOS: Boolean = false, modifierScrollLock: Boolean = false, modifierSuper: Boolean = false, modifierSymbol: Boolean = false, modifierSymbolLock: Boolean = false, view: Window? = null, detail: Int = 0, bubbles: Boolean = false, cancelable: Boolean = false): KeyboardEventInit {
val o = js("({})") as KeyboardEventInit
o.`key` = key
o.`code` = code
o.`location` = location
o.`repeat` = repeat
o.`isComposing` = isComposing
o.`ctrlKey` = ctrlKey
o.`shiftKey` = shiftKey
o.`altKey` = altKey
o.`metaKey` = metaKey
o.`modifierAltGraph` = modifierAltGraph
o.`modifierCapsLock` = modifierCapsLock
o.`modifierFn` = modifierFn
o.`modifierFnLock` = modifierFnLock
o.`modifierHyper` = modifierHyper
o.`modifierNumLock` = modifierNumLock
o.`modifierOS` = modifierOS
o.`modifierScrollLock` = modifierScrollLock
o.`modifierSuper` = modifierSuper
o.`modifierSymbol` = modifierSymbol
o.`modifierSymbolLock` = modifierSymbolLock
o.`view` = view
o.`detail` = detail
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
native public open class CompositionEvent(typeArg: String, compositionEventInitDict: CompositionEventInit = noImpl) : UIEvent(noImpl, noImpl) { native public open class CompositionEvent(typeArg: String, compositionEventInitDict: CompositionEventInit = noImpl) : UIEvent(noImpl, noImpl) {
@@ -239,8 +389,20 @@ native public open class CompositionEvent(typeArg: String, compositionEventInitD
fun initCompositionEvent(typeArg: String, bubblesArg: Boolean, cancelableArg: Boolean, viewArg: Window?, dataArg: String, locale: String): Unit = noImpl fun initCompositionEvent(typeArg: String, bubblesArg: Boolean, cancelableArg: Boolean, viewArg: Window?, dataArg: String, locale: String): Unit = noImpl
} }
native public open class CompositionEventInit : UIEventInit() { native public interface CompositionEventInit : UIEventInit {
var data: String = "" var data: String
}
inline fun CompositionEventInit(data: String = "", view: Window? = null, detail: Int = 0, bubbles: Boolean = false, cancelable: Boolean = false): CompositionEventInit {
val o = js("({})") as CompositionEventInit
o.`data` = data
o.`view` = view
o.`detail` = detail
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
native public open class MutationEvent : Event(noImpl, noImpl) { native public open class MutationEvent : Event(noImpl, noImpl) {
+354 -53
View File
@@ -1617,10 +1617,20 @@ native public open class TrackEvent(type: String, eventInitDict: TrackEventInit
get() = noImpl get() = noImpl
} }
native public open class TrackEventInit : EventInit() { native public interface TrackEventInit : EventInit {
var track: UnionAudioTrackOrTextTrackOrVideoTrack? var track: UnionAudioTrackOrTextTrackOrVideoTrack?
} }
inline fun TrackEventInit(track: UnionAudioTrackOrTextTrackOrVideoTrack?, bubbles: Boolean = false, cancelable: Boolean = false): TrackEventInit {
val o = js("({})") as TrackEventInit
o.`track` = track
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public interface HTMLMapElement : HTMLElement { native public interface HTMLMapElement : HTMLElement {
var name: String var name: String
get() = noImpl get() = noImpl
@@ -2453,10 +2463,20 @@ native public open class AutocompleteErrorEvent(type: String, eventInitDict: Aut
get() = noImpl get() = noImpl
} }
native public open class AutocompleteErrorEventInit : EventInit() { native public interface AutocompleteErrorEventInit : EventInit {
var reason: String var reason: String
} }
inline fun AutocompleteErrorEventInit(reason: String, bubbles: Boolean = false, cancelable: Boolean = false): AutocompleteErrorEventInit {
val o = js("({})") as AutocompleteErrorEventInit
o.`reason` = reason
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public interface ValidityState { native public interface ValidityState {
val valueMissing: Boolean val valueMissing: Boolean
get() = noImpl get() = noImpl
@@ -2531,10 +2551,20 @@ native public open class RelatedEvent(type: String, eventInitDict: RelatedEventI
get() = noImpl get() = noImpl
} }
native public open class RelatedEventInit : EventInit() { native public interface RelatedEventInit : EventInit {
var relatedTarget: EventTarget? var relatedTarget: EventTarget?
} }
inline fun RelatedEventInit(relatedTarget: EventTarget?, bubbles: Boolean = false, cancelable: Boolean = false): RelatedEventInit {
val o = js("({})") as RelatedEventInit
o.`relatedTarget` = relatedTarget
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public interface HTMLDialogElement : HTMLElement { native public interface HTMLDialogElement : HTMLElement {
var open: Boolean var open: Boolean
get() = noImpl get() = noImpl
@@ -2601,8 +2631,16 @@ native public interface CanvasProxy : Transferable {
fun setContext(context: RenderingContext): Unit = noImpl fun setContext(context: RenderingContext): Unit = noImpl
} }
native public open class CanvasRenderingContext2DSettings { native public interface CanvasRenderingContext2DSettings {
var alpha: Boolean = true var alpha: Boolean
}
inline fun CanvasRenderingContext2DSettings(alpha: Boolean = true): CanvasRenderingContext2DSettings {
val o = js("({})") as CanvasRenderingContext2DSettings
o.`alpha` = alpha
return o
} }
native public open class CanvasRenderingContext2D() : RenderingContext, CanvasImageSource, ImageBitmapSource { native public open class CanvasRenderingContext2D() : RenderingContext, CanvasImageSource, ImageBitmapSource {
@@ -2766,15 +2804,30 @@ native public interface TextMetrics {
get() = noImpl get() = noImpl
} }
native public open class HitRegionOptions { native public interface HitRegionOptions {
var path: Path2D? = null var path: Path2D?
var fillRule: String = "nonzero" var fillRule: String
var id: String = "" var id: String
var parentID: String? = null var parentID: String?
var cursor: String = "inherit" var cursor: String
var control: Element? = null var control: Element?
var label: String? = null var label: String?
var role: String? = null var role: String?
}
inline fun HitRegionOptions(path: Path2D? = null, fillRule: String = "nonzero", id: String = "", parentID: String? = null, cursor: String = "inherit", control: Element? = null, label: String? = null, role: String? = null): HitRegionOptions {
val o = js("({})") as HitRegionOptions
o.`path` = path
o.`fillRule` = fillRule
o.`id` = id
o.`parentID` = parentID
o.`cursor` = cursor
o.`control` = control
o.`label` = label
o.`role` = role
return o
} }
native public open class ImageData : ImageBitmapSource { native public open class ImageData : ImageBitmapSource {
@@ -2890,10 +2943,44 @@ native public open class DragEvent(type: String, eventInitDict: DragEventInit =
get() = noImpl get() = noImpl
} }
native public open class DragEventInit : MouseEventInit() { native public interface DragEventInit : MouseEventInit {
var dataTransfer: DataTransfer? var dataTransfer: DataTransfer?
} }
inline fun DragEventInit(dataTransfer: DataTransfer?, screenX: Int = 0, screenY: Int = 0, clientX: Int = 0, clientY: Int = 0, button: Short = 0, buttons: Short = 0, relatedTarget: EventTarget? = null, ctrlKey: Boolean = false, shiftKey: Boolean = false, altKey: Boolean = false, metaKey: Boolean = false, modifierAltGraph: Boolean = false, modifierCapsLock: Boolean = false, modifierFn: Boolean = false, modifierFnLock: Boolean = false, modifierHyper: Boolean = false, modifierNumLock: Boolean = false, modifierOS: Boolean = false, modifierScrollLock: Boolean = false, modifierSuper: Boolean = false, modifierSymbol: Boolean = false, modifierSymbolLock: Boolean = false, view: Window? = null, detail: Int = 0, bubbles: Boolean = false, cancelable: Boolean = false): DragEventInit {
val o = js("({})") as DragEventInit
o.`dataTransfer` = dataTransfer
o.`screenX` = screenX
o.`screenY` = screenY
o.`clientX` = clientX
o.`clientY` = clientY
o.`button` = button
o.`buttons` = buttons
o.`relatedTarget` = relatedTarget
o.`ctrlKey` = ctrlKey
o.`shiftKey` = shiftKey
o.`altKey` = altKey
o.`metaKey` = metaKey
o.`modifierAltGraph` = modifierAltGraph
o.`modifierCapsLock` = modifierCapsLock
o.`modifierFn` = modifierFn
o.`modifierFnLock` = modifierFnLock
o.`modifierHyper` = modifierHyper
o.`modifierNumLock` = modifierNumLock
o.`modifierOS` = modifierOS
o.`modifierScrollLock` = modifierScrollLock
o.`modifierSuper` = modifierSuper
o.`modifierSymbol` = modifierSymbol
o.`modifierSymbolLock` = modifierSymbolLock
o.`view` = view
o.`detail` = detail
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public interface Window : EventTarget, UnionMessagePortOrWindow { native public interface Window : EventTarget, UnionMessagePortOrWindow {
val caches: CacheStorage val caches: CacheStorage
get() = noImpl get() = noImpl
@@ -3311,10 +3398,20 @@ native public open class PopStateEvent(type: String, eventInitDict: PopStateEven
get() = noImpl get() = noImpl
} }
native public open class PopStateEventInit : EventInit() { native public interface PopStateEventInit : EventInit {
var state: Any? var state: Any?
} }
inline fun PopStateEventInit(state: Any?, bubbles: Boolean = false, cancelable: Boolean = false): PopStateEventInit {
val o = js("({})") as PopStateEventInit
o.`state` = state
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public open class HashChangeEvent(type: String, eventInitDict: HashChangeEventInit = noImpl) : Event(type, eventInitDict) { native public open class HashChangeEvent(type: String, eventInitDict: HashChangeEventInit = noImpl) : Event(type, eventInitDict) {
open val oldURL: String open val oldURL: String
get() = noImpl get() = noImpl
@@ -3322,20 +3419,41 @@ native public open class HashChangeEvent(type: String, eventInitDict: HashChange
get() = noImpl get() = noImpl
} }
native public open class HashChangeEventInit : EventInit() { native public interface HashChangeEventInit : EventInit {
var oldURL: String var oldURL: String
var newURL: String var newURL: String
} }
inline fun HashChangeEventInit(oldURL: String, newURL: String, bubbles: Boolean = false, cancelable: Boolean = false): HashChangeEventInit {
val o = js("({})") as HashChangeEventInit
o.`oldURL` = oldURL
o.`newURL` = newURL
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public open class PageTransitionEvent(type: String, eventInitDict: PageTransitionEventInit = noImpl) : Event(type, eventInitDict) { native public open class PageTransitionEvent(type: String, eventInitDict: PageTransitionEventInit = noImpl) : Event(type, eventInitDict) {
open val persisted: Boolean open val persisted: Boolean
get() = noImpl get() = noImpl
} }
native public open class PageTransitionEventInit : EventInit() { native public interface PageTransitionEventInit : EventInit {
var persisted: Boolean var persisted: Boolean
} }
inline fun PageTransitionEventInit(persisted: Boolean, bubbles: Boolean = false, cancelable: Boolean = false): PageTransitionEventInit {
val o = js("({})") as PageTransitionEventInit
o.`persisted` = persisted
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public open class BeforeUnloadEvent : Event(noImpl, noImpl) { native public open class BeforeUnloadEvent : Event(noImpl, noImpl) {
var returnValue: String var returnValue: String
get() = noImpl get() = noImpl
@@ -3396,7 +3514,7 @@ native public open class ErrorEvent(type: String, eventInitDict: ErrorEventInit
get() = noImpl get() = noImpl
} }
native public open class ErrorEventInit : EventInit() { native public interface ErrorEventInit : EventInit {
var message: String var message: String
var filename: String var filename: String
var lineno: Int var lineno: Int
@@ -3404,6 +3522,20 @@ native public open class ErrorEventInit : EventInit() {
var error: Any? var error: Any?
} }
inline fun ErrorEventInit(message: String, filename: String, lineno: Int, colno: Int, error: Any?, bubbles: Boolean = false, cancelable: Boolean = false): ErrorEventInit {
val o = js("({})") as ErrorEventInit
o.`message` = message
o.`filename` = filename
o.`lineno` = lineno
o.`colno` = colno
o.`error` = error
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public interface Navigator { native public interface Navigator {
val serviceWorker: ServiceWorkerContainer val serviceWorker: ServiceWorkerContainer
get() = noImpl get() = noImpl
@@ -3517,7 +3649,7 @@ native public open class MessageEvent(type: String, eventInitDict: MessageEventI
fun initMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: Any?, originArg: String, lastEventIdArg: String, sourceArg: UnionMessagePortOrWindow, portsArg: Array<MessagePort>?): Unit = noImpl fun initMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: Any?, originArg: String, lastEventIdArg: String, sourceArg: UnionMessagePortOrWindow, portsArg: Array<MessagePort>?): Unit = noImpl
} }
native public open class MessageEventInit : EventInit() { native public interface MessageEventInit : EventInit {
var data: Any? var data: Any?
var origin: String var origin: String
var lastEventId: String var lastEventId: String
@@ -3525,6 +3657,20 @@ native public open class MessageEventInit : EventInit() {
var ports: Array<MessagePort> var ports: Array<MessagePort>
} }
inline fun MessageEventInit(data: Any?, origin: String, lastEventId: String, source: UnionMessagePortOrWindow?, ports: Array<MessagePort>, bubbles: Boolean = false, cancelable: Boolean = false): MessageEventInit {
val o = js("({})") as MessageEventInit
o.`data` = data
o.`origin` = origin
o.`lastEventId` = lastEventId
o.`source` = source
o.`ports` = ports
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public open class EventSource(url: String, eventSourceInitDict: EventSourceInit = noImpl) : EventTarget { native public open class EventSource(url: String, eventSourceInitDict: EventSourceInit = noImpl) : EventTarget {
open val url: String open val url: String
get() = noImpl get() = noImpl
@@ -3550,8 +3696,16 @@ native public open class EventSource(url: String, eventSourceInitDict: EventSour
} }
} }
native public open class EventSourceInit { native public interface EventSourceInit {
var withCredentials: Boolean = false var withCredentials: Boolean
}
inline fun EventSourceInit(withCredentials: Boolean = false): EventSourceInit {
val o = js("({})") as EventSourceInit
o.`withCredentials` = withCredentials
return o
} }
native public open class WebSocket(url: String, protocols: dynamic = noImpl) : EventTarget { native public open class WebSocket(url: String, protocols: dynamic = noImpl) : EventTarget {
@@ -3603,12 +3757,24 @@ native public open class CloseEvent(type: String, eventInitDict: CloseEventInit
get() = noImpl get() = noImpl
} }
native public open class CloseEventInit : EventInit() { native public interface CloseEventInit : EventInit {
var wasClean: Boolean var wasClean: Boolean
var code: Short var code: Short
var reason: String var reason: String
} }
inline fun CloseEventInit(wasClean: Boolean, code: Short, reason: String, bubbles: Boolean = false, cancelable: Boolean = false): CloseEventInit {
val o = js("({})") as CloseEventInit
o.`wasClean` = wasClean
o.`code` = code
o.`reason` = reason
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public open class MessageChannel { native public open class MessageChannel {
open val port1: MessagePort open val port1: MessagePort
get() = noImpl get() = noImpl
@@ -3787,7 +3953,7 @@ native public open class StorageEvent(type: String, eventInitDict: StorageEventI
get() = noImpl get() = noImpl
} }
native public open class StorageEventInit : EventInit() { native public interface StorageEventInit : EventInit {
var key: String? var key: String?
var oldValue: String? var oldValue: String?
var newValue: String? var newValue: String?
@@ -3795,6 +3961,20 @@ native public open class StorageEventInit : EventInit() {
var storageArea: Storage? var storageArea: Storage?
} }
inline fun StorageEventInit(key: String?, oldValue: String?, newValue: String?, url: String, storageArea: Storage?, bubbles: Boolean = false, cancelable: Boolean = false): StorageEventInit {
val o = js("({})") as StorageEventInit
o.`key` = key
o.`oldValue` = oldValue
o.`newValue` = newValue
o.`url` = url
o.`storageArea` = storageArea
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public interface HTMLAppletElement : HTMLElement { native public interface HTMLAppletElement : HTMLElement {
var align: String var align: String
get() = noImpl get() = noImpl
@@ -4041,9 +4221,18 @@ native public interface HTMLImageElement : HTMLElement, CanvasImageSource, Image
native public interface HTMLPictureElement : HTMLElement { native public interface HTMLPictureElement : HTMLElement {
} }
native public open class EventInit { native public interface EventInit {
var bubbles: Boolean = false var bubbles: Boolean
var cancelable: Boolean = false var cancelable: Boolean
}
inline fun EventInit(bubbles: Boolean = false, cancelable: Boolean = false): EventInit {
val o = js("({})") as EventInit
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
native public open class CustomEvent(type: String, eventInitDict: CustomEventInit = noImpl) : Event(type, eventInitDict) { native public open class CustomEvent(type: String, eventInitDict: CustomEventInit = noImpl) : Event(type, eventInitDict) {
@@ -4052,8 +4241,18 @@ native public open class CustomEvent(type: String, eventInitDict: CustomEventIni
fun initCustomEvent(type: String, bubbles: Boolean, cancelable: Boolean, detail: Any?): Unit = noImpl fun initCustomEvent(type: String, bubbles: Boolean, cancelable: Boolean, detail: Any?): Unit = noImpl
} }
native public open class CustomEventInit : EventInit() { native public interface CustomEventInit : EventInit {
var detail: Any? = null var detail: Any?
}
inline fun CustomEventInit(detail: Any? = null, bubbles: Boolean = false, cancelable: Boolean = false): CustomEventInit {
val o = js("({})") as CustomEventInit
o.`detail` = detail
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
native public interface NodeList { native public interface NodeList {
@@ -4078,16 +4277,30 @@ native public open class MutationObserver(callback: (Array<MutationRecord>, Muta
fun takeRecords(): Array<MutationRecord> = noImpl fun takeRecords(): Array<MutationRecord> = noImpl
} }
native public open class MutationObserverInit { native public interface MutationObserverInit {
var childList: Boolean = false var childList: Boolean
var attributes: Boolean var attributes: Boolean
var characterData: Boolean var characterData: Boolean
var subtree: Boolean = false var subtree: Boolean
var attributeOldValue: Boolean var attributeOldValue: Boolean
var characterDataOldValue: Boolean var characterDataOldValue: Boolean
var attributeFilter: Array<String> var attributeFilter: Array<String>
} }
inline fun MutationObserverInit(childList: Boolean = false, attributes: Boolean, characterData: Boolean, subtree: Boolean = false, attributeOldValue: Boolean, characterDataOldValue: Boolean, attributeFilter: Array<String>): MutationObserverInit {
val o = js("({})") as MutationObserverInit
o.`childList` = childList
o.`attributes` = attributes
o.`characterData` = characterData
o.`subtree` = subtree
o.`attributeOldValue` = attributeOldValue
o.`characterDataOldValue` = characterDataOldValue
o.`attributeFilter` = attributeFilter
return o
}
native public interface MutationRecord { native public interface MutationRecord {
val type: String val type: String
get() = noImpl get() = noImpl
@@ -4548,11 +4761,22 @@ native public open class EditingBeforeInputEvent(type: String, eventInitDict: Ed
get() = noImpl get() = noImpl
} }
native public open class EditingBeforeInputEventInit : EventInit() { native public interface EditingBeforeInputEventInit : EventInit {
var command: String var command: String
var value: String var value: String
} }
inline fun EditingBeforeInputEventInit(command: String, value: String, bubbles: Boolean = false, cancelable: Boolean = false): EditingBeforeInputEventInit {
val o = js("({})") as EditingBeforeInputEventInit
o.`command` = command
o.`value` = value
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public open class EditingInputEvent(type: String, eventInitDict: EditingInputEventInit = noImpl) : Event(type, eventInitDict) { native public open class EditingInputEvent(type: String, eventInitDict: EditingInputEventInit = noImpl) : Event(type, eventInitDict) {
open val command: String open val command: String
get() = noImpl get() = noImpl
@@ -4560,11 +4784,22 @@ native public open class EditingInputEvent(type: String, eventInitDict: EditingI
get() = noImpl get() = noImpl
} }
native public open class EditingInputEventInit : EventInit() { native public interface EditingInputEventInit : EventInit {
var command: String var command: String
var value: String var value: String
} }
inline fun EditingInputEventInit(command: String, value: String, bubbles: Boolean = false, cancelable: Boolean = false): EditingInputEventInit {
val o = js("({})") as EditingInputEventInit
o.`command` = command
o.`value` = value
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public open class DOMPointReadOnly(x: Double, y: Double, z: Double, w: Double) { native public open class DOMPointReadOnly(x: Double, y: Double, z: Double, w: Double) {
open val x: Double open val x: Double
get() = noImpl get() = noImpl
@@ -4594,11 +4829,22 @@ native public open class DOMPoint : DOMPointReadOnly {
set(value) = noImpl set(value) = noImpl
} }
native public open class DOMPointInit { native public interface DOMPointInit {
var x: Double = 0.0 var x: Double
var y: Double = 0.0 var y: Double
var z: Double = 0.0 var z: Double
var w: Double = 1.0 var w: Double
}
inline fun DOMPointInit(x: Double = 0.0, y: Double = 0.0, z: Double = 0.0, w: Double = 1.0): DOMPointInit {
val o = js("({})") as DOMPointInit
o.`x` = x
o.`y` = y
o.`z` = z
o.`w` = w
return o
} }
native public open class DOMRect(x: Double = 0.0, y: Double = 0.0, width: Double = 0.0, height: Double = 0.0) : DOMRectReadOnly(x, y, width, height) { native public open class DOMRect(x: Double = 0.0, y: Double = 0.0, width: Double = 0.0, height: Double = 0.0) : DOMRectReadOnly(x, y, width, height) {
@@ -4635,11 +4881,22 @@ native public open class DOMRectReadOnly(x: Double, y: Double, width: Double, he
get() = noImpl get() = noImpl
} }
native public open class DOMRectInit { native public interface DOMRectInit {
var x: Double = 0.0 var x: Double
var y: Double = 0.0 var y: Double
var width: Double = 0.0 var width: Double
var height: Double = 0.0 var height: Double
}
inline fun DOMRectInit(x: Double = 0.0, y: Double = 0.0, width: Double = 0.0, height: Double = 0.0): DOMRectInit {
val o = js("({})") as DOMRectInit
o.`x` = x
o.`y` = y
o.`width` = width
o.`height` = height
return o
} }
native public open class DOMQuad { native public open class DOMQuad {
@@ -4811,8 +5068,16 @@ native public open class DOMMatrix() : DOMMatrixReadOnly(noImpl) {
fun setMatrixValue(transformList: String): DOMMatrix = noImpl fun setMatrixValue(transformList: String): DOMMatrix = noImpl
} }
native public open class ScrollOptions { native public interface ScrollOptions {
var behavior: String = "auto" var behavior: String
}
inline fun ScrollOptions(behavior: String = "auto"): ScrollOptions {
val o = js("({})") as ScrollOptions
o.`behavior` = behavior
return o
} }
native public interface MediaQueryList { native public interface MediaQueryList {
@@ -4847,22 +5112,58 @@ native public interface CaretPosition {
fun getClientRect(): DOMRect? = noImpl fun getClientRect(): DOMRect? = noImpl
} }
native public open class ScrollOptionsHorizontal : ScrollOptions() { native public interface ScrollOptionsHorizontal : ScrollOptions {
var x: Double var x: Double
} }
native public open class ScrollOptionsVertical : ScrollOptions() { inline fun ScrollOptionsHorizontal(x: Double, behavior: String = "auto"): ScrollOptionsHorizontal {
val o = js("({})") as ScrollOptionsHorizontal
o.`x` = x
o.`behavior` = behavior
return o
}
native public interface ScrollOptionsVertical : ScrollOptions {
var y: Double var y: Double
} }
native public open class BoxQuadOptions { inline fun ScrollOptionsVertical(y: Double, behavior: String = "auto"): ScrollOptionsVertical {
var box: String = "border" val o = js("({})") as ScrollOptionsVertical
o.`y` = y
o.`behavior` = behavior
return o
}
native public interface BoxQuadOptions {
var box: String
var relativeTo: GeometryNode var relativeTo: GeometryNode
} }
native public open class ConvertCoordinateOptions { inline fun BoxQuadOptions(box: String = "border", relativeTo: GeometryNode): BoxQuadOptions {
var fromBox: String = "border" val o = js("({})") as BoxQuadOptions
var toBox: String = "border"
o.`box` = box
o.`relativeTo` = relativeTo
return o
}
native public interface ConvertCoordinateOptions {
var fromBox: String
var toBox: String
}
inline fun ConvertCoordinateOptions(fromBox: String = "border", toBox: String = "border"): ConvertCoordinateOptions {
val o = js("({})") as ConvertCoordinateOptions
o.`fromBox` = fromBox
o.`toBox` = toBox
return o
} }
native public marker interface UnionElementOrHTMLCollection { native public marker interface UnionElementOrHTMLCollection {
+28 -4
View File
@@ -58,7 +58,7 @@ native public open class Request(input: dynamic, init: RequestInit = noImpl) {
fun text(): dynamic = noImpl fun text(): dynamic = noImpl
} }
native public open class RequestInit { native public interface RequestInit {
var method: String var method: String
var headers: dynamic var headers: dynamic
var body: dynamic var body: dynamic
@@ -68,6 +68,20 @@ native public open class RequestInit {
var redirect: String var redirect: String
} }
inline fun RequestInit(method: String, headers: dynamic, body: dynamic, mode: String, credentials: String, cache: String, redirect: String): RequestInit {
val o = js("({})") as RequestInit
o.`method` = method
o.`headers` = headers
o.`body` = body
o.`mode` = mode
o.`credentials` = credentials
o.`cache` = cache
o.`redirect` = redirect
return o
}
native public open class Response(body: dynamic = noImpl, init: ResponseInit = noImpl) { native public open class Response(body: dynamic = noImpl, init: ResponseInit = noImpl) {
open val type: String open val type: String
get() = noImpl get() = noImpl
@@ -96,9 +110,19 @@ native public open class Response(body: dynamic = noImpl, init: ResponseInit = n
} }
} }
native public open class ResponseInit { native public interface ResponseInit {
var status: Short = 200 var status: Short
var statusText: String = "OK" var statusText: String
var headers: dynamic var headers: dynamic
} }
inline fun ResponseInit(status: Short = 200, statusText: String = "OK", headers: dynamic): ResponseInit {
val o = js("({})") as ResponseInit
o.`status` = status
o.`statusText` = statusText
o.`headers` = headers
return o
}
+21 -4
View File
@@ -32,8 +32,16 @@ native public open class Blob() : ImageBitmapSource {
fun close(): Unit = noImpl fun close(): Unit = noImpl
} }
native public open class BlobPropertyBag { native public interface BlobPropertyBag {
var type: String = "" var type: String
}
inline fun BlobPropertyBag(type: String = ""): BlobPropertyBag {
val o = js("({})") as BlobPropertyBag
o.`type` = type
return o
} }
native public open class File(fileBits: Array<dynamic>, fileName: String, options: FilePropertyBag = noImpl) : Blob() { native public open class File(fileBits: Array<dynamic>, fileName: String, options: FilePropertyBag = noImpl) : Blob() {
@@ -43,11 +51,20 @@ native public open class File(fileBits: Array<dynamic>, fileName: String, option
get() = noImpl get() = noImpl
} }
native public open class FilePropertyBag { native public interface FilePropertyBag {
var type: String = "" var type: String
var lastModified: Long var lastModified: Long
} }
inline fun FilePropertyBag(type: String = "", lastModified: Long): FilePropertyBag {
val o = js("({})") as FilePropertyBag
o.`type` = type
o.`lastModified` = lastModified
return o
}
native public interface FileList { native public interface FileList {
val length: Int val length: Int
get() = noImpl get() = noImpl
@@ -61,23 +61,50 @@ native public open class Notification(title: String, options: NotificationOption
} }
} }
native public open class NotificationOptions { native public interface NotificationOptions {
var dir: String = "auto" var dir: String
var lang: String = "" var lang: String
var body: String = "" var body: String
var tag: String = "" var tag: String
var icon: String var icon: String
var sound: String var sound: String
var vibrate: dynamic var vibrate: dynamic
var renotify: Boolean = false var renotify: Boolean
var silent: Boolean = false var silent: Boolean
var noscreen: Boolean = false var noscreen: Boolean
var sticky: Boolean = false var sticky: Boolean
var data: Any? = null var data: Any?
} }
native public open class GetNotificationOptions { inline fun NotificationOptions(dir: String = "auto", lang: String = "", body: String = "", tag: String = "", icon: String, sound: String, vibrate: dynamic, renotify: Boolean = false, silent: Boolean = false, noscreen: Boolean = false, sticky: Boolean = false, data: Any? = null): NotificationOptions {
var tag: String = "" val o = js("({})") as NotificationOptions
o.`dir` = dir
o.`lang` = lang
o.`body` = body
o.`tag` = tag
o.`icon` = icon
o.`sound` = sound
o.`vibrate` = vibrate
o.`renotify` = renotify
o.`silent` = silent
o.`noscreen` = noscreen
o.`sticky` = sticky
o.`data` = data
return o
}
native public interface GetNotificationOptions {
var tag: String
}
inline fun GetNotificationOptions(tag: String = ""): GetNotificationOptions {
val o = js("({})") as GetNotificationOptions
o.`tag` = tag
return o
} }
native public open class NotificationEvent(type: String, eventInitDict: NotificationEventInit = noImpl) : ExtendableEvent(type, eventInitDict) { native public open class NotificationEvent(type: String, eventInitDict: NotificationEventInit = noImpl) : ExtendableEvent(type, eventInitDict) {
@@ -85,7 +112,17 @@ native public open class NotificationEvent(type: String, eventInitDict: Notifica
get() = noImpl get() = noImpl
} }
native public open class NotificationEventInit : ExtendableEventInit() { native public interface NotificationEventInit : ExtendableEventInit {
var notification: Notification var notification: Notification
} }
inline fun NotificationEventInit(notification: Notification, bubbles: Boolean = false, cancelable: Boolean = false): NotificationEventInit {
val o = js("({})") as NotificationEventInit
o.`notification` = notification
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
+102 -14
View File
@@ -102,10 +102,18 @@ native public interface ServiceWorkerContainer : EventTarget {
fun getRegistrations(): dynamic = noImpl fun getRegistrations(): dynamic = noImpl
} }
native public open class RegistrationOptions { native public interface RegistrationOptions {
var scope: String var scope: String
} }
inline fun RegistrationOptions(scope: String): RegistrationOptions {
val o = js("({})") as RegistrationOptions
o.`scope` = scope
return o
}
native public open class ServiceWorkerMessageEvent(type: String, eventInitDict: ServiceWorkerMessageEventInit = noImpl) : Event(type, eventInitDict) { native public open class ServiceWorkerMessageEvent(type: String, eventInitDict: ServiceWorkerMessageEventInit = noImpl) : Event(type, eventInitDict) {
open val data: Any? open val data: Any?
get() = noImpl get() = noImpl
@@ -120,7 +128,7 @@ native public open class ServiceWorkerMessageEvent(type: String, eventInitDict:
fun initServiceWorkerMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: Any?, originArg: String, lastEventIdArg: String, sourceArg: UnionMessagePortOrServiceWorker, portsArg: Array<MessagePort>?): Unit = noImpl fun initServiceWorkerMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: Any?, originArg: String, lastEventIdArg: String, sourceArg: UnionMessagePortOrServiceWorker, portsArg: Array<MessagePort>?): Unit = noImpl
} }
native public open class ServiceWorkerMessageEventInit : EventInit() { native public interface ServiceWorkerMessageEventInit : EventInit {
var data: Any? var data: Any?
var origin: String var origin: String
var lastEventId: String var lastEventId: String
@@ -128,6 +136,20 @@ native public open class ServiceWorkerMessageEventInit : EventInit() {
var ports: Array<MessagePort> var ports: Array<MessagePort>
} }
inline fun ServiceWorkerMessageEventInit(data: Any?, origin: String, lastEventId: String, source: UnionMessagePortOrServiceWorker?, ports: Array<MessagePort>, bubbles: Boolean = false, cancelable: Boolean = false): ServiceWorkerMessageEventInit {
val o = js("({})") as ServiceWorkerMessageEventInit
o.`data` = data
o.`origin` = origin
o.`lastEventId` = lastEventId
o.`source` = source
o.`ports` = ports
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public interface Client : UnionClientOrMessagePortOrServiceWorker { native public interface Client : UnionClientOrMessagePortOrServiceWorker {
val url: String val url: String
get() = noImpl get() = noImpl
@@ -152,16 +174,34 @@ native public interface Clients {
fun claim(): dynamic = noImpl fun claim(): dynamic = noImpl
} }
native public open class ClientQueryOptions { native public interface ClientQueryOptions {
var includeUncontrolled: Boolean = false var includeUncontrolled: Boolean
var type: String = "window" var type: String
}
inline fun ClientQueryOptions(includeUncontrolled: Boolean = false, type: String = "window"): ClientQueryOptions {
val o = js("({})") as ClientQueryOptions
o.`includeUncontrolled` = includeUncontrolled
o.`type` = type
return o
} }
native public open class ExtendableEvent(type: String, eventInitDict: ExtendableEventInit = noImpl) : Event(type, eventInitDict) { native public open class ExtendableEvent(type: String, eventInitDict: ExtendableEventInit = noImpl) : Event(type, eventInitDict) {
fun waitUntil(f: dynamic): Unit = noImpl fun waitUntil(f: dynamic): Unit = noImpl
} }
native public open class ExtendableEventInit : EventInit() { native public interface ExtendableEventInit : EventInit {
}
inline fun ExtendableEventInit(bubbles: Boolean = false, cancelable: Boolean = false): ExtendableEventInit {
val o = js("({})") as ExtendableEventInit
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
native public open class FetchEvent(type: String, eventInitDict: FetchEventInit = noImpl) : ExtendableEvent(type, eventInitDict) { native public open class FetchEvent(type: String, eventInitDict: FetchEventInit = noImpl) : ExtendableEvent(type, eventInitDict) {
@@ -174,10 +214,22 @@ native public open class FetchEvent(type: String, eventInitDict: FetchEventInit
fun respondWith(r: dynamic): Unit = noImpl fun respondWith(r: dynamic): Unit = noImpl
} }
native public open class FetchEventInit : ExtendableEventInit() { native public interface FetchEventInit : ExtendableEventInit {
var request: Request var request: Request
var client: Client var client: Client
var isReload: Boolean = false var isReload: Boolean
}
inline fun FetchEventInit(request: Request, client: Client, isReload: Boolean = false, bubbles: Boolean = false, cancelable: Boolean = false): FetchEventInit {
val o = js("({})") as FetchEventInit
o.`request` = request
o.`client` = client
o.`isReload` = isReload
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
native public open class ExtendableMessageEvent(type: String, eventInitDict: ExtendableMessageEventInit = noImpl) : ExtendableEvent(type, eventInitDict) { native public open class ExtendableMessageEvent(type: String, eventInitDict: ExtendableMessageEventInit = noImpl) : ExtendableEvent(type, eventInitDict) {
@@ -194,7 +246,7 @@ native public open class ExtendableMessageEvent(type: String, eventInitDict: Ext
fun initExtendableMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: Any?, originArg: String, lastEventIdArg: String, sourceArg: UnionClientOrMessagePortOrServiceWorker, portsArg: Array<MessagePort>?): Unit = noImpl fun initExtendableMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: Any?, originArg: String, lastEventIdArg: String, sourceArg: UnionClientOrMessagePortOrServiceWorker, portsArg: Array<MessagePort>?): Unit = noImpl
} }
native public open class ExtendableMessageEventInit : ExtendableEventInit() { native public interface ExtendableMessageEventInit : ExtendableEventInit {
var data: Any? var data: Any?
var origin: String var origin: String
var lastEventId: String var lastEventId: String
@@ -202,6 +254,20 @@ native public open class ExtendableMessageEventInit : ExtendableEventInit() {
var ports: Array<MessagePort> var ports: Array<MessagePort>
} }
inline fun ExtendableMessageEventInit(data: Any?, origin: String, lastEventId: String, source: UnionClientOrMessagePortOrServiceWorker?, ports: Array<MessagePort>, bubbles: Boolean = false, cancelable: Boolean = false): ExtendableMessageEventInit {
val o = js("({})") as ExtendableMessageEventInit
o.`data` = data
o.`origin` = origin
o.`lastEventId` = lastEventId
o.`source` = source
o.`ports` = ports
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
}
native public interface Cache { native public interface Cache {
fun match(request: dynamic, options: CacheQueryOptions = noImpl): dynamic = noImpl fun match(request: dynamic, options: CacheQueryOptions = noImpl): dynamic = noImpl
fun matchAll(request: dynamic = noImpl, options: CacheQueryOptions = noImpl): dynamic = noImpl fun matchAll(request: dynamic = noImpl, options: CacheQueryOptions = noImpl): dynamic = noImpl
@@ -212,20 +278,42 @@ native public interface Cache {
fun keys(request: dynamic = noImpl, options: CacheQueryOptions = noImpl): dynamic = noImpl fun keys(request: dynamic = noImpl, options: CacheQueryOptions = noImpl): dynamic = noImpl
} }
native public open class CacheQueryOptions { native public interface CacheQueryOptions {
var ignoreSearch: Boolean = false var ignoreSearch: Boolean
var ignoreMethod: Boolean = false var ignoreMethod: Boolean
var ignoreVary: Boolean = false var ignoreVary: Boolean
var cacheName: String var cacheName: String
} }
native public open class CacheBatchOperation { inline fun CacheQueryOptions(ignoreSearch: Boolean = false, ignoreMethod: Boolean = false, ignoreVary: Boolean = false, cacheName: String): CacheQueryOptions {
val o = js("({})") as CacheQueryOptions
o.`ignoreSearch` = ignoreSearch
o.`ignoreMethod` = ignoreMethod
o.`ignoreVary` = ignoreVary
o.`cacheName` = cacheName
return o
}
native public interface CacheBatchOperation {
var type: String var type: String
var request: Request var request: Request
var response: Response var response: Response
var options: CacheQueryOptions var options: CacheQueryOptions
} }
inline fun CacheBatchOperation(type: String, request: Request, response: Response, options: CacheQueryOptions): CacheBatchOperation {
val o = js("({})") as CacheBatchOperation
o.`type` = type
o.`request` = request
o.`response` = response
o.`options` = options
return o
}
native public interface CacheStorage { native public interface CacheStorage {
fun match(request: dynamic, options: CacheQueryOptions = noImpl): dynamic = noImpl fun match(request: dynamic, options: CacheQueryOptions = noImpl): dynamic = noImpl
fun has(cacheName: String): dynamic = noImpl fun has(cacheName: String): dynamic = noImpl
+16 -4
View File
@@ -112,9 +112,21 @@ native public open class ProgressEvent(type: String, eventInitDict: ProgressEven
get() = noImpl get() = noImpl
} }
native public open class ProgressEventInit : EventInit() { native public interface ProgressEventInit : EventInit {
var lengthComputable: Boolean = false var lengthComputable: Boolean
var loaded: Long = 0 var loaded: Long
var total: Long = 0 var total: Long
}
inline fun ProgressEventInit(lengthComputable: Boolean = false, loaded: Long = 0, total: Long = 0, bubbles: Boolean = false, cancelable: Boolean = false): ProgressEventInit {
val o = js("({})") as ProgressEventInit
o.`lengthComputable` = lengthComputable
o.`loaded` = loaded
o.`total` = total
o.`bubbles` = bubbles
o.`cancelable` = cancelable
return o
} }
+9 -6
View File
@@ -1,5 +1,6 @@
package org.jetbrains.idl2k package org.jetbrains.idl2k
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ
import java.util.* import java.util.*
private fun Operation.getterOrSetter() = this.attributes.map { it.call }.toSet().let { attributes -> private fun Operation.getterOrSetter() = this.attributes.map { it.call }.toSet().let { attributes ->
@@ -22,7 +23,7 @@ fun generateFunction(repository: Repository, function: Operation, functionName:
initializer = it.defaultValue, initializer = it.defaultValue,
getterSetterNoImpl = false, getterSetterNoImpl = false,
override = false, override = false,
readOnly = true, kind = AttributeKind.ARGUMENT,
vararg = it.vararg, vararg = it.vararg,
static = it.static static = it.static
) )
@@ -66,7 +67,7 @@ fun generateAttribute(putNoImpl: Boolean, repository: Repository, attribute: Att
type = mapType(repository, attribute.type), type = mapType(repository, attribute.type),
initializer = attribute.defaultValue, initializer = attribute.defaultValue,
getterSetterNoImpl = putNoImpl, getterSetterNoImpl = putNoImpl,
readOnly = attribute.readOnly, kind = if (attribute.readOnly) AttributeKind.VAL else AttributeKind.VAR,
override = false, override = false,
vararg = attribute.vararg, vararg = attribute.vararg,
static = attribute.static static = attribute.static
@@ -74,7 +75,7 @@ fun generateAttribute(putNoImpl: Boolean, repository: Repository, attribute: Att
private fun InterfaceDefinition.superTypes(repository: Repository) = superTypes.map { repository.interfaces[it] }.filterNotNull() private fun InterfaceDefinition.superTypes(repository: Repository) = superTypes.map { repository.interfaces[it] }.filterNotNull()
private fun resolveDefinitionKind(repository: Repository, iface: InterfaceDefinition, constructors: List<ExtendedAttribute> = iface.findConstructors()): GenerateDefinitionKind = private fun resolveDefinitionKind(repository: Repository, iface: InterfaceDefinition, constructors: List<ExtendedAttribute> = iface.findConstructors()): GenerateDefinitionKind =
if (iface.dictionary || constructors.isNotEmpty() || iface.superTypes(repository).any { resolveDefinitionKind(repository, it) == GenerateDefinitionKind.CLASS }) { if (constructors.isNotEmpty() || iface.superTypes(repository).any { resolveDefinitionKind(repository, it) == GenerateDefinitionKind.CLASS }) {
GenerateDefinitionKind.CLASS GenerateDefinitionKind.CLASS
} else { } else {
GenerateDefinitionKind.TRAIT GenerateDefinitionKind.TRAIT
@@ -82,7 +83,7 @@ private fun resolveDefinitionKind(repository: Repository, iface: InterfaceDefini
private fun InterfaceDefinition.mapAttributes(repository: Repository) = attributes.map { generateAttribute(!dictionary, repository, it) } private fun InterfaceDefinition.mapAttributes(repository: Repository) = attributes.map { generateAttribute(!dictionary, repository, it) }
private fun InterfaceDefinition.mapOperations(repository: Repository) = operations.flatMap { generateFunctions(repository, it) } private fun InterfaceDefinition.mapOperations(repository: Repository) = operations.flatMap { generateFunctions(repository, it) }
private fun Constant.mapConstant(repository : Repository) = GenerateAttribute(name, mapType(repository, type), value, false, true, false, false, true) private fun Constant.mapConstant(repository : Repository) = GenerateAttribute(name, mapType(repository, type), value, false, AttributeKind.VAL, false, false, true)
private val EMPTY_CONSTRUCTOR = ExtendedAttribute(null, "Constructor", emptyList()) private val EMPTY_CONSTRUCTOR = ExtendedAttribute(null, "Constructor", emptyList())
fun generateTrait(repository: Repository, iface: InterfaceDefinition): GenerateTraitOrClass { fun generateTrait(repository: Repository, iface: InterfaceDefinition): GenerateTraitOrClass {
@@ -132,7 +133,8 @@ fun generateTrait(repository: Repository, iface: InterfaceDefinition): GenerateT
memberFunctions = (iface.mapOperations(repository) + extensions.flatMap { it.mapOperations(repository) }).distinct().toList(), memberFunctions = (iface.mapOperations(repository) + extensions.flatMap { it.mapOperations(repository) }).distinct().toList(),
constants = (iface.constants.map { it.mapConstant(repository) } + extensions.flatMap { it.constants.map { it.mapConstant(repository) } }.distinct().toList()), constants = (iface.constants.map { it.mapConstant(repository) } + extensions.flatMap { it.constants.map { it.mapConstant(repository) } }.distinct().toList()),
primaryConstructor = primaryConstructorWithCall, primaryConstructor = primaryConstructorWithCall,
secondaryConstructors = secondaryConstructorsWithCall secondaryConstructors = secondaryConstructorsWithCall,
generateBuilderFunction = iface.dictionary
) )
} }
@@ -161,7 +163,8 @@ fun mapUnionType(it: UnionType) = GenerateTraitOrClass(
memberFunctions = emptyList(), memberFunctions = emptyList(),
constants = emptyList(), constants = emptyList(),
primaryConstructor = null, primaryConstructor = null,
secondaryConstructors = emptyList() secondaryConstructors = emptyList(),
generateBuilderFunction = false
) )
fun generateUnionTypeTraits(allUnionTypes: Sequence<UnionType>): Sequence<GenerateTraitOrClass> = allUnionTypes.map(::mapUnionType) fun generateUnionTypeTraits(allUnionTypes: Sequence<UnionType>): Sequence<GenerateTraitOrClass> = allUnionTypes.map(::mapUnionType)
+11 -3
View File
@@ -25,12 +25,19 @@ data class Repository(
val enums: Map<String, EnumDefinition> val enums: Map<String, EnumDefinition>
) )
data class GenerateAttribute(val name: String, val type: Type, val initializer: String?, val getterSetterNoImpl: Boolean, val readOnly: Boolean, val override: Boolean, var vararg: Boolean, val static: Boolean) enum class AttributeKind {
VAL, VAR, ARGUMENT
}
data class GenerateAttribute(val name: String, val type: Type, val initializer: String?, val getterSetterNoImpl: Boolean, val kind: AttributeKind, val override: Boolean, var vararg: Boolean, val static: Boolean)
val GenerateAttribute.getterNoImpl: Boolean val GenerateAttribute.getterNoImpl: Boolean
get() = getterSetterNoImpl get() = getterSetterNoImpl
val GenerateAttribute.setterNoImpl: Boolean val GenerateAttribute.setterNoImpl: Boolean
get() = getterSetterNoImpl && !readOnly get() = getterSetterNoImpl && kind == AttributeKind.VAR
val GenerateAttribute.isVal: Boolean
get() = kind == AttributeKind.VAL
val GenerateAttribute.isVar: Boolean
get() = kind == AttributeKind.VAR
val Type.typeSignature: String val Type.typeSignature: String
get() = when { get() = when {
@@ -74,7 +81,8 @@ data class GenerateTraitOrClass(
val memberFunctions: List<GenerateFunction>, val memberFunctions: List<GenerateFunction>,
val constants: List<GenerateAttribute>, val constants: List<GenerateAttribute>,
val primaryConstructor: ConstructorWithSuperTypeCall?, val primaryConstructor: ConstructorWithSuperTypeCall?,
val secondaryConstructors: List<ConstructorWithSuperTypeCall> val secondaryConstructors: List<ConstructorWithSuperTypeCall>,
val generateBuilderFunction: Boolean
) )
val GenerateFunction.signature: String val GenerateFunction.signature: String
+56 -26
View File
@@ -2,7 +2,7 @@ package org.jetbrains.idl2k
import java.math.BigInteger import java.math.BigInteger
private fun <O : Appendable> O.indent(commented: Boolean, level: Int) { private fun <O : Appendable> O.indent(commented: Boolean = false, level: Int) {
if (commented) { if (commented) {
append("//") append("//")
} }
@@ -11,23 +11,31 @@ private fun <O : Appendable> O.indent(commented: Boolean, level: Int) {
} }
} }
private fun Appendable.renderAttributeDeclaration(arg: GenerateAttribute, override: Boolean, open: Boolean, commented: Boolean, level: Int = 1) { private fun Appendable.renderAttributeDeclaration(arg: GenerateAttribute, override: Boolean, open: Boolean, omitDefaults: Boolean = false) {
indent(commented, level)
when { when {
override -> append("override ") override -> append("override ")
open -> append("open ") open -> append("open ")
arg.vararg -> append("vararg ")
} }
append(if (arg.readOnly) "val" else "var") append(when(arg.kind) {
append(" ") AttributeKind.VAL -> "val "
append(arg.name) AttributeKind.VAR -> "var "
AttributeKind.ARGUMENT -> ""
})
append(arg.name.replaceKeywords())
append(": ") append(": ")
append(arg.type.render()) append(arg.type.render())
if (arg.initializer != null) { if (arg.initializer != null && !omitDefaults) {
append(" = ") append(" = ")
append(arg.initializer.replaceWrongConstants(arg.type)) append(arg.initializer.replaceWrongConstants(arg.type))
} }
}
private fun Appendable.renderAttributeDeclarationAsProperty(arg: GenerateAttribute, override: Boolean, open: Boolean, commented: Boolean, level: Int, omitDefaults: Boolean) {
indent(commented, level)
renderAttributeDeclaration(arg, override, open, omitDefaults)
appendln() appendln()
if (arg.getterNoImpl) { if (arg.getterNoImpl) {
@@ -50,19 +58,10 @@ private fun String.replaceWrongConstants(type: Type) = when {
} }
private fun String.replaceKeywords() = if (this in keywords) this + "_" else this private fun String.replaceKeywords() = if (this in keywords) this + "_" else this
private fun Appendable.renderArgumentsDeclaration(args: List<GenerateAttribute>, omitDefaults: Boolean) = private fun Appendable.renderArgumentsDeclaration(args: List<GenerateAttribute>, omitDefaults: Boolean = false) =
args.map { args.map {
StringBuilder { StringBuilder {
if (it.vararg) { renderAttributeDeclaration(it, it.override, false, omitDefaults)
append("vararg ")
}
append(it.name.replaceKeywords())
append(": ")
append(it.type.render())
if (!omitDefaults && it.initializer != null && it.initializer != "") {
append(" = ")
append(it.initializer.replaceWrongConstants(it.type))
}
} }
}.joinTo(this, ", ", "(", ")") }.joinTo(this, ", ", "(", ")")
@@ -90,10 +89,6 @@ private fun Appendable.renderFunctionDeclaration(f: GenerateFunction, override:
} }
private fun List<GenerateAttribute>.hasNoVars() = none { it.isVar } private fun List<GenerateAttribute>.hasNoVars() = none { it.isVar }
private val GenerateAttribute.isVal: Boolean
get() = readOnly
private val GenerateAttribute.isVar: Boolean
get() = !readOnly
private fun GenerateAttribute.isCommented(parent: String) = "$parent.$name" in commentOutDeclarations || "$parent.$name: ${type.render()}" in commentOutDeclarations private fun GenerateAttribute.isCommented(parent: String) = "$parent.$name" in commentOutDeclarations || "$parent.$name: ${type.render()}" in commentOutDeclarations
private fun GenerateFunction.isCommented(parent: String) = private fun GenerateFunction.isCommented(parent: String) =
@@ -154,7 +149,13 @@ fun Appendable.render(allTypes: Map<String, GenerateTraitOrClass>, typeNamesToUn
.filter { it !in superAttributes && !it.static && (it.isVar || (it.isVal && superAttributesByName[it.name]?.hasNoVars() ?: true)) } .filter { it !in superAttributes && !it.static && (it.isVar || (it.isVal && superAttributesByName[it.name]?.hasNoVars() ?: true)) }
.map { it.dynamicIfUnknownType(allTypes.keySet()) } .map { it.dynamicIfUnknownType(allTypes.keySet()) }
.groupBy { it.signature }.reduceValues().values().forEach { arg -> .groupBy { it.signature }.reduceValues().values().forEach { arg ->
renderAttributeDeclaration(arg, override = arg.signature in superSignatures, open = iface.kind == GenerateDefinitionKind.CLASS && arg.readOnly, commented = arg.isCommented(iface.name)) renderAttributeDeclarationAsProperty(arg,
override = arg.signature in superSignatures,
open = iface.kind == GenerateDefinitionKind.CLASS && arg.isVal,
commented = arg.isCommented(iface.name),
omitDefaults = iface.kind == GenerateDefinitionKind.TRAIT,
level = 1
)
} }
iface.memberFunctions.filter { it !in superFunctions && !it.static }.map { it.dynamicIfUnknownType(allTypes.keySet()) }.groupBy { it.signature }.reduceValues(::betterFunction).values().forEach { iface.memberFunctions.filter { it !in superFunctions && !it.static }.map { it.dynamicIfUnknownType(allTypes.keySet()) }.groupBy { it.signature }.reduceValues(::betterFunction).values().forEach {
renderFunctionDeclaration(it.fixRequiredArguments(iface.name), it.signature in superSignatures, commented = it.isCommented(iface.name)) renderFunctionDeclaration(it.fixRequiredArguments(iface.name), it.signature in superSignatures, commented = it.isCommented(iface.name))
@@ -168,10 +169,10 @@ fun Appendable.render(allTypes: Map<String, GenerateTraitOrClass>, typeNamesToUn
indent(false, 1) indent(false, 1)
appendln("companion object {") appendln("companion object {")
iface.constants.forEach { iface.constants.forEach {
renderAttributeDeclaration(it, override = false, open = false, level = 2, commented = it.isCommented(iface.name)) renderAttributeDeclarationAsProperty(it, override = false, open = false, level = 2, commented = it.isCommented(iface.name), omitDefaults = false)
} }
staticAttributes.forEach { staticAttributes.forEach {
renderAttributeDeclaration(it, override = false, open = false, level = 2, commented = it.isCommented(iface.name)) renderAttributeDeclarationAsProperty(it, override = false, open = false, level = 2, commented = it.isCommented(iface.name), omitDefaults = false)
} }
staticFunctions.forEach { staticFunctions.forEach {
renderFunctionDeclaration(it.fixRequiredArguments(iface.name), override = false, level = 2, commented = it.isCommented(iface.name)) renderFunctionDeclaration(it.fixRequiredArguments(iface.name), override = false, level = 2, commented = it.isCommented(iface.name))
@@ -182,6 +183,35 @@ fun Appendable.render(allTypes: Map<String, GenerateTraitOrClass>, typeNamesToUn
appendln("}") appendln("}")
appendln() appendln()
if (iface.generateBuilderFunction) {
renderBuilderFunction(iface, allSuperTypes, allTypes.keySet())
}
}
fun Appendable.renderBuilderFunction(dictionary: GenerateTraitOrClass, allSuperTypes: List<GenerateTraitOrClass>, allTypes: Set<String>) {
val fields = (dictionary.memberAttributes + allSuperTypes.flatMap { it.memberAttributes }).distinctBy { it.signature }.map { it.copy(kind = AttributeKind.ARGUMENT) }.dynamicIfUnknownType(allTypes)
append("inline fun ${dictionary.name}")
renderArgumentsDeclaration(fields)
appendln(": ${dictionary.name} {")
indent(level = 1)
appendln("val o = js(\"({})\") as ${dictionary.name}")
appendln()
for (field in fields) {
indent(level = 1)
appendln("o.`${field.name}` = ${field.name.replaceKeywords()}")
}
appendln()
indent(level = 1)
appendln("return o")
appendln("}")
appendln()
} }
fun betterFunction(f1: GenerateFunction, f2: GenerateFunction): GenerateFunction = fun betterFunction(f1: GenerateFunction, f2: GenerateFunction): GenerateFunction =