Where to send a person who lacks the extension: the store of the current
browser (Chrome Web Store, Edge Add-ons, Firefox AMO; Safari → the app's
download page), or the project's download page when unknown or while the
store listing does not exist yet. A listing is linked only once
project.toml names it: an unpublished AMO slug, for one, can be claimed
by anyone, so guessing it would send people to a stranger's add-on.
The browser comes from the extension's last announcement when there is
one (it knows better), else from the user agent.
Returns string
Example
const { problem } = awaitstatus(); if (problem === "ExtensionMissing") installLink.href = installUrl();
Where to send a person who lacks the extension: the store of the current browser (Chrome Web Store, Edge Add-ons, Firefox AMO; Safari → the app's download page), or the project's download page when unknown or while the store listing does not exist yet. A listing is linked only once project.toml names it: an unpublished AMO slug, for one, can be claimed by anyone, so guessing it would send people to a stranger's add-on.
The browser comes from the extension's last announcement when there is one (it knows better), else from the user agent.