New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@timeleap/sia

Package Overview
Dependencies
Maintainers
2
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@timeleap/sia

Fast, compact binary serialization for TypeScript and JavaScript

latest
Source
npmnpm
Version
2.3.0
Version published
Maintainers
2
Created
Source

Sia for TypeScript

Build Status npm

TypeScript/JavaScript implementation of the Sia binary serialization library. Fast, compact, zero dependencies.

Documentation

Installation

npm install @timeleap/sia
# or
yarn add @timeleap/sia
# or
pnpm add @timeleap/sia

Quick Example

import { Sia } from "@timeleap/sia";

const sia = new Sia();
sia.addString8("Alice").addUInt8(30).addBool(true);

sia.seek(0);
console.log(sia.readString8()); // "Alice"
console.log(sia.readUInt8()); // 30
console.log(sia.readBool()); // true

All add* methods return this, so calls can be chained. After writing, seek(0) resets the offset for reading.

Functional API

Every operation is also exported as a standalone function for tree-shaking. If you import functions directly instead of the Sia class, your bundler can drop everything you don't use:

import {
  Buffer,
  addString8,
  readString8,
  addUInt8,
  readUInt8,
} from "@timeleap/sia";

const buf = Buffer.alloc(256);
addString8(buf, "Alice");
addUInt8(buf, 30);

buf.seek(0);
console.log(readString8(buf)); // "Alice"
console.log(readUInt8(buf)); // 30

See the tree-shaking guide for the full list of available functions.

Supported Types

TypeWriteRead
Integers (8/16/32/64)addUInt8, addInt32, ...readUInt8, readInt32, ...
Strings (8/16/32/64)addString8, addString32, ...readString8, readString32, ...
Byte arrays (N/8/16/32/64)addByteArrayN, addByteArray8, ...readByteArrayN, readByteArray8, ...
Typed arrays (8/16/32/64)addArray8, addArray32, ...readArray8, readArray32, ...
BooleanaddBoolreadBool
BigIntaddBigIntreadBigInt
ASCII (N/8/16/32/64)addAscii8, addAsciiN, ...readAscii8, readAsciiN, ...
UTFZaddUtfzreadUtfz
EmbedembedSia, embedBytes-

The number suffix indicates the byte width of the length prefix. N variants take an explicit length with no prefix.

Schema Compiler

Instead of writing serialization code by hand, you can define types in .sia files and generate TypeScript code:

schema User {
  name    string8
  age     uint8
  active  bool
}
npx @timeleap/sia-schema compile user.sia -o user.ts

See sia-schema for details.

Other Languages

Sia has native implementations with the same wire format:

LanguageRepoPackage
Gogo-siagithub.com/TimeleapLabs/go-sia/v2
Pythonpy-siatimeleap-sia
C++cpp-siaCMake

Serialize in TypeScript, deserialize in Go (or any other combination). The wire format is identical across all implementations.

License

ISC

FAQs

Package last updated on 06 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts