CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-jetbrains-kotlin--kotlin-stdlib-js

Kotlin Standard Library for JavaScript target with comprehensive W3C DOM bindings and JavaScript interoperability features.

Pending
Overview
Eval results
Files

w3c-dom-apis.mddocs/

W3C DOM and Browser APIs

Comprehensive type-safe bindings for W3C web standards including DOM manipulation, HTTP requests, file handling, media APIs, WebGL, and other browser APIs. This module provides 599+ external declarations covering the complete browser API surface.

Capabilities

Core DOM Interfaces

Fundamental DOM interfaces for document and element manipulation.

/**
 * Document interface representing the HTML document
 */
external interface Document : Node, DocumentOrShadowRoot, GlobalEventHandlers {
    val documentElement: Element?
    val body: HTMLElement?
    val head: HTMLHeadElement?
    val title: String
    
    fun createElement(localName: String): Element
    fun createTextNode(data: String): Text
    fun getElementById(elementId: String): Element?
    fun getElementsByTagName(qualifiedName: String): HTMLCollection
    fun getElementsByClassName(classNames: String): HTMLCollection
    fun querySelector(selectors: String): Element?
    fun querySelectorAll(selectors: String): NodeList
}

/**
 * Base element interface
 */
external interface Element : Node, DocumentOrShadowRoot, GlobalEventHandlers {
    val tagName: String
    val id: String
    val className: String  
    val classList: DOMTokenList
    
    fun getAttribute(qualifiedName: String): String?
    fun setAttribute(qualifiedName: String, value: String)
    fun removeAttribute(qualifiedName: String)
    fun hasAttribute(qualifiedName: String): Boolean
    
    fun querySelector(selectors: String): Element?
    fun querySelectorAll(selectors: String): NodeList
    fun getElementsByTagName(qualifiedName: String): HTMLCollection
    fun getElementsByClassName(classNames: String): HTMLCollection
}

/**
 * Base node interface for DOM tree
 */
external interface Node : EventTarget {
    val nodeType: Short
    val nodeName: String
    val nodeValue: String?
    val textContent: String?
    val parentNode: Node?
    val childNodes: NodeList
    val firstChild: Node?
    val lastChild: Node?
    val nextSibling: Node?
    val previousSibling: Node?
    
    fun appendChild(node: Node): Node
    fun insertBefore(node: Node, child: Node?): Node
    fun removeChild(child: Node): Node
    fun replaceChild(node: Node, child: Node): Node
    fun cloneNode(deep: Boolean): Node
}

HTML Elements

Type-safe interfaces for all HTML elements with their specific properties.

/**
 * Base HTML element interface
 */
external interface HTMLElement : Element, GlobalEventHandlers {
    var title: String
    var lang: String
    var dir: String
    var hidden: Boolean
    val style: CSSStyleDeclaration
    val offsetParent: Element?
    val offsetTop: Int
    val offsetLeft: Int
    val offsetWidth: Int
    val offsetHeight: Int
    
    fun click()
    fun focus()
    fun blur()
}

/**
 * HTML input element
 */
external interface HTMLInputElement : HTMLElement {
    var type: String
    var value: String
    var placeholder: String
    var disabled: Boolean
    var readonly: Boolean
    var required: Boolean
    var checked: Boolean
    var name: String
    var form: HTMLFormElement?
    
    fun select()
    fun focus()
    fun blur()
    fun checkValidity(): Boolean
}

/**
 * HTML form element
 */
external interface HTMLFormElement : HTMLElement {
    val elements: HTMLFormControlsCollection
    val length: Int
    var action: String
    var method: String
    var target: String
    var enctype: String
    
    fun submit()
    fun reset()
    fun checkValidity(): Boolean
}

/**
 * HTML div element
 */
external interface HTMLDivElement : HTMLElement

/**
 * HTML span element  
 */
external interface HTMLSpanElement : HTMLElement

/**
 * HTML anchor element
 */
external interface HTMLAnchorElement : HTMLElement {
    var href: String
    var target: String
    var download: String
    var rel: String
    val hostname: String
    val pathname: String
    val search: String
    val hash: String
}

/**
 * HTML image element
 */
external interface HTMLImageElement : HTMLElement {
    var src: String
    var alt: String
    var width: Int
    var height: Int
    var crossOrigin: String?
    val naturalWidth: Int
    val naturalHeight: Int
    val complete: Boolean
}

