19 #ifndef IRCCD_JS_PLUGIN_HPP
20 #define IRCCD_JS_PLUGIN_HPP
27 #include <irccd/daemon/plugin.hpp>
28 #include <irccd/daemon/server.hpp>
49 static inline const std::string_view
config_property{DUK_HIDDEN_SYMBOL(
"config")};
59 static inline const std::string_view
paths_property{DUK_HIDDEN_SYMBOL(
"paths")};
70 template <typename Value, typename... Args>
71 void push(Value&& value, Args&&... args);
73 template <typename... Args>
74 void call(const
std::
string&, Args&&... args);
253 using modules = std::vector<std::unique_ptr<api>>;
268 std::vector<std::string> directories = {},
269 std::vector<std::string> extensions = {
".js"}) noexcept;
281 auto get_modules() const noexcept -> const
modules&;
316 #endif // !IRCCD_PLUGIN_JS_HPP
void handle_mode(daemon::bot &bot, const daemon::mode_event &event) override
auto get_paths() const -> map override
void handle_disconnect(daemon::bot &bot, const daemon::disconnect_event &event) override
void handle_load(daemon::bot &bot) override
void set_options(const map &map) override
void handle_message(daemon::bot &bot, const daemon::message_event &event) override
void handle_nick(daemon::bot &bot, const daemon::nick_event &event) override
void set_templates(const map &map) override
void handle_names(daemon::bot &bot, const daemon::names_event &event) override
auto get_templates() const -> map override
void handle_invite(daemon::bot &bot, const daemon::invite_event &event) override
void handle_whois(daemon::bot &bot, const daemon::whois_event &event) override
Abstract plugin.
Definition: plugin.hpp:61
Javascript namespace.
Definition: api.hpp:42
void handle_part(daemon::bot &bot, const daemon::part_event &event) override
auto get_version() const noexcept -> std::string_view override
std::variant< std::monostate, connect_event, disconnect_event, invite_event, join_event, kick_event, me_event, message_event, mode_event, names_event, nick_event, notice_event, part_event, topic_event, whois_event > event
Store all possible events.
Definition: server.hpp:247
void handle_notice(daemon::bot &bot, const daemon::notice_event &event) override
std::vector< std::unique_ptr< api > > modules
The list of Javascript API modules.
Definition: plugin.hpp:253
Javascript plugins for irccd.
Definition: plugin.hpp:44
auto get_license() const noexcept -> std::string_view override
auto get_author() const noexcept -> std::string_view override
auto get_context() noexcept -> duk::context &
void handle_join(daemon::bot &bot, const daemon::join_event &event) override
void set_paths(const map &map) override
RAII based Duktape handler.
Definition: duk.hpp:95
Irccd main instance.
Definition: bot.hpp:58
auto get_name() const noexcept -> std::string_view override
void handle_command(daemon::bot &bot, const daemon::message_event &event) override
static const std::string_view templates_property
Definition: plugin.hpp:54
plugin_loader(daemon::bot &bot, std::vector< std::string > directories={}, std::vector< std::string > extensions={".js"}) noexcept
auto get_options() const -> map override
void handle_reload(daemon::bot &bot) override
Object for Javascript to perform I/O.
Definition: file_api.hpp:56
std::unordered_map< std::string, std::string > map
Definition: plugin.hpp:68
Implementation for searching Javascript plugins.
Definition: plugin.hpp:248
auto get_summary() const noexcept -> std::string_view override
static void push(duk_context *ctx, const daemon::whois_info &who)
static const std::string_view config_property
Definition: plugin.hpp:49
static const std::string_view paths_property
Definition: plugin.hpp:59
void handle_connect(daemon::bot &bot, const daemon::connect_event &event) override
void handle_me(daemon::bot &bot, const daemon::me_event &event) override
void handle_kick(daemon::bot &bot, const daemon::kick_event &event) override
Describe a whois information.
Definition: server.hpp:72
~plugin_loader() noexcept
void handle_topic(daemon::bot &bot, const daemon::topic_event &event) override
void handle_unload(daemon::bot &bot) override
Operations on different types.
Definition: duk.hpp:254