ruls
Version:
Typesafe rules engine with JSON encoding
16 lines (15 loc) • 723 B
TypeScript
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;
}