Event System

Comprehensive event handling system for DOM interactions.

/**
 * Base event interface
 */
external interface Event {
    val type: String
    val target: EventTarget?
    val currentTarget: EventTarget?
    val eventPhase: Short
    val bubbles: Boolean
    val cancelable: Boolean
    val defaultPrevented: Boolean
    val timeStamp: Number
    
    fun preventDefault()
    fun stopPropagation()
    fun stopImmediatePropagation()
}

/**
 * Event target interface for event handling
 */
external interface EventTarget {
    fun addEventListener(type: String, listener: EventListener?)
    fun addEventListener(type: String, listener: EventListener?, options: AddEventListenerOptions?)
    fun removeEventListener(type: String, listener: EventListener?)
    fun removeEventListener(type: String, listener: EventListener?, options: EventListenerOptions?)
    fun dispatchEvent(event: Event): Boolean
}

/**
 * Event listener interface
 */
external interface EventListener {
    fun handleEvent(event: Event)
}

/**
 * Mouse event interface
 */
external interface MouseEvent : UIEvent {
    val button: Short
    val buttons: Short
    val clientX: Int
    val clientY: Int
    val screenX: Int
    val screenY: Int
    val ctrlKey: Boolean
    val shiftKey: Boolean
    val altKey: Boolean
    val metaKey: Boolean
}

/**
 * Keyboard event interface
 */
external interface KeyboardEvent : UIEvent {
    val key: String
    val code: String
    val location: Int
    val ctrlKey: Boolean
    val shiftKey: Boolean
    val altKey: Boolean
    val metaKey: Boolean
    val repeat: Boolean
}

HTTP and Network APIs

Modern HTTP client and traditional XMLHttpRequest support.

/**
 * Modern fetch API for HTTP requests
 */
external fun fetch(input: RequestInfo, init: RequestInit? = definedExternally): Promise<Response>

/**
 * HTTP request representation
 */
external interface Request {
    val method: String
    val url: String
    val headers: Headers
    val body: dynamic
    val mode: RequestMode
    val credentials: RequestCredentials
    
    fun text(): Promise<String>
    fun json(): Promise<dynamic>
    fun blob(): Promise<Blob>
    fun arrayBuffer(): Promise<ArrayBuffer>
}

/**
 * HTTP response representation
 */
external interface Response {
    val ok: Boolean
    val status: Short
    val statusText: String
    val headers: Headers
    val body: ReadableStream?
    val bodyUsed: Boolean
    
    fun text(): Promise<String>
    fun json(): Promise<dynamic>
    fun blob(): Promise<Blob>
    fun arrayBuffer(): Promise<ArrayBuffer>
    fun clone(): Response
}

/**
 * HTTP headers manipulation
 */
external interface Headers {
    fun append(name: String, value: String)
    fun delete(name: String)
    fun get(name: String): String?
    fun has(name: String): Boolean
    fun set(name: String, value: String)
}

/**
 * Traditional XMLHttpRequest
 */
external interface XMLHttpRequest : EventTarget {
    var onload: ((Event) -> Unit)?
    var onerror: ((Event) -> Unit)?
    var onreadystatechange: ((Event) -> Unit)?
    val readyState: Short
    val response: dynamic
    val responseText: String
    val responseType: XMLHttpRequestResponseType
    val status: Short
    val statusText: String
    
    fun open(method: String, url: String)
    fun open(method: String, url: String, async: Boolean)
    fun send()
    fun send(body: dynamic)
    fun setRequestHeader(name: String, value: String)
    fun getResponseHeader(name: String): String?
    fun getAllResponseHeaders(): String
    fun abort()
}

File API

File system access and binary data handling.

/**
 * Binary large object representation
 */
external interface Blob {
    val size: Number
    val type: String
    
    fun slice(): Blob
    fun slice(start: Number): Blob
    fun slice(start: Number, end: Number): Blob
    fun slice(start: Number, end: Number, contentType: String): Blob
    fun stream(): ReadableStream
    fun text(): Promise<String>
    fun arrayBuffer(): Promise<ArrayBuffer>
}

/**
 * File system file representation
 */
external interface File : Blob {
    val name: String
    val lastModified: Number
}

