skip to the page

All 17 imports

Loom is one package. What you write at the top of a file is one of 17 imports, and which one you write decides what your program loads — so they are worth two minutes before you pick.

Every name behind them is read from the package itself rather than written here, which is why the counts below are exact: 17 imports, 1,298 names, and a page for each import saying what comes out of it.

If you are building a page

Almost every application writes these and nothing else. The first is the tree and the change model; the second renders one; the third is the library of primitives every example on this site is built from.

If you are hosting Loom

The parts an application needs once real people are proposing changes to it: where trees are kept, who is allowed to change them, what a model is asked, and what is written down afterwards.

From a terminal, and from your tests

Not imported by a page. Scaffolding, inspection, and the suites your own storage has to pass.

No import has everything behind it

The usual shape of a package like this is a big import with the whole library behind it and some smaller ones carved out of it for convenience. Loom is not that shape, and the sizes above are where it shows: they add up to more than the package publishes, and the biggest one is still less than half of it.

  • This package publishes 1,298 names in all. The widest door, @jam-overture/loom, publishes 552 of them; the narrowest, @jam-overture/loom/anthropic, publishes 2.
  • There are 136 pairs of imports here, and 131 of them share no name at all. A name you cannot find behind one import is not a name that does not exist — it is almost certainly behind one you have not opened.
  • The 5 pairs that do overlap are these: @jam-overture/loom/signals and @jam-overture/loom/signals/broadcast share 14 names; @jam-overture/loom-primitives/compositions and @jam-overture/loom-primitives share 13 names; @jam-overture/loom and @jam-overture/loom/sdk share 8 names; @jam-overture/loom and @jam-overture/loom/react share 5 names; and @jam-overture/loom/signals and @jam-overture/loom/telemetry share 1 name. Where two doors publish one name, it is the same declaration reached two ways, so either import gives you the same thing.
  • One name here means two different things. horizonOf is published by @jam-overture/loom/signals and by @jam-overture/loom/telemetry, and the two are different functions that happen to share a name. Searching it finds both, and only the signature tells them apart.
  • @jam-overture/loom/signals/broadcast is the one import here that is part of a bigger one: every name it publishes is behind @jam-overture/loom/signals as well. It exists because it loads far less, which is what a browser bundle cares about.

Looking for one particular name? The search at the top of the page indexes every export in the list above and says which import each one comes from — which is the fastest way through a package whose doors do not nest.

Not installed it yet? Installation has the one command, the peers you may also need, and this same list of imports described for somebody who has not met any of them.