Skip to content

Core Utilities

The uni module provides essential utilities for Scala application development.

Overview

ComponentDescription
DesignObject wiring with lifecycle management
UniTestLightweight testing framework
LoggingStructured logging with LogSupport
JSONPure Scala JSON parser and DSL
MessagePackBinary serialization format
SurfaceCompile-time type introspection

Quick Start

scala
import wvlet.uni.design.Design
import wvlet.uni.log.LogSupport
import wvlet.uni.json.JSON

// Service with logging
class UserService extends LogSupport:
  def findUser(id: String): Option[User] =
    debug(s"Finding user: ${id}")
    // Implementation
    None

// Object wiring with Design
val design = Design.newDesign
  .bindSingleton[UserService]

design.build[UserService] { service =>
  service.findUser("123")
}

// JSON parsing
val json = JSON.parse("""{"name": "Alice", "age": 30}""")
val name = json("name").toStringValue  // "Alice"

Package Structure

wvlet.uni.design   - Object wiring framework
wvlet.uni.log      - Logging framework
wvlet.uni.json     - JSON processing
wvlet.uni.msgpack  - MessagePack serialization
wvlet.uni.surface  - Type reflection
wvlet.uni.weaver   - Object serialization

Cross-Platform Support

All core utilities work across JVM, Scala.js, and Scala Native platforms.

FeatureJVMJSNative
Design
Logging
JSON
MessagePack
Surface

Released under the Apache 2.0 License.