Arrows show "imports" direction. Indented items are transitive.
cmd/helium → internal/cli/heliumcmd
internal/cli/heliumcmd → helium, c14n, relaxng, schematron, xsd, xinclude, xpath1, xpath3, catalog, internal/cliutil, internal/uripath, internal/iofs
shim → helium, stream, enum, internal/encoding, internal/xmlchar
xinclude → helium, xpointer, internal/encoding, internal/iofs, internal/lexicon, internal/uripath
→ xpath1 (via xpointer)
→ internal/xmlchar (via xpointer)
(helium.Parser.XInclude injects an xinclude.Processor through the helium.XIncludeProcessor interface — dependency inversion keeps this edge one-way; helium does NOT import xinclude)
xpath1 → helium, internal/lexicon, internal/domutil, internal/xpath1/lexer
xpath3 → helium, internal/xpath, internal/lexicon, internal/icu, internal/unparsedtext, internal/strcursor, internal/sequence, internal/xsdregex, internal/xmlchar, internal/domutil, internal/writerctl
xslt3 → helium, xpath3, xsd, html, internal/iofs, internal/lexicon, internal/nodelink, internal/sequence, internal/uripath, internal/xpathstream, internal/domutil, internal/writerctl, xslt3/internal/elements
xsd → helium, xpath1, xpath3, internal/domutil, internal/lexicon, internal/xpath1/lexer, internal/xsd/value, internal/xsdregex, internal/uripath, internal/iofs
relaxng → helium, internal/lexicon, internal/iofs, internal/iolimit, internal/xsd/value, internal/xsdregex, internal/xmlchar, internal/uripath
schematron → helium, xpath1, xpath3, internal/xpath, internal/xpath1/lexer, internal/xpath1/number
xpointer → helium, xpath1, internal/xpath1/lexer, internal/xmlchar
c14n → helium, internal/lexicon, internal/domutil
xmldsig1 → helium, c14n, xpath1, internal/lexicon, internal/domutil, internal/xpath1/lexer, internal/xmlbase64, internal/xmlchar
xmldsig1/transform → helium, xmldsig1, xslt3 (opt-in xslt3-backed XSLTTransformer; kept out of xmldsig1 so the core never imports xslt3)
xmlenc1 → helium, c14n, internal/domutil, internal/xmlbase64 (c14n converts the node-set a same-document xenc:CipherReference names into octets; c14n imports neither xmlenc1 nor xmldsig1, so the edge is one-way)
html → helium, sax, push, internal/xmlchar
catalog → helium, internal/catalog, internal/iofs, internal/lexicon, internal/xmlchar
stream → internal/encoding, internal/xmlchar
sax → helium, enum
helium (root) → sax, enum, internal/encoding, internal/bitset, internal/parser, push, internal/stack, internal/uripath, internal/iofs, internal/writerctl, internal/nodelink, internal/nslookup
(helium installs hooks in internal/writerctl in init so xpath3 fn:serialize can enable declaration-only encoding and xslt3 can omit document-child terminators without public methods; the writerctl package imports nothing, so the edge is one-way)
(helium installs hooks in internal/nodelink in init so xslt3's strip-space copier can link a
freshly built child without AddChild's preflight and bind an EntityRef to its copied declaration;
the xsd/xmldsig1 corrupt-tree cycle-guard tests can write a raw next-sibling pointer; all hooks avoid
public mutation functions in helium; the nodelink package imports nothing, so the edge is one-way)
(helium installs hooks in internal/nslookup in init so internal/domutil can search or read raw
namespace declarations one at a time without cloning Element.Namespaces or exposing the mutable
nsDefs slice; the nslookup package imports nothing, so the edge is one-way)
sink → (none)
enum → (none)
internal/lexicon → (none)
internal/icu → (none)
push → (none)
internal/heliumtest → (none)
internal/sequence → (none)
internal/strcursor → (none)
internal/xpath1/lexer → (none)
internal/unparsedtext → internal/xmlchar, internal/uripath, internal/iofs
internal/catalog → internal/uripath
internal/uripath → (none)
internal/xsdregex → (none)
internal/xmlbase64 → helium (DecodeElement counts/charges/decodes a base64 value straight off its DOM children; the root never imports it back)
internal/writerctl → (none)
internal/nodelink → (none)
internal/nslookup → (none)
internal/xsd/value → internal/lexicon
internal/domutil → helium, enum, internal/lexicon, internal/nslookup, internal/xmlchar
internal/xpathstream → xpath3, internal/lexicon
test → helium
sink, enum, internal/bitset, internal/heliumtest, internal/parser, push, internal/stack, internal/cliutil, internal/encoding, internal/lexicon, internal/icu, internal/nodelink, internal/nslookup, internal/sequence, internal/strcursor, internal/writerctl, internal/xpath1/lexer, internal/xsdregex, internal/uripath
helium (root) → sax, enum, internal/*
c14n, xpath1, xpath3, html, catalog, relaxng, stream
xmldsig1 (root + c14n + xpath1 + internal/lexicon + internal/xpath1/lexer + internal/xmlchar; xpath1 backs the XPath filter transform), xmlenc1 (root + c14n; c14n converts the node-set a same-document xenc:CipherReference names into octets)
xsd (root + xpath1 + xpath3 + internal/lexicon + internal/xpath1/lexer), xpointer (root + xpath1 + internal/xpath1/lexer + internal/xmlchar), schematron (root + xpath1 + xpath3 + internal/xpath + internal/xpath1/lexer + internal/xpath1/number; xpath1 backs the XPath 1.0 queryBinding, xpath3 the XPath 3.1 one), xinclude (root + xpointer + internal/encoding + internal/iofs + internal/lexicon), xslt3 (root + xpath3 + xsd + html + internal/elements), shim (root + stream)
internal/cli/heliumcmd (CLI implementation) cmd/helium (CLI wrapper)