function moduleUrl(specifier) {
let v = specifier, m;
if (m = /^([0-9a-f]{16}(?:@[0-9]+)?)$/i.exec(v)) {
return `https://api.observablehq.com/d/${m[1]}.js?v=3`;
}
if (m = /^(@[0-9a-z_-]+\/[0-9a-z_-]+(?:\/[0-9]+)?(?:@[0-9]+)?)$/i.exec(v)
|| /^https:\/\/(?:beta\.)?observablehq\.com\/d\/([0-9a-f]{16}(?:@[0-9]+)?)(?:\?|$)/i.exec(v)
|| /^https:\/\/(?:beta\.)?observablehq\.com\/(@[0-9a-z_-]+\/[0-9a-z_-]+(?:\/[0-9]+)?(?:@[0-9]+)?)(?:\?|$)/i.exec(v)
|| /^https:\/\/api\.observablehq\.com\/d\/([0-9a-f]{16}(?:@[0-9]+)?)\.tgz\?v=3$/i.exec(v)
|| /^https:\/\/api\.observablehq\.com\/(@[0-9a-z_-]+\/[0-9a-z_-]+(?:\/[0-9]+)?(?:@[0-9]+)?)\.tgz\?v=3$/i.exec(v)
) {
return `https://api.observablehq.com/${m[1]}.js?v=3`;
}
return specifier;
}