or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.mdjs-annotations.mdjs-types.mdplatform-services.mdpromises.mdtype-conversion.md
tile.json

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

Kotlin Standard Library for experimental WebAssembly JS platform providing core functionality and JavaScript interoperability

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.jetbrains.kotlin/kotlin-stdlib-wasm-js@2.2.x

To install, run

npx @tessl/cli install tessl/maven-org-jetbrains-kotlin--kotlin-stdlib-wasm-js@2.2.0

index.mddocs/

Kotlin Standard Library for WebAssembly JavaScript

The Kotlin Standard Library for WebAssembly JavaScript (kotlin-stdlib-wasm-js) provides comprehensive JavaScript interoperability for Kotlin applications targeting WebAssembly in JavaScript environments. It enables seamless integration between Kotlin/Wasm and JavaScript code, including DOM manipulation, browser APIs, and JavaScript type system mapping.

Package Information

  • Package Name: kotlin-stdlib-wasm-js
  • Package Type: maven
  • Language: Kotlin
  • Installation: implementation("org.jetbrains.kotlin:kotlin-stdlib-wasm-js:2.2.0")

Core Imports

import kotlin.js.*
import kotlin.wasm.js.*

Basic Usage

import kotlin.js.*

// Convert between Kotlin and JavaScript types
val kotlinString = "Hello, World!"
val jsString: JsString = kotlinString.toJsString()
val backToKotlin: String = jsString.toString()

// Work with JavaScript arrays
val kotlinList = listOf("apple", "banana", "cherry")
val jsArray: JsArray<JsString> = kotlinList.map { it.toJsString() }.toJsArray()

// Handle JavaScript promises
val promise: Promise<JsString> = Promise { resolve, reject ->
    resolve("Success!".toJsString())
}

// Execute JavaScript code directly
js("console.log('Hello from Kotlin/Wasm!')")

Architecture

The library is built around several key components:

  • JavaScript Type System: Native JavaScript types (JsAny, JsString, JsNumber, etc.) with Kotlin interoperability
  • Type Conversion: Bidirectional conversion functions between Kotlin and JavaScript types
  • Promise Support: Full JavaScript Promise integration with async/await patterns
  • Reference System: JsReference for wrapping Kotlin objects for JavaScript consumption
  • Annotation System: Export and import annotations for JavaScript interoperability
  • Platform Integration: I/O, time, random, UUID, and reflection support optimized for WebAssembly

Capabilities

JavaScript Type System

Core JavaScript interoperability types and their Kotlin representations for seamless type system integration.

external interface JsAny
external interface JsReference<out T : Any> : JsAny
external class JsString : JsAny
external class JsNumber : JsAny
external class JsBoolean : JsAny
external class JsBigInt : JsAny
external class JsArray<T : JsAny?> : JsAny
external class Promise<out T : JsAny?> : JsAny

JavaScript Types

Type Conversion

Bidirectional conversion functions between Kotlin and JavaScript types, enabling seamless data exchange.

fun String.toJsString(): JsString
fun Boolean.toJsBoolean(): JsBoolean
fun Double.toJsNumber(): JsNumber
fun Int.toJsNumber(): JsNumber
fun Long.toJsBigInt(): JsBigInt
fun <T> List<T>.toJsArray(): JsArray<T>
fun <T> Array<T>.toJsArray(): JsArray<T>
fun <T : Any> T.toJsReference(): JsReference<T>

Type Conversion

JavaScript Interoperability Annotations

Annotations for controlling JavaScript exports, imports, and naming for seamless JavaScript integration.

@Target(AnnotationTarget.FUNCTION)
annotation class JsExport

@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)
annotation class JsName(val name: String)

@Target(AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FUNCTION, AnnotationTarget.FILE)
annotation class JsModule(val import: String)

@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
annotation class JsFun(val code: String)

JavaScript Annotations

Promise and Async Support

JavaScript Promise integration with full async/await support and error handling.

external class Promise<out T : JsAny?>(
    executor: (resolve: (T) -> Unit, reject: (JsAny) -> Unit) -> Unit
) : JsAny {
    fun <S : JsAny?> then(onFulfilled: ((T) -> S)?): Promise<S>
    fun <S : JsAny?> catch(onRejected: (JsAny) -> S): Promise<S>
    fun finally(onFinally: () -> Unit): Promise<T>
    
    companion object {
        fun <S : JsAny?> all(promise: JsArray<out Promise<S>>): Promise<JsArray<out S>>
        fun <S : JsAny?> race(promise: JsArray<out Promise<S>>): Promise<S>
        fun reject(e: JsAny): Promise<Nothing>
        fun <S : JsAny?> resolve(e: S): Promise<S>
    }
}

Promise Support

Platform Services

I/O operations, time management, random number generation, UUID support, and reflection services optimized for WebAssembly.

// I/O Operations
fun println()
fun println(message: Any?)
fun print(message: Any?)

// Time Support
object MonotonicTimeSource : TimeSource.WithComparableMarks
fun systemClockNow(): Instant

// Random & UUID
fun defaultPlatformRandom(): Random
fun secureRandomUuid(): Uuid

Platform Services

Types

// Exception handling for JavaScript errors
class JsException internal constructor(val thrownValue: JsAny?) : Throwable {
    override val message: String
}

// External class reflection support  
internal class KExternalClassImpl<T : Any> : KClass<T> {
    val simpleName: String?
    val qualifiedName: String?
    fun isInstance(value: Any?): Boolean
}