#!/usr/bin/env bash declare -A _LOADED_MODULES=() readonly _MODULE_AUTO_LOAD_HOOK="on_load" function module::loaded() { [[ -n "${_LOADED_MODULES["$1"]:-}" ]]; } function module::has_function() { declare -F "${1}::${2}" >/dev/null 2>&1; } function module::is_auto_load() { declare -F "${1}::on_load" >/dev/null 2>&1; } function module::to_namespace() { echo "${1//\//::}"; }