Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

nsview/v1 package

Overview

Package nsview is the human-facing view — the third realm in the split, and the newest (2026-08-21).

It exists because an adversarial review found three defects in the old Render(), which lived inside the permanent `nsdata` vault: unescaped profile text injected into the page markdown, an O(domains × names) home page any user could inflate into a permanent denial of service, and navigation links that 404'd. All three were display bugs, and none of them could ever have been fixed, because that realm is deployed exactly once. The NFT artwork moved here for the same reason.

Display code is swappable now. This realm holds no state, reads everything from nsdata's exported API, and can be redeployed and re-pointed at any time with nothing to migrate.

Functions

BuildSVG

func BuildSVG(tid string) string

BuildSVG renders a token. Everything on the card derives from four stored values — owner, registered, expires, and the domain's drawing — so a renewal moves `expires` and the bar, the time remaining and the years held all follow from it. Nothing is baked at mint: the card is generated on every read, which is what lets a domain's artwork be changed after its names have been sold.

Param

Command

gnokey query vm/qeval -remote "https://rpc.pearl.testnets.gno.land" -data "gno.land/r/g1k5hec7vlu9rn3krvyhcx0jkxnhs2h2rxjlh8yy/nsview/v1.BuildSVG()"

Result

MarkerCentred

func MarkerCentred(s string, cx, y, size int, colour string, weight int) string

MarkerCentred draws text centred on cx, which is what almost every caller here wants and what the SVG text-anchor attribute would have done for them if a font had been available.

Params

Command

gnokey query vm/qeval -remote "https://rpc.pearl.testnets.gno.land" -data "gno.land/r/g1k5hec7vlu9rn3krvyhcx0jkxnhs2h2rxjlh8yy/nsview/v1.MarkerCentred(,,,,,)"

Result

MarkerText

func MarkerText(s string, x, y, size int, colour string, weight int) string

MarkerText draws a line of text as stroked paths.

`size` is the CAP HEIGHT in user units, not an em size: it is the height of a capital letter, which is the measurement anybody positioning this by eye is actually thinking in.

`x` is the left edge and `y` is the TOP of the capitals, matching how the rest of this file positions things and unlike SVG's own text baseline, which is a trap when mixing the two.

The jitter is what makes it read as a pen rather than a plotter. It is derived from the character and its position, so it is stable: the same string renders identically on every read, which matters because these cards are regenerated constantly and a letter that wobbled between reads would look like a rendering fault.

Params

Command

gnokey query vm/qeval -remote "https://rpc.pearl.testnets.gno.land" -data "gno.land/r/g1k5hec7vlu9rn3krvyhcx0jkxnhs2h2rxjlh8yy/nsview/v1.MarkerText(,,,,,)"

Result

MarkerWidth

func MarkerWidth(s string, size int) int

MarkerWidth is what MarkerText will occupy, so a caller can centre it. Counts every character including the ones that draw nothing, because a space still advances.

Params

Command

gnokey query vm/qeval -remote "https://rpc.pearl.testnets.gno.land" -data "gno.land/r/g1k5hec7vlu9rn3krvyhcx0jkxnhs2h2rxjlh8yy/nsview/v1.MarkerWidth(,)"

Result

Render

func Render(path string) string

Param

Command

gnokey query vm/qeval -remote "https://rpc.pearl.testnets.gno.land" -data "gno.land/r/g1k5hec7vlu9rn3krvyhcx0jkxnhs2h2rxjlh8yy/nsview/v1.Render()"

Result

TokenURI

func TokenURI(tid string) string

TokenURI returns the full data: URI for a token, generated on every read so the image always reflects current state (never baked at mint).

Param

Command

gnokey query vm/qeval -remote "https://rpc.pearl.testnets.gno.land" -data "gno.land/r/g1k5hec7vlu9rn3krvyhcx0jkxnhs2h2rxjlh8yy/nsview/v1.TokenURI()"

Result