UNPKG

ruls

Version:

Typesafe rules engine with JSON encoding

16 lines (15 loc) 723 B
import type { Signal, SignalSet } from '../signals'; import type { Infer, Schema } from '@decs/typeschema'; import Rule from './rule'; export type EncodedSignalRule = { [signal: string]: { [operator: string]: unknown; }; }; export default class SignalRule<TContext, TFirst extends Schema, TSecond> extends Rule<TContext> { protected operator: (first: Infer<TFirst>, second: TSecond) => boolean | Promise<boolean>; protected first: Signal<TContext, TFirst>; protected second: TSecond; constructor(operator: (first: Infer<TFirst>, second: TSecond) => boolean | Promise<boolean>, first: Signal<TContext, TFirst>, second: TSecond); encode(signals: SignalSet<TContext>): EncodedSignalRule; }