/**
 * Collection of files (from input[type=file])
 */
external interface FileList {
    val length: Int
    fun item(index: Int): File?
    operator fun get(index: Int): File?
}

/**
 * Asynchronous file reading
 */
external interface FileReader : EventTarget {
    val readyState: Short
    val result: dynamic
    val error: dynamic
    var onload: ((Event) -> Unit)?
    var onerror: ((Event) -> Unit)?
    var onloadend: ((Event) -> Unit)?
    
    fun readAsArrayBuffer(file: Blob)
    fun readAsDataURL(file: Blob) 
    fun readAsText(file: Blob)
    fun readAsText(file: Blob, encoding: String)
    fun abort()
}

/**
 * Form data encoding
 */
external interface FormData {
    fun append(name: String, value: String)
    fun append(name: String, value: Blob)
    fun append(name: String, value: Blob, filename: String)
    fun delete(name: String)
    fun get(name: String): dynamic
    fun getAll(name: String): Array<dynamic>
    fun has(name: String): Boolean
    fun set(name: String, value: String)
    fun set(name: String, value: Blob)
    fun set(name: String, value: Blob, filename: String)
}

Media APIs

Media capture, playback, and streaming capabilities.

/**
 * Media stream representation
 */
external interface MediaStream : EventTarget {
    val id: String
    val active: Boolean
    
    fun getAudioTracks(): Array<MediaStreamTrack>
    fun getVideoTracks(): Array<MediaStreamTrack>
    fun getTracks(): Array<MediaStreamTrack>
    fun addTrack(track: MediaStreamTrack)
    fun removeTrack(track: MediaStreamTrack)
    fun clone(): MediaStream
}

/**
 * Individual media track
 */
external interface MediaStreamTrack : EventTarget {
    val id: String
    val kind: String
    val label: String
    val enabled: Boolean
    val muted: Boolean
    val readyState: MediaStreamTrackState
    
    fun clone(): MediaStreamTrack
    fun stop()
    fun getCapabilities(): MediaTrackCapabilities
    fun getConstraints(): MediaTrackConstraints
}

/**
 * Media device access
 */
external interface MediaDevices : EventTarget {
    fun getUserMedia(constraints: MediaStreamConstraints): Promise<MediaStream>
    fun getDisplayMedia(constraints: DisplayMediaStreamConstraints): Promise<MediaStream>
    fun enumerateDevices(): Promise<Array<MediaDeviceInfo>>
}

/**
 * HTML video element
 */
external interface HTMLVideoElement : HTMLMediaElement {
    var width: Int
    var height: Int
    val videoWidth: Int
    val videoHeight: Int
    var poster: String
}

/**
 * HTML audio element
 */
external interface HTMLAudioElement : HTMLMediaElement

WebGL APIs

Complete WebGL 1.0 API for 3D graphics programming.

/**
 * WebGL rendering context
 */
external interface WebGLRenderingContext {
    // Context constants
    val DEPTH_BUFFER_BIT: Int
    val STENCIL_BUFFER_BIT: Int  
    val COLOR_BUFFER_BIT: Int
    val TRIANGLES: Int
    val TRIANGLE_STRIP: Int
    val TRIANGLE_FAN: Int
    
    // Buffer operations
    fun createBuffer(): WebGLBuffer?
    fun bindBuffer(target: Int, buffer: WebGLBuffer?)
    fun bufferData(target: Int, size: Int, usage: Int)
    fun bufferData(target: Int, data: ArrayBufferView, usage: Int)
    fun deleteBuffer(buffer: WebGLBuffer?)
    
    // Shader operations  
    fun createShader(type: Int): WebGLShader?
    fun shaderSource(shader: WebGLShader, source: String)
    fun compileShader(shader: WebGLShader)
    fun deleteShader(shader: WebGLShader?)
    
    // Program operations
    fun createProgram(): WebGLProgram?
    fun attachShader(program: WebGLProgram, shader: WebGLShader)
    fun linkProgram(program: WebGLProgram)
    fun useProgram(program: WebGLProgram?)
    fun deleteProgram(program: WebGLProgram?)
    
    // Drawing operations
    fun clear(mask: Int)
    fun clearColor(red: Float, green: Float, blue: Float, alpha: Float)
    fun drawArrays(mode: Int, first: Int, count: Int)
    fun drawElements(mode: Int, count: Int, type: Int, offset: Int)
    
    // Viewport and scissor
    fun viewport(x: Int, y: Int, width: Int, height: Int)
    fun scissor(x: Int, y: Int, width: Int, height: Int)
}

