@marinade.finance/ts-message
v1.0.0-beta.1
Published
Core types and validation for Marinade Messaging Standard.
Readme
ts-message
Core types and validation for Marinade Messaging Standard.
Types
interface Message<T> {
header: Header
payload: T
}
interface Header {
producer_id: string
message_id: string // Producer-generated unique identifier (UUID v4)
created_at: number // Client timestamp (ms)
received_at?: number // Service timestamp (ms), filled on POST
topic?: string
}Validation
import { HeaderValidator } from 'ts-message'
HeaderValidator.validate(header) // Throws on invalidUtilities
import { createMessageSchema, HEADER_SCHEMA } from 'ts-message'
const schema = createMessageSchema(HEADER_SCHEMA, payloadSchema)Usage
Producer:
import type { Message, Header } from 'ts-message'
const message: Message<PayloadType> = {
header: {
producer_id: 'service',
message_id: crypto.randomUUID(),
created_at: Date.now(),
},
payload: {
/* ... */
},
}Consumer:
import { HeaderValidator } from 'ts-message'
import { PayloadValidator } from 'generated-package'
HeaderValidator.validate(message.header)
PayloadValidator.validate(message.payload)