From 1dcdc174361aa1b4675aca6c027452884333950d Mon Sep 17 00:00:00 2001 From: Bryce Thorup Date: Thu, 6 Nov 2025 15:51:16 -0700 Subject: [PATCH] force handler functions --- interactor.js | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/interactor.js b/interactor.js index 88a8b08..e11afeb 100644 --- a/interactor.js +++ b/interactor.js @@ -1,44 +1,44 @@ -import { Stream } from 'stream'; +import { Stream } from "stream"; export class Interactor { - _actions = new Stream(); - _reactions = new Stream(); - _latestReaction; + #actions = new Stream(); + #reactions = new Stream(); + #latestReaction; + #latestReactions = {}; constructor(initialReaction = new Reaction()) { - this._latestReactions = {}; - this._actions.listen((action) => this._interaction(action)); + this.#actions.listen((action) => + this[`handle${action.constructor.name}`](action) + ); this._react(initialReaction); } act(action) { - if (!(action instanceof Action)) throw 'invalid action'; - this._actions.add(action); + if (!(action instanceof Action)) throw "invalid action"; + this.#actions.add(action); } observe(reactionHandler, provideLatestReaction = true) { - if (provideLatestReaction) reactionHandler(this._latestReaction); + if (provideLatestReaction) reactionHandler(this.#latestReaction); let listener = (reaction) => { - if (!(reaction instanceof Reaction)) throw 'invalid reaction'; + if (!(reaction instanceof Reaction)) throw "invalid reaction"; reactionHandler(reaction); }; - this._reactions.listen(listener); + this.#reactions.listen(listener); return listener; } ignore(listener) { - this._reactions.ignore(listener); + this.#reactions.ignore(listener); } - _interaction(action) {} - _react(reaction) { - if (!(reaction instanceof Reaction)) throw 'invalid reaction'; - let latest = this._latestReactions[reaction.constructor.name]; + if (!(reaction instanceof Reaction)) throw "invalid reaction"; + let latest = this.#latestReactions[reaction.constructor.name]; if (!reaction.equals(latest)) { - this._latestReaction = reaction; - this._latestReactions[reaction.constructor.name] = reaction; - this._reactions.add(reaction); + this.#latestReaction = reaction; + this.#latestReactions[reaction.constructor.name] = reaction; + this.#reactions.add(reaction); } } }