diff --git a/src/index.ts b/src/index.ts index 60d818b..7ef84cd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,7 @@ const networks: Map> = new Map>(); addHandler("registerType", handleRegisterType); addHandler("getTypes", handleGetTypes); addHandler("getNetworkTypes", handleGetNetworkTypes); +addHandler("getNetworksByType", handleGetNetworksByType); addHandler("registerNetwork", handleRegisterNetwork); function handleRegisterType(aq: ActiveQuery) { @@ -55,3 +56,23 @@ function handleGetNetworkTypes(aq: ActiveQuery) { ...(networks.get(aq.callerInput.module) as Set).values(), ]); } + +function handleGetNetworksByType(aq: ActiveQuery) { + if (!("type" in aq.callerInput)) { + aq.reject("type missing"); + return; + } + + if (!types.has(aq.callerInput)) { + aq.reject("type not registered"); + return; + } + + aq.respond( + [...networks.entries()] + .filter((item) => { + return item[1].has(aq.callerInput); + }) + .map((item) => item[0]), + ); +}