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

@fabricorg/adoption-bindings

v0.2.2

Published

Validates a vertical's adoption binding against a capability's published usage contract.

Readme

@fabricorg/adoption-bindings

Validates a vertical's adoption binding against a capability's published usage contract.

A capability publishes what it needs filled — roles, extension slots, action intents, data shapes. A vertical adopts it by declaring a binding: which component fills each role, which fragment fills each slot, which actions it overrides, how it maps data. This package checks that the binding actually satisfies the contract, so adopting a capability is a reviewed pull request rather than a runtime surprise.

pnpm add -D @fabricorg/adoption-bindings
import { assertBindingValid } from "@fabricorg/adoption-bindings";

assertBindingValid({ contract, binding, packs, coreComponents });

validateBinding returns every finding rather than the first, so one CI run tells a vertical everything it has to change. assertBindingValid throws with each finding's path listed, for use as a build step.

What it checks

  • Every role the capability declares is bound, and no binding invents a role it does not.
  • A bound component resolves — in a registered pack, or in the core vocabulary — and a pack component declares role:<name> for the role it fills.
  • A slot fill names a declared slot and resolves to a view some known capability publishes.
  • An action override targets an intent the capability actually dispatches.
  • A data map names a view the capability publishes, and maps fields that exist in its shape.

Where this sits

This is enterprise-layer tooling. It consumes Fabric contracts; it is not part of Fabric. Per ADR 0011 no Fabric package defines a binding schema, validates a binding, or knows that bindings exist — the usage contract is Fabric's, the binding is the vertical's, and this package is the seam between them.

It ships from this repository alongside the other separately-versioned build-time tools, in the same integration tier as @fabricorg/gen-sdui. What matters is that the governance core and its hosts never interpret a binding — which the Boundary Guard enforces per package, not per repository.