A component URL is a URL that identifies a component.
This section describes the syntax used for displaying URLs to users.
URL Format
A component URL can, in principle, have any scheme. Some common schemes you may encounter are:
fuchsia-pkg
A fuchsia-pkg
component URL is a package URL that locates a
component distributed in a Fuchsia package.
It has the same format as package URL, with a
resource path relative to the package root that
locates a component manifest. This path is usually of the form
meta/<manifest_name>.cm
.
fuchsia-pkg://<repo-hostname>[/<pkg-name>[/<pkg-variant>][?hash=<pkg-hash>][#<path-to-manifest>]]
Example:
fuchsia-pkg://fuchsia.com/stash#meta/stash_secure.cm
fuchsia-boot
A fuchsia-boot
component URL locates a component in the system boot image.
This scheme is used to identify components that must be resolved during early
boot before a fuchsia-pkg
resolver is
available. It has the following format:
fuchsia-boot:///<path-to-manifest-in-bootfs>
Example:
fuchsia-boot:///#meta/driver_manager.cm
http(s)
An http(s)
component URL identifies a web page as a component. Such a
component could be executed as a web page in a web runner, for
example.
Example:
https://en.wikipedia.org/wiki/Hippos
Relative URLs
The Component Framework supports a subset of relative URLs (Relative URLs are defined in URL RFC 3986). Specifically, Component Framework supports relative path URLs (plus a URL fragment with the path to the component manifest) to subpackaged components, and fragment-only URLs.
The path to the component manifest is the only content allowed in a relative
component URL fragment (#meta/<component>.cm
). If the fragment contains any
other content, or if a relative component includes URL query parameters
(?key=value
), the component will not resolve.
Relative path URLs to subpackaged components
A relative path URL is resolved at runtime based on a known "context". For
components resolving a child component by relative URL, the context is a
resolver-supplied value associated with the parent component. The URL path
is
interpreted as the name of one of the declared
subpackage
s of the parent component's package.
Relative subpackage path URLs start with a relative package URL and have the following format:
<subpackage-path>#<path-to-manifest>
Example:
child#meta/default.cm
For more information on subpackages and subpackaged components, see the documentation on Fuchsia Subpackages.
Relative fragment-only URLs
A relative fragment-only URL is resolved at runtime based on the URL of the parent component's package. Fragment-only URLs have the following format:
#<path-to-manifest>
Example:
#meta/child.cm
For a fuchsia-pkg
parent component with the following URL:
fuchsia-pkg://fuchsia.com/package#meta/component.cm
The relative URL resolves to:
fuchsia-pkg://fuchsia.com/package#meta/child.cm