TypeScript: @dnsid-ai/sdk/node
Node.js conveniences for DNSid — the @dnsid-ai/sdk/node subpath.
Provides LocalKeyProvider (filesystem-backed key storage), the configuration loaders
(loadEnvironment, loadFile, loadCliDirectory → mergeLoadedConfig → constructIdentityManager),
the one-call createNodeIdentityManagerFromEnvironment / createNodeIdentityManagerFromDnsid /
createNodeIdentityManagerFromFile constructors, and createNodeIdentityManager, which
defaults DNS resolution and HTTPS JSON fetching to the optional @dnsid-ai/transport peer.
Loaders parse; constructors default. No constructor reads the environment or files.
The system resolver reports DNSSEC state UNKNOWN; the default auto policy accepts
and preserves that state, while stricter policies require a DNSSEC-aware resolver.
Classes
Section titled “Classes”LocalKeyProvider
Section titled “LocalKeyProvider”Defined in: packages/sdk/src/local-key-provider.ts:38
File-backed KeyProvider that stores Ed25519 or ECDSA P-256 keys as a JSON file.
This concrete key-storage implementation is provided by @dnsid-ai/sdk as the default developer/runtime key provider.
Use only one provider instance/process per file. Mutations within an instance are serialized.
Writes require filesystem support for atomic rename, hard links, and directory fsync.
Existing symlinks are resolved at load time; <resolvedPath>.bak holds the private previous generation.
A failure after replacement may mean the new state is visible but not crash-durable;
memory follows the visible file. Inspect the store before retrying a failed mutation.
Implements
Section titled “Implements”Methods
Section titled “Methods”activate()
Section titled “activate()”activate(kid): Promise<void>;Defined in: packages/sdk/src/local-key-provider.ts:145
Promotes a pending key to active. The previously active key transitions to retained.
Parameters
Section titled “Parameters”string
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”generateKey()
Section titled “generateKey()”generateKey(): Promise<string>;Defined in: packages/sdk/src/local-key-provider.ts:137
Generates a new key pair in the pending state. Returns the new key’s kid.
Returns
Section titled “Returns”Promise<string>
Implementation of
Section titled “Implementation of”jwk(kid): Promise<DnsIdJWK>;Defined in: packages/sdk/src/local-key-provider.ts:112
Returns the JWK representation of a key by ID (active, pending, or retained). Raises if not found.
Parameters
Section titled “Parameters”string
Returns
Section titled “Returns”Promise<DnsIdJWK>
Implementation of
Section titled “Implementation of”listKeyIds()
Section titled “listKeyIds()”listKeyIds(): Promise<string[]>;Defined in: packages/sdk/src/local-key-provider.ts:121
Returns the IDs of all active and retained keys (pending keys excluded). The active key ID MUST appear first; retained keys follow in any order.
Returns
Section titled “Returns”Promise<string[]>
Implementation of
Section titled “Implementation of”purge()
Section titled “purge()”purge(kid): Promise<void>;Defined in: packages/sdk/src/local-key-provider.ts:167
Parameters
Section titled “Parameters”string
Returns
Section titled “Returns”Promise<void>
Deprecated
Section titled “Deprecated”Use supersede().
Implementation of
Section titled “Implementation of”sign()
Section titled “sign()”sign(payload): Promise<Uint8Array<ArrayBufferLike>>;Defined in: packages/sdk/src/local-key-provider.ts:125
Signs the given payload with the current active signing key. Returns raw signature bytes.
Parameters
Section titled “Parameters”payload
Section titled “payload”Uint8Array
Returns
Section titled “Returns”Promise<Uint8Array<ArrayBufferLike>>
Implementation of
Section titled “Implementation of”signingKey()
Section titled “signingKey()”signingKey(): Promise<DnsIdJWK>;Defined in: packages/sdk/src/local-key-provider.ts:108
Returns the JWK representation of the current active public signing key. The returned kid MUST NOT contain ’#’.
Returns
Section titled “Returns”Promise<DnsIdJWK>
Implementation of
Section titled “Implementation of”signKey()
Section titled “signKey()”signKey(kid, payload): Promise<Uint8Array<ArrayBufferLike>>;Defined in: packages/sdk/src/local-key-provider.ts:129
Signs with a specified active or pending key.
Parameters
Section titled “Parameters”string
payload
Section titled “payload”Uint8Array
Returns
Section titled “Returns”Promise<Uint8Array<ArrayBufferLike>>
Implementation of
Section titled “Implementation of”supersede()
Section titled “supersede()”supersede(kid): Promise<void>;Defined in: packages/sdk/src/local-key-provider.ts:155
Supersedes and removes a retained key from this provider’s published key set.
Parameters
Section titled “Parameters”string
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”fromDirectory()
Section titled “fromDirectory()”static fromDirectory(dir): Promise<LocalKeyProvider>;Defined in: packages/sdk/src/local-key-provider.ts:81
Parameters
Section titled “Parameters”string
Returns
Section titled “Returns”Promise<LocalKeyProvider>
fromDomain()
Section titled “fromDomain()”static fromDomain(domain, dnsidDir?): Promise<LocalKeyProvider>;Defined in: packages/sdk/src/local-key-provider.ts:104
Parameters
Section titled “Parameters”domain
Section titled “domain”string
dnsidDir?
Section titled “dnsidDir?”string = ...
Returns
Section titled “Returns”Promise<LocalKeyProvider>
fromFile()
Section titled “fromFile()”static fromFile(filePath): Promise<LocalKeyProvider>;Defined in: packages/sdk/src/local-key-provider.ts:98
Loads a single private JWK file, including DNSid CLI entity_key_path files.
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
Returns
Section titled “Returns”Promise<LocalKeyProvider>
generate()
Section titled “generate()”static generate(algorithm?): Promise<LocalKeyProvider>;Defined in: packages/sdk/src/local-key-provider.ts:77
Parameters
Section titled “Parameters”algorithm?
Section titled “algorithm?”LocalKeyAlgorithm = 'EdDSA'
Returns
Section titled “Returns”Promise<LocalKeyProvider>
load()
Section titled “load()”static load( filePath, createIfMissing?, algorithm?): Promise<LocalKeyProvider>;Defined in: packages/sdk/src/local-key-provider.ts:49
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
createIfMissing?
Section titled “createIfMissing?”boolean = false
algorithm?
Section titled “algorithm?”LocalKeyAlgorithm = 'EdDSA'
Returns
Section titled “Returns”Promise<LocalKeyProvider>
Interfaces
Section titled “Interfaces”KeySource
Section titled “KeySource”Defined in: packages/sdk/src/config-loading.ts:49
Properties
Section titled “Properties”cliDirectory?
Section titled “cliDirectory?”optional cliDirectory?: string;Defined in: packages/sdk/src/config-loading.ts:51
DNSid CLI identity directory; key files are located under the effective identity domain.
entityKeyPath?
Section titled “entityKeyPath?”optional entityKeyPath?: string;Defined in: packages/sdk/src/config-loading.ts:53
Accountable-entity private JWK file.
keyStorePath?
Section titled “keyStorePath?”optional keyStorePath?: string;Defined in: packages/sdk/src/config-loading.ts:55
LocalKeyProvider key-store file; used only when cliDirectory is absent.
LoadedConfig
Section titled “LoadedConfig”Defined in: packages/sdk/src/config-loading.ts:68
Partial configuration from one source. Every field is present only when sourced.
Properties
Section titled “Properties”dnsid?
Section titled “dnsid?”optional dnsid?: LoadedDnsidConfig;Defined in: packages/sdk/src/config-loading.ts:69
keySource?
Section titled “keySource?”optional keySource?: KeySource;Defined in: packages/sdk/src/config-loading.ts:72
logTrust?
Section titled “logTrust?”optional logTrust?: LogTrust;Defined in: packages/sdk/src/config-loading.ts:70
registry?
Section titled “registry?”optional registry?: LoadedRegistryConfig;Defined in: packages/sdk/src/config-loading.ts:71
LoadedDnsidConfig
Section titled “LoadedDnsidConfig”Defined in: packages/sdk/src/config-loading.ts:63
DnsidConfig with a partial identity: sources may supply some publication fields and leave the rest to an overlay.
Extends
Section titled “Extends”Omit<DnsidConfig,"identity">
Properties
Section titled “Properties”identity?
Section titled “identity?”optional identity?: Partial<IdentityConfig>;Defined in: packages/sdk/src/config-loading.ts:64
transport?
Section titled “transport?”optional transport?: TransportConfig;Defined in: packages/protocol/src/types.ts:128
Inherited from
Section titled “Inherited from”verification?
Section titled “verification?”optional verification?: VerificationConfig;Defined in: packages/protocol/src/types.ts:127
Inherited from
Section titled “Inherited from”LoadedRegistryConfig
Section titled “LoadedRegistryConfig”Defined in: packages/sdk/src/config-loading.ts:58
Properties
Section titled “Properties”registryUrl?
Section titled “registryUrl?”optional registryUrl?: string;Defined in: packages/sdk/src/config-loading.ts:59
LogTrust
Section titled “LogTrust”Defined in: packages/sdk/src/config-loading.ts:38
Log trust for deps.logRegistry; exactly one variant is required at construction.
Properties
Section titled “Properties”managed?
Section titled “managed?”optional managed?: boolean;Defined in: packages/sdk/src/config-loading.ts:40
true selects the embedded DNSid-managed catalog.
policyDocument?
Section titled “policyDocument?”optional policyDocument?: Uint8Array<ArrayBufferLike>;Defined in: packages/sdk/src/config-loading.ts:44
Trusted C2SP tlog-policy bytes.
policyUrl?
Section titled “policyUrl?”optional policyUrl?: string;Defined in: packages/sdk/src/config-loading.ts:46
Trusted C2SP tlog-policy HTTPS URL.
profile?
Section titled “profile?”optional profile?: Record<string, unknown>;Defined in: packages/sdk/src/config-loading.ts:42
dnsid-c2sp-tlog-trust-profile@v1 document (parsed JSON).
Type Aliases
Section titled “Type Aliases”EnvironmentSource
Section titled “EnvironmentSource”type EnvironmentSource = Readonly<Record<string, string | undefined>>;Defined in: packages/sdk/src/config-loading.ts:35
LocalKeyAlgorithm
Section titled “LocalKeyAlgorithm”type LocalKeyAlgorithm = "EdDSA" | "ES256";Defined in: packages/sdk/src/local-key-provider.ts:16
Functions
Section titled “Functions”constructIdentityManager()
Section titled “constructIdentityManager()”function constructIdentityManager(loaded, deps?): Promise<IdentityManager>;Defined in: packages/sdk/src/config-loading.ts:297
Fills deps.logRegistry from logTrust and key providers from keySource only when the caller
did not supply them, then calls createNodeIdentityManager. Adds no configuration values.
Parameters
Section titled “Parameters”loaded
Section titled “loaded”IdentityManagerDependencies = {}
Returns
Section titled “Returns”Promise<IdentityManager>
createNodeIdentityManager()
Section titled “createNodeIdentityManager()”function createNodeIdentityManager(config, deps?): Promise<IdentityManager>;Defined in: packages/sdk/src/node-identity-manager.ts:32
Creates an IdentityManager with Node.js DNS and HTTPS defaults.
config.transport configures only the SDK-managed defaults: dnsServer applies to whichever of
dnsResolver/fetchJson is not injected and is rejected when both are; caBundlePath and
privateAddressHosts apply to the default fetcher and are rejected when fetchJson is injected. Injected dependencies are never
inspected or modified. @dnsid-ai/transport is an optional peer; install it or inject both
dependencies. The system resolver reports UNKNOWN; validated/required DNSSEC modes need a
DNSSEC-aware resolver.
Parameters
Section titled “Parameters”config
Section titled “config”IdentityManagerDependencies = {}
Returns
Section titled “Returns”Promise<IdentityManager>
Example
Section titled “Example”import { createNodeIdentityManager, LocalKeyProvider } from '@dnsid-ai/sdk/node';
const keyProvider = await LocalKeyProvider.load('.dnsid/keys.json', true);const idm = await createNodeIdentityManager({ identity, verification }, { keyProvider, entityKeyProvider });createNodeIdentityManagerFromDnsid()
Section titled “createNodeIdentityManagerFromDnsid()”function createNodeIdentityManagerFromDnsid( dnsidDir?, overlay?, deps?): Promise<IdentityManager>;Defined in: packages/sdk/src/config-loading.ts:361
Parameters
Section titled “Parameters”dnsidDir?
Section titled “dnsidDir?”string
overlay?
Section titled “overlay?”Returns
Section titled “Returns”Promise<IdentityManager>
createNodeIdentityManagerFromEnvironment()
Section titled “createNodeIdentityManagerFromEnvironment()”function createNodeIdentityManagerFromEnvironment( env?, overlay?, deps?): Promise<IdentityManager>;Defined in: packages/sdk/src/config-loading.ts:357
Parameters
Section titled “Parameters”Readonly<Record<string, string | undefined>>
overlay?
Section titled “overlay?”Returns
Section titled “Returns”Promise<IdentityManager>
createNodeIdentityManagerFromFile()
Section titled “createNodeIdentityManagerFromFile()”function createNodeIdentityManagerFromFile( filePath, overlay?, deps?): Promise<IdentityManager>;Defined in: packages/sdk/src/config-loading.ts:365
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
overlay?
Section titled “overlay?”Returns
Section titled “Returns”Promise<IdentityManager>
createNodeIdentityVerifier()
Section titled “createNodeIdentityVerifier()”function createNodeIdentityVerifier(config?, deps?): Promise<IdentityManager>;Defined in: packages/sdk/src/node-identity-manager.ts:53
Creates a verification-only IdentityManager with Node.js DNS and HTTPS defaults (config.identity omitted).
Parameters
Section titled “Parameters”config?
Section titled “config?”Omit<DnsidConfig, "identity"> = {}
Omit<IdentityManagerDependencies, "keyProvider" | "entityKeyProvider"> = {}
Returns
Section titled “Returns”Promise<IdentityManager>
createRegistryClientFromEnvironment()
Section titled “createRegistryClientFromEnvironment()”function createRegistryClientFromEnvironment(env?): Promise<RegistryClient>;Defined in: packages/sdk/src/config-loading.ts:370
RegistryClient from DNSID_REGISTRY_URL and DNSID_API_KEY; the constructor defaults to the local registry.
Parameters
Section titled “Parameters”Readonly<Record<string, string | undefined>>
Returns
Section titled “Returns”Promise<RegistryClient>
loadCliDirectory()
Section titled “loadCliDirectory()”function loadCliDirectory(dnsidDir?): Promise<LoadedConfig>;Defined in: packages/sdk/src/config-loading.ts:226
Reads a DNSid CLI directory (~/.dnsid by default): config.json, following a root domain
pointer to <domain>/config.json when that file exists. Maps the snake_case publication fields
into dnsid.identity and records the directory (and resolved entity_key_path) as keySource.
Never consults DNSID_CONFIG_DIR.
Parameters
Section titled “Parameters”dnsidDir?
Section titled “dnsidDir?”string = ...
Returns
Section titled “Returns”Promise<LoadedConfig>
loadEnvironment()
Section titled “loadEnvironment()”function loadEnvironment(env?): Promise<LoadedConfig>;Defined in: packages/sdk/src/config-loading.ts:90
Reads configuration from DNSID_*. Secrets such as DNSID_API_KEY stay out of LoadedConfig.
Parameters
Section titled “Parameters”EnvironmentSource = process.env
Returns
Section titled “Returns”Promise<LoadedConfig>
loadFile()
Section titled “loadFile()”function loadFile(filePath): Promise<LoadedConfig>;Defined in: packages/sdk/src/config-loading.ts:137
Reads a JSON deployment file: { dnsid?, logTrust?, registry? }. Unknown members, mistyped
values, and duplicate members are rejected; semantic dnsid validation stays with the constructor.
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
Returns
Section titled “Returns”Promise<LoadedConfig>
mergeLoadedConfig()
Section titled “mergeLoadedConfig()”function mergeLoadedConfig(base, overlay): LoadedConfig;Defined in: packages/sdk/src/config-loading.ts:265
Field-wise merge; presence wins, not truthiness. Lists replace. logTrust is replaced as a
whole section when overlay sets any variant.
Parameters
Section titled “Parameters”overlay
Section titled “overlay”Returns
Section titled “Returns”References
Section titled “References”CreateIdentityManagerDependencies
Section titled “CreateIdentityManagerDependencies”Re-exports CreateIdentityManagerDependencies