Files
welshman/docs/store/index.md
T
2025-06-11 15:12:12 -07:00

1.4 KiB

@welshman/store

version

A utility package providing welshman-specific svelte store functionality and utilities for managing state. While it's primarily built for use with Svelte's store system, the concepts could be valuable for developers familiar with reactive programming patterns like RxJS.

What's Included

  • Basic Utilities - Enhanced stores with persistence, throttling, and getter methods
  • Event-Based Stores - Specialized stores for working with nostr events and repositories
  • Custom Adapters - Two-way data transformation with maintained reactivity
  • Persistence Layer - Automatic localStorage synchronization
  • Performance Optimizations - Throttled updates and efficient subscription management

Quick Example

import {Repository, NAMED_PEOPLE, TrustedEvent, PublishedList, readList} from '@welshman/util'
import {deriveEventsMapped} from '@welshman/store'

const repository = new Repository()

// Create a store that performantly maps matching events in the repository to List objects
const lists = deriveEventsMapped<PublishedList>(repository, {
  filters: [{kinds: [NAMED_PEOPLE]}],
  eventToItem: (event: TrustedEvent) => (event.tags.length > 1 ? readList(event) : null),
  itemToEvent: (list: PublishedList) => list.event,
})

Installation

npm install @welshman/store