Skip to main content

@happyvertical/smrt-types

Shared TypeScript type definitions for the s-m-r-t framework. Prevents circular dependencies by centralizing types that multiple packages need.

Installation

pnpm add @happyvertical/smrt-types

Usage

// Import types (use `import type` for type-only imports)
import type { Signal, SignalType, SignalAdapter } from '@happyvertical/smrt-types';
import type { SmrtModuleMeta, ModuleUISlot } from '@happyvertical/smrt-types';

// Enums have runtime values — use regular import
import { UserStatus, TenantStatus, MembershipStatus } from '@happyvertical/smrt-types';

Exports

Signal System (types)

ExportDescription
SignalSignal payload with lifecycle info (id, className, method, duration, etc.)
SignalTypeSignal lifecycle stage: 'start' | 'step' | 'end' | 'error'
SignalAdapterInterface for signal processors (logging, metrics, pub/sub)

Module UI (types)

ExportDescription
SmrtModuleMetaModule metadata (name, version, description)
ModuleUISlotUI slot definition for module admin panels
ModuleComponentTypeComponent type classification
ModuleUIBasePropsBase props interface for module UI components
ModuleUIRegistryInterfaceRegistry interface for module UI registration

Bounded Data Queries (types)

ExportDescription
DataQueryRequest / DataQueryResultSerializable, transport-neutral bounded query and normalized result envelopes
DataQuerySchema / DataQueryFieldDescriptorTrusted adapter allowlist for projection, filter, sort, and facet capabilities
DataQueryFilter / DataQuerySort / DataQueryPageTyped predicates, deterministic sort terms, and cursor/offset paging
DataQueryTotal / DataQueryFreshnessExplicit total exactness/as-of semantics and response freshness

User/Tenant Status (enums — runtime values)

ExportDescription
UserStatusUser lifecycle status
TenantStatusTenant lifecycle status
MembershipStatusMembership lifecycle status
SessionStatusSession lifecycle status
OverrideEffectPermission override effect
TenantPermissionEffectTenant-level permission effect

Rules

  • Zero runtime code except enums (which require runtime values)
  • Use import type for non-enum imports to avoid unnecessary runtime dependencies
  • Add shared types here if two or more packages need the same type definition

Dependencies

None. This is a leaf package with zero dependencies.