Skip to content

EntityDefinition

Defines an entity type's schema, state, and handler. Passed to registry.define() or defineEntity().

Source: @durable-streams/darix-runtime

ts
interface EntityDefinition {
  description?: string
  state?: Record<string, CollectionDefinition>
  actions?: (
    collections: Record<string, unknown>
  ) => Record<string, (...args: unknown[]) => void>
  creationSchema?: StandardJSONSchemaV1
  inboxSchemas?: Record<string, StandardJSONSchemaV1>
  outputSchemas?: Record<string, StandardJSONSchemaV1>
  handler(ctx: HandlerContext, wake: WakeEvent): void | Promise<void>
}

Fields

FieldTypeRequiredDescription
descriptionstringNoHuman-readable description of the entity type. Used in type registration.
stateRecord<string, CollectionDefinition>NoCustom state collections exposed via ctx.db.actions (writes) and ctx.db.collections (reads).
actions(collections) => Record<string, (...args) => void>NoFactory for custom CRUD actions. Receives TanStack DB collections, returns named action functions.
creationSchemaStandardJSONSchemaV1NoJSON Schema for spawn arguments validation.
inboxSchemasRecord<string, StandardJSONSchemaV1>NoJSON Schemas for inbound message types, keyed by message type.
outputSchemasRecord<string, StandardJSONSchemaV1>NoJSON Schemas for output event types. Defaults are provided by the runtime.
handler(ctx, wake) => void | Promise<void>YesThe function invoked on each wake. Receives HandlerContext and WakeEvent.

CollectionDefinition

Defines a custom state collection.

ts
interface CollectionDefinition {
  schema?: StandardSchemaV1
  type?: string
  primaryKey?: string
}
FieldTypeDefaultDescription
schemaStandardSchemaV1-Zod or Standard Schema validator for the row type.
typestring"state:{name}"Event type string used in the durable stream.
primaryKeystring"key"Primary key field name on the row.