Skip to content

Cratis/Chronicle.TypeScript

Chronicle TypeScript Client

A TypeScript-idiomatic client for Cratis Chronicle — the open source event-sourcing kernel.

Overview

@cratis/chronicle provides a clean, type-safe TypeScript API for interacting with the Chronicle Kernel. It builds on top of @cratis/chronicle.contracts (the gRPC contracts package) and exposes idiomatic TypeScript constructs including:

  • Decorators@eventType, @readModel, @reactor, @reducer, @constraint, @projection, and model-bound decorators such as @fromEvent
  • Value objectsEventSequenceNumber, EventTypeId, EventStoreName, etc.
  • Fluent clientChronicleClientEventStoreEventLogappend()

Structure

Source/          ← @cratis/chronicle TypeScript library
Documentation/   ← User-facing documentation
Samples/
  Console/       ← Plain Node.js console sample application

Prerequisite: Chronicle Running

You need a Chronicle Kernel available before running samples or application code.

The easiest local setup is the development Docker image:

docker run -p 35000:35000 -p 8080:8080 cratis/chronicle:latest-development

Getting Started

See Documentation/getting-started.md for installation and usage instructions.

Quick Example

import 'reflect-metadata';
import { ChronicleClient, ChronicleOptions, eventType } from '@cratis/chronicle';

@eventType()
class EmployeeHired {
    constructor(readonly firstName: string, readonly lastName: string) {}
}

const client = new ChronicleClient(ChronicleOptions.development());
const store = await client.getEventStore('MyStore');
const result = await store.eventLog.append('employee-123', new EmployeeHired('Jane', 'Doe'));
console.log(`Appended at sequence number ${result.sequenceNumber.value}`);
client.dispose();

Building

yarn install
yarn workspace @cratis/chronicle compile

Running the Console Sample

yarn install
yarn workspace @cratis/chronicle-test-console build
yarn workspace @cratis/chronicle-test-console start

Set the CHRONICLE_CONNECTION environment variable to override the default connection string (chronicle://localhost:35000).

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors