given a jsr schema uri (such as jsr:@std/assert/assert-equals), this function resolves the http url of the package's metadata file (i.e. deno.json(c)).

import { assertEquals, assertMatch } from "jsr:@std/assert"

// aliasing our functions for brevity
const
fn = jsrPackageToMetadataUrl,
eq = assertEquals,
re = assertMatch

eq((await fn("jsr:@oazmi/kitchensink@0.9.1")).href, "https://jsr.io/@oazmi/kitchensink/0.9.1/deno.json")
eq((await fn("jsr:@oazmi/kitchensink@0.9.1/typedefs")).href, "https://jsr.io/@oazmi/kitchensink/0.9.1/deno.json")
re((await fn("jsr:@oazmi/kitchensink")).href, /^https://jsr.io/@oazmi/kitchensink/.*?/deno.json$/)
re((await fn("jsr:@oazmi/kitchensink/typedefs")).href, /^https://jsr.io/@oazmi/kitchensink/.*?/deno.json$/)

// currently, in version `0.8`, we have the following release versions available:
// `["0.8.6", "0.8.5", "0.8.5-a", "0.8.4", "0.8.3", "0.8.3-d", "0.8.3-b", "0.8.3-a", "0.8.2", "0.8.1", "0.8.0"]`
// so, a query for version "^0.8.0" should return "0.8.6", and "<0.8.6" would return "0.8.5", etc...
eq((await fn("jsr:@oazmi/kitchensink@^0.8.0")).href, "https://jsr.io/@oazmi/kitchensink/0.8.6/deno.json")
eq((await fn("jsr:@oazmi/kitchensink@<0.8.6")).href, "https://jsr.io/@oazmi/kitchensink/0.8.5/deno.json")
eq((await fn("jsr:@oazmi/kitchensink@0.8.2 - 0.8.4")).href, "https://jsr.io/@oazmi/kitchensink/0.8.4/deno.json")
  • Parameters

    • jsr_package: URL | `jsr:${string}`

    Returns Promise<URL>