First immediate issue I see is that we don't have a common definition for "component" in the context of Integrant. The README only alludes to the idea in the read-namespaces
doc. All other uses point to the eponymous library. Integrant operates at the "config" level. Might be a component - doesn't have to be.
I understand such an Integrant "component" to be some set of Integrant keywords - let's call that an ig/key
. An ig/key
exists is a key in a configuration map, and init-key is provided for this keyword (optionally, more methods, as you well know). In my project, I call such sets of Integrant keywords "subsystems" and they are defined by .. a subsystem function that returns a subsystem map. These subsystem maps are (merge ...
'd together to form a "system" map. As it happens, in my case and maybe in yours, all keys of a given subsystem are namespaced keywords that share a namespace - so maybe that's a connected, somewhat equivalent definition of an Integrant component. All of this is in line with