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

miaottie

v0.0.1

Published

Miaottie is a library for packing and unpacking lottie-json data.

Readme

Miaottie

CN: README_CN.md

A lightweight library to pack and unpack Lottie JSON. It extracts image assets from the Lottie JSON, bundles them into a binary payload, and supports optional compression, lazy asset loading, and running in both browsers and Node.

Features

  • Separates and bundles Lottie assets (base64 or remote) into a binary payload
  • Optional compression: Zstd or Deflate; uses native CompressionStream/DecompressionStream when available, falls back to pako
  • Versioned binary container with a fixed header and metadata for validation and extension
  • Lazy asset loading that creates Blob URLs on demand with a unified cleanup function

Install

npm i miaottie
pnpm add miaottie
yarn add miaottie

Quick Start

Pack a Lottie JSON into binary:

import { MiaottiePacker } from 'miaottie'

const packer = new MiaottiePacker({
  // configure if needed
})

const data: Uint8Array = await packer.pack(lottieJson)

Unpack binary back to a Lottie object:

import { MiaottieLoader, useMiaottieV1Unpacker } from 'miaottie'

const unpacker = await useMiaottieV1Unpacker({ lazyAssets: true })
const loader = new MiaottieLoader({ unpackerArr: [unpacker] })

const { lottie, destoryLottie } = await loader.unpack(data)
destoryLottie()

API Overview

  • MiaottiePacker

    • Constructor options:
      • AllowDownloadPrefix?: string[] default ['http', 'https']
      • CompressType?: 0 | 1 | 2 equals None | Zstd | Deflate
      • CompressLevel?: number ranges: Zstd -13~22, Deflate 1~10
    • Methods:
      • pack(lottie: any): Promise<Uint8Array>
    • Static: VERSION = 1
  • useMiaottieV1Unpacker(options?)

    • options.lazyAssets?: boolean default true
    • Returns { version, handle } for MiaottieLoader
  • MiaottieLoader

    • new MiaottieLoader({ unpackerArr: [unpacker] })
    • unpack(data: Uint8Array) returns { lottie, destoryLottie }

File Format (V1)

The .miaottie file contains:

  • 4-byte header: 0x38 0x35 0x27 0x21
  • 1-byte version
  • Payload encoded by msgpack:
    • c: compression type
    • a: asset array with items { i: string, d: Uint8Array }
    • l: msgpack-ed Lottie JSON without assets

Compatibility & Notes

  • Environments: modern browsers and Node 18+
  • Compression/Decompression: prefers native CompressionStream/DecompressionStream, falls back to pako
  • Zstd: implemented via zstd-codec (WASM) for browsers and Node
  • Remote assets: during pack, assets are downloaded via fetch if allowed by AllowDownloadPrefix; in Node, ensure global fetch or use a polyfill
  • Resource cleanup: call destoryLottie() to release Blob URLs and memory

License

MIT