This directory holds components reused in multiple embedders which themselves
have extensions dependencies. Components such as these do not belong in the root
src/components, because src/extensions already depends on src/components. A
component in src/components can not have an extensions dependency.

Code in an extensions/component should be placed in a namespace corresponding to
the name of the component (ignoring extensions); e.g. for a component living in
extensions/components/foo, code in that component should be in the foo::
namespace.

See src/components/README for additional notes.
