npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

swift-demangle-wasm

v1.0.2

Published

swift-demangle compiled to WebAssembly

Readme

swift-demangle.wasm

A Swift demangling library compiled to WebAssembly, allowing you to demangle Swift symbol names in web browsers and Node.js environments.

Overview

Swift uses name mangling to encode type information and other metadata into symbol names during compilation. This results in cryptic symbol names like $sSi1soiyS2i_SitFZ which correspond to human-readable function signatures like static Swift.Int.- infix(Swift.Int, Swift.Int) -> Swift.Int.

This package provides a WebAssembly-compiled Swift demangler that can convert these mangled names back to their readable form, making it useful for:

  • Crash report analysis
  • Development tools and IDEs
  • Symbol inspection utilities

Installation

npm install swift-demangle-wasm

Usage

Node.js

import init from "swift-demangle-wasm";

const demangle = await init();
const result = demangle("$sSi1soiyS2i_SitFZ");
console.log(result);
// Output: "static Swift.Int.- infix(Swift.Int, Swift.Int) -> Swift.Int"

Browser

import init from "swift-demangle-wasm";

// The browser version requires loading the WASM module
const response = await fetch("path/to/swift-demangle.wasm");
const demangle = await init({ module: response });

const result = demangle("$sSi1soiyS2i_SitFZ");
console.log(result);
// Output: "static Swift.Int.- infix(Swift.Int, Swift.Int) -> Swift.Int"

API Reference

init(options?: InitializeOptions): Promise<Demangler>

Initializes the WASM module and returns a demangler function.

Parameters:

  • options (optional): Initialization options
    • module: A Response object or ArrayBuffer containing the Wasm module (required for browser environments)

Returns:

  • Promise<Demangler>: A promise that resolves to a demangler function

Demangler(mangledName: string): string

Demangles a Swift symbol name.

Parameters:

  • mangledName: The mangled Swift symbol name to demangle

Returns:

  • string: The demangled, human-readable symbol name. If demangling fails, returns the original input.

Building from Source

If you want to build this project yourself, you'll need to set up the Swift WebAssembly toolchain.

Prerequisites

Swift 6.2+ toolchain from swift.org

Environment Setup

Before building, you need to configure your shell environment to use the correct Swift toolchain and SDK:

# Set up the Swift toolchain path
export PATH=$HOME/Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin:$PATH

# Install Swift SDK for WebAssembly if you haven't installed it
swift sdk install https://download.swift.org/swift-6.2-release/wasm/swift-6.2-RELEASE/swift-6.2-RELEASE_wasm.artifactbundle.tar.gz --checksum fe4e8648309fce86ea522e9e0d1dc48e82df6ba6e5743dbf0c53db8429fb5224

# Install dependency packages
npm install

Building

To build package:

./build.sh

Testing

To run tests after building:

npm test

This runs both Node.js and browser tests using Vitest.

License

MIT