/**
 * WebGL buffer object
 */
external interface WebGLBuffer

/**
 * WebGL shader object  
 */
external interface WebGLShader

/**
 * WebGL program object
 */
external interface WebGLProgram

/**
 * WebGL texture object
 */
external interface WebGLTexture

/**
 * Typed array for 32-bit floats
 */
external interface Float32Array : ArrayBufferView {
    val length: Int
    operator fun get(index: Int): Float
    operator fun set(index: Int, value: Float)
}

/**
 * Typed array for unsigned 8-bit integers
 */
external interface Uint8Array : ArrayBufferView {
    val length: Int
    operator fun get(index: Int): Byte
    operator fun set(index: Int, value: Byte)
}

Service Workers and Cache API

Progressive Web App capabilities with service worker and caching support.

/**
 * Service worker representation
 */
external interface ServiceWorker : EventTarget {
    val scriptURL: String
    val state: ServiceWorkerState
    
    fun postMessage(message: dynamic)
}

/**
 * Service worker registration
 */
external interface ServiceWorkerRegistration : EventTarget {
    val scope: String
    val installing: ServiceWorker?
    val waiting: ServiceWorker?
    val active: ServiceWorker?
    
    fun update(): Promise<Unit>
    fun unregister(): Promise<Boolean>
}

/**
 * Cache storage interface
 */
external interface CacheStorage {
    fun open(cacheName: String): Promise<Cache>
    fun has(cacheName: String): Promise<Boolean>
    fun delete(cacheName: String): Promise<Boolean>
    fun keys(): Promise<Array<String>>
}

/**
 * Individual cache interface
 */
external interface Cache {
    fun match(request: RequestInfo): Promise<Response?>
    fun matchAll(request: RequestInfo): Promise<Array<Response>>
    fun add(request: RequestInfo): Promise<Unit>
    fun addAll(requests: Array<RequestInfo>): Promise<Unit>
    fun put(request: RequestInfo, response: Response): Promise<Unit>
    fun delete(request: RequestInfo): Promise<Boolean>
    fun keys(): Promise<Array<Request>>
}

Types

// Core DOM types
external interface Document : Node
external interface Element : Node  
external interface Node : EventTarget
external interface EventTarget

// HTML element types
external interface HTMLElement : Element
external interface HTMLInputElement : HTMLElement
external interface HTMLFormElement : HTMLElement
external interface HTMLDivElement : HTMLElement
external interface HTMLAnchorElement : HTMLElement
external interface HTMLImageElement : HTMLElement

// Event types
external interface Event
external interface MouseEvent : UIEvent
external interface KeyboardEvent : UIEvent
external interface EventListener

// Network types
external interface Request
external interface Response  
external interface Headers
external interface XMLHttpRequest : EventTarget

// File types
external interface Blob
external interface File : Blob
external interface FileList
external interface FileReader : EventTarget
external interface FormData

// Media types
external interface MediaStream : EventTarget
external interface MediaStreamTrack : EventTarget
external interface MediaDevices : EventTarget
external interface HTMLVideoElement : HTMLMediaElement
external interface HTMLAudioElement : HTMLMediaElement

// WebGL types
external interface WebGLRenderingContext
external interface WebGLBuffer
external interface WebGLShader
external interface WebGLProgram
external interface WebGLTexture
external interface Float32Array : ArrayBufferView
external interface Uint8Array : ArrayBufferView

// Service Worker types
external interface ServiceWorker : EventTarget
external interface ServiceWorkerRegistration : EventTarget
external interface Cache
external interface CacheStorage

// Utility types
external interface ArrayBuffer
external interface ArrayBufferView
external interface ReadableStream
external interface DOMTokenList
external interface HTMLCollection
external interface NodeList

Install with Tessl CLI

npx tessl i tessl/maven-org-jetbrains-kotlin--kotlin-stdlib-js

docs

browser-integration.md

collections.md

coroutines.md

index.md

io-encoding.md

javascript-interop.md

math-time.md

reflection.md

uuid.md

w3c-dom-apis.md

tile.json