Files
wehub-resource-sync b3a7f98e5a
CI / E2E Cloudflare (4/8) (push) Failing after 0s
CI / E2E Cloudflare (8/8) (push) Failing after 1s
CI / Lint (push) Failing after 1s
Auto Extract / Extract (push) Failing after 4s
CI / Version Check (push) Failing after 9s
CI / Integration Tests (push) Failing after 1s
CI / E2E tests (1/8) (push) Failing after 1s
CI / E2E tests (2/8) (push) Failing after 2s
CI / E2E tests (3/8) (push) Failing after 2s
CI / Browser Tests (push) Failing after 1s
CI / E2E tests (5/8) (push) Failing after 1s
CI / E2E Cloudflare (2/8) (push) Failing after 2s
CI / Typecheck (push) Failing after 1s
CI / Changeset Validation (push) Failing after 2s
CI / E2E Cloudflare (5/8) (push) Failing after 1s
CI / E2E Cloudflare (6/8) (push) Failing after 1s
CI / E2E Cloudflare (7/8) (push) Failing after 1s
CodeQL / Analyze (javascript-typescript) (push) Failing after 1s
Format / Format (push) Failing after 0s
CodeQL / Analyze (actions) (push) Failing after 4s
CI / E2E tests (4/8) (push) Failing after 1s
CI / E2E tests (6/8) (push) Failing after 1s
CI / E2E tests (7/8) (push) Failing after 2s
CI / E2E tests (8/8) (push) Failing after 1s
CI / E2E Cloudflare (1/8) (push) Failing after 1s
CI / E2E Cloudflare (3/8) (push) Failing after 2s
Preview Releases / Publish Preview (push) Failing after 0s
zizmor / Run zizmor (push) Failing after 1s
Release / Release (push) Failing after 2s
CI / Smoke Tests (push) Failing after 5m36s
CI / Tests (push) Failing after 6m36s
Release / Sync Templates (push) Has been skipped
CI / E2E Tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:23:53 +08:00
..

@emdash-cms/registry-client

Atproto-aware client for the EmDash plugin registry.

EXPERIMENTAL: targets com.emdashcms.experimental.* and the experimental aggregator. Pin to an exact version while RFC 0001 is in flight.

Layers

This package is split into three independent surfaces. Import only the one you need.

Credentials (@emdash-cms/registry-client/credentials)

Persists a publisher's atproto session between CLI invocations. Three implementations:

  • FileCredentialStore -- ~/.emdash/credentials.json, mode 0600. Atomic writes via temp-file rename. Default for interactive use.
  • EnvCredentialStore -- read-only, reads EMDASH_PUBLISHER_* env vars. Use in CI.
  • MemoryCredentialStore -- in-memory, for tests.

defaultCredentialStore() picks the env store if the env vars are set, otherwise the file store.

Publishing (@emdash-cms/registry-client/publishing)

Repo operations against the publisher's own PDS: putRecord, uploadBlob, getRecord, listRecords. Used by the CLI's emdash-plugin publish flow.

The interactive OAuth flow lives in the CLI, not here. This module accepts a pre-built atproto fetch handler (typically from @atcute/oauth-node-client) and wraps it with operations scoped to atproto repo NSIDs.

Discovery (@emdash-cms/registry-client/discovery)

Read-only XRPC client over an aggregator. No authentication. Used by the CLI (emdash-plugin search, emdash-plugin info) and the EmDash admin UI's install flow.

The acceptLabelers option threads the atproto-accept-labelers request header through every call so callers can configure which labellers' hard-takedown labels the aggregator should apply.

Stability

While 0.x:

  • The interactive-login flow (CLI integration) is intentionally not implemented in this package and may move elsewhere.
  • Credential file format may evolve; the on-disk envelope carries a version field for forward compatibility.
  • NSIDs and lexicon shapes track @emdash-cms/registry-lexicons.