# atom.io/foundations

Source: docs/source/pages/docs/foundations.mdx
URL: /docs/foundations

# <low-emphasis>atom.io</low-emphasis>/foundations

Foundations are low-level utilities that started as internal building blocks and are
stable enough to expose directly as public submodules.

They are not the main mission of atom.io. Most users will spend more time with atoms,
selectors, transactions, timelines, and UI adapters. But when you do want a `Future`,
a `MapOverlay`, a `Canonical` key, or another low-level primitive directly in your own
application, you should be able to import it without feeling like you are reaching into
private machinery.

Foundation modules are public API. They are covered by atom.io's semver contract, and
that contract is checked with [`break-check`](https://www.npmjs.com/package/break-check).

Import each foundation from its own submodule.

## modules

<table-wrapper>

| Export | Description |
| --- | --- |
| `atom.io/foundations/json` | JSON-safe value types and parse/stringify helpers. |
| `atom.io/foundations/canonical` | Canonical key values and compact key packing. |
| `atom.io/foundations/entries` | Typed wrappers for object entries. |
| `atom.io/foundations/enumeration` | Two-way numeric enumerations from string arrays. |
| `atom.io/foundations/type-utils` | Small reusable type helpers. |
| `atom.io/foundations/future` | A promise whose pending value can be replaced. |
| `atom.io/foundations/subject` | Keyed observable subjects. |
| `atom.io/foundations/overlays` | Source-backed Map and Set overlays. |
| `atom.io/foundations/junction` | A bidirectional relation helper for string keys. |

</table-wrapper>
