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

@altopelago/aeon-sdk

v0.14.0

Published

Public TypeScript SDK facade for AEON document workflows.

Readme

@altopelago/aeon-sdk

Application-facing convenience layer for common AEON read/write flows.

Quick Start

import { aeonToTelex, readAeonChecked, readFilmDocument, readTelexDocumentChecked, writeAeon } from '@altopelago/aeon-sdk';

const parsed = readAeonChecked('greeting:string = "Hello"');
console.log(parsed.finalized.document);

const emitted = writeAeon({ app: 'todo', version: 1 });
console.log(emitted.text);

const wire = aeonToTelex('answer = 42').telex!;
const imported = readTelexDocumentChecked(wire);
console.log(imported.finalized.document);

const film = readFilmDocument(filmBytes);
console.log(film.finalized.document);

Query AEON with SANSA

The optional @altopelago/aeon-sdk/sansa entry point converts compiled AEON events into the resolver namespace expected by @altopelago/sansa:

import { readAeonNamespace } from '@altopelago/aeon-sdk/sansa';
import { evaluateQuery } from '@altopelago/sansa';

const { namespace } = readAeonNamespace(`
  inventory = {
    items = [
      { sku = "A-100" active = true }
      { sku = "B-200" active = false }
    ]
  }
`);

const result = evaluateQuery(
  'from $.inventory.items.* where .active == true select { sku = .sku }',
  namespace,
);

readAeonNamespace() requires successful compilation before returning. It keeps finalization diagnostics alongside the lossless AES-backed namespace, so AEON values that are not representable in strict JSON remain queryable. The namespace exposes payload bindings by default; pass { namespace: { scope: 'header' | 'full' } } to select another document plane. Full scope exposes explicit $.header and $.body roots so valid bindings with the same canonical path in both planes remain independently addressable. Use createAeonNamespace(events) when the source has already been compiled.

Semantics and limits

  • candidateAddress is a locator in the namespace's current structure, not a durable identity. Positional addresses can move after edits. A binding's identity, when present, is separate opaque structural-occurrence metadata; SANSA mutation adapters can combine it with observed-state checks to reject stale targets.
  • AES retains the source numeric lexeme. The namespace exposes finite AEON numbers as canonical strings by default and supplies the same lexeme to SANSA's exact numeric comparator. Pass { numericMaterialization: 'native' } to createAeonNamespace(), or under the namespace option of readAeonNamespace(), to opt into JavaScript numbers while retaining exact comparison metadata.
  • AEON decimal is the representation-preserving radix[10] alias. The adapter keeps its radix payload as text; numeric decimal interpretation and ordering require an explicit trusted value-semantics profile. Radix-family bindings expose their resolved radixBase for decimal, the reserved radix aliases, and radix[2] through radix[64], allowing SANSA's explicit same-base radix-numeric profile to compare them without host-number coercion. They also expose radixScale, the represented fractional digit count excluding visual _ separators: %19.9900 reports 4 and %19.99 reports 2. Scale is representation metadata and does not alter either comparison mode.
  • This integration provides bounded, deterministic, in-process resolution and query evaluation over compiled events. It does not add persistence, indexes, transactions, or a cost-based query optimizer.
  • Query projections use AEON assignment syntax ({ sku = .sku }). : remains reserved for datatype annotations.

What This Package Does

  • wraps common read flows around @altopelago/aeon-core and @altopelago/aeon-finalize
  • wraps object emission via @altopelago/aeon-canonical
  • exposes a canonical-path event index for app code and examples

API

  • readAeon(input, options?)
  • readAeonChecked(input, options?)
  • readAeonStrictCustom(input)
  • writeAeon(object, options?)
  • aeonToTelex(input, options?)
  • readTelex(input, options?)
  • readTelexChecked(input, options?)
  • readTelexDocument(input, options?)
  • readTelexDocumentChecked(input, options?)
  • writeTelex(records, options?)
  • readFilm(input, options?)
  • readFilmDocument(input, options?)
  • formatPath(path)
  • indexEventsByPath(events)
  • createAeonNamespace(events, options?) from @altopelago/aeon-sdk/sansa
  • readAeonNamespace(input, options?) from @altopelago/aeon-sdk/sansa

CreateAeonNamespaceOptions accepts scope and numericMaterialization. The latter is lossless by default and may be set to native explicitly.

Notes

  • Prefer this package for simple application examples.
  • Use @altopelago/aeon-core when you only need compile-only behavior.
  • Use @altopelago/aeon-runtime when you need the full orchestrated runtime pipeline.
  • Film is reader-only. This package deliberately exposes no Film writer or AEON-to-Film conversion helper.
  • aeonicLimits contributes its shared AES structural and processing values to Film. Select Film-local byte ceilings separately with filmLimits.