# @mwillbanks/tuil-registry

Source: /tuil/docs/reference/packages/registry
Locale: en

Source-owned component and block registry contracts for tuil.



## Overview [#overview]

Source-owned component and block registry contracts for tuil.

`@mwillbanks/tuil-registry` is independently installable and also participates in the
umbrella `@mwillbanks/tuil` runtime where applicable.

## Installation [#installation]

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npm install @mwillbanks/tuil-registry
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm add @mwillbanks/tuil-registry
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn add @mwillbanks/tuil-registry
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun add @mwillbanks/tuil-registry
    ```
  </CodeBlockTab>
</CodeBlockTabs>

## How it operates [#how-it-operates]

Registry sources describe source-owned components, blocks, themes, dependencies, files, and integrity metadata. HTTP sources enforce secure URL and package metadata boundaries.

<Mermaid
  chart="flowchart LR
  S0[&#x22;load source&#x22;]
  S1[&#x22;validate manifest&#x22;]
  S2[&#x22;resolve dependencies&#x22;]
  S3[&#x22;verify files&#x22;]
  S4[&#x22;install&#x22;]
  S0 --> S1
  S1 --> S2
  S2 --> S3
  S3 --> S4"
/>

## API [#api]

| API                                                                                                  | Signature                              | Description                                  |
| ---------------------------------------------------------------------------------------------------- | -------------------------------------- | -------------------------------------------- |
| [`applyRegistryCodemods`](/tuil/docs/reference/packages/registry/api/apply-registry-codemods)             | `function applyRegistryCodemods`       | Public function applyRegistryCodemods.       |
| [`createRegistryLockfile`](/tuil/docs/reference/packages/registry/api/create-registry-lockfile)           | `function createRegistryLockfile`      | Public function createRegistryLockfile.      |
| [`FileRegistrySource`](/tuil/docs/reference/packages/registry/api/file-registry-source)                   | `class FileRegistrySource`             | Public class FileRegistrySource.             |
| [`HttpRegistrySource`](/tuil/docs/reference/packages/registry/api/http-registry-source)                   | `class HttpRegistrySource`             | Public class HttpRegistrySource.             |
| [`InstallResult`](/tuil/docs/reference/packages/registry/api/install-result)                              | `interface InstallResult`              | Public interface InstallResult.              |
| [`parseRegistryItem`](/tuil/docs/reference/packages/registry/api/parse-registry-item)                     | `function parseRegistryItem`           | Public function parseRegistryItem.           |
| [`provenanceComment`](/tuil/docs/reference/packages/registry/api/provenance-comment)                      | `function provenanceComment`           | Public function provenanceComment.           |
| [`RegistryClient`](/tuil/docs/reference/packages/registry/api/registry-client)                            | `class RegistryClient`                 | Public class RegistryClient.                 |
| [`RegistryCodemod`](/tuil/docs/reference/packages/registry/api/registry-codemod)                          | `interface RegistryCodemod`            | Public interface RegistryCodemod.            |
| [`registryCompatibilityIssues`](/tuil/docs/reference/packages/registry/api/registry-compatibility-issues) | `function registryCompatibilityIssues` | Public function registryCompatibilityIssues. |
| [`RegistryDiff`](/tuil/docs/reference/packages/registry/api/registry-diff)                                | `interface RegistryDiff`               | Public interface RegistryDiff.               |
| [`RegistryFile`](/tuil/docs/reference/packages/registry/api/registry-file)                                | `interface RegistryFile`               | Public interface RegistryFile.               |
| [`RegistryIndexEntry`](/tuil/docs/reference/packages/registry/api/registry-index-entry)                   | `interface RegistryIndexEntry`         | Public interface RegistryIndexEntry.         |
| [`RegistryInstaller`](/tuil/docs/reference/packages/registry/api/registry-installer)                      | `class RegistryInstaller`              | Public class RegistryInstaller.              |
| [`RegistryInstallOptions`](/tuil/docs/reference/packages/registry/api/registry-install-options)           | `interface RegistryInstallOptions`     | Public interface RegistryInstallOptions.     |
| [`registryIntegrity`](/tuil/docs/reference/packages/registry/api/registry-integrity)                      | `function registryIntegrity`           | Public function registryIntegrity.           |
| [`RegistryItem`](/tuil/docs/reference/packages/registry/api/registry-item)                                | `interface RegistryItem`               | Public interface RegistryItem.               |
| [`RegistryItemType`](/tuil/docs/reference/packages/registry/api/registry-item-type)                       | `type RegistryItemType`                | Public type RegistryItemType.                |
| [`RegistryLockfile`](/tuil/docs/reference/packages/registry/api/registry-lockfile)                        | `interface RegistryLockfile`           | Public interface RegistryLockfile.           |
| [`RegistrySource`](/tuil/docs/reference/packages/registry/api/registry-source)                            | `interface RegistrySource`             | Public interface RegistrySource.             |
| [`RegistryTransformOptions`](/tuil/docs/reference/packages/registry/api/registry-transform-options)       | `interface RegistryTransformOptions`   | Public interface RegistryTransformOptions.   |
| [`RemoveResult`](/tuil/docs/reference/packages/registry/api/remove-result)                                | `interface RemoveResult`               | Public interface RemoveResult.               |
| [`verifyRegistryLockfile`](/tuil/docs/reference/packages/registry/api/verify-registry-lockfile)           | `function verifyRegistryLockfile`      | Public function verifyRegistryLockfile.      |

## Events and lifecycle [#events-and-lifecycle]

Registry resolution returns explicit results and diagnostics. It does not emit runtime application events.

All subscriptions and registrations return a disposer or belong to an owning
runtime that disposes them in reverse order.

## Example [#example]

```tsx
import { HttpRegistrySource } from "@mwillbanks/tuil-registry";

const source = new HttpRegistrySource("official", "https://example.com/registry");
```

## Related [#related]

* [Package architecture](/tuil/docs/concepts/packages)
* [Events](/tuil/docs/concepts/events)
* [Testing](/tuil/docs/guides/testing)
