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

devtools/v0 package

Overview

Package devtools is the worked example of wiring moul's developer packages into one realm: what a new realm should copy.

Everything here is a COMBINATION. Any one of these packages has its own demo showing it alone; the thing that is hard to find is what they look like used together, which is the only form a real realm ever meets them in. So this realm imports eight of them and every one earns its place in the output:

Example
1r/moul/config     the notice block, the pause switch, the explorer to link
2p/moul/mygnoscan  the explorer routes themselves
3p/moul/debug      a metadata panel behind ?debug=1
4p/moul/realmpath  reading the query string Render was handed
5p/moul/kit/ui     escaping what a caller typed, and the tables
6p/moul/md         the markdown, without hand-rolled strings
7p/moul/txlink     the "call this function" link
8p/moul/fifo       the bounded note list, so the state cannot grow forever

The three lines worth copying

A realm that does nothing else should still do these:

Example
1func Render(path string) string {
2	return config.TopBlockFor(realmPath) + body + config.BottomBlockFor(realmPath)
3}
4
5func Mutate(cur realm, s string) {
6	config.AssertWritableFor(realmPath)  // honours the pause switch
7	notes.Append(ui.Inline(s))           // escapes what a caller typed
8}

The first gives every realm a place to put a warning and a pause banner without shipping banner code. The second is two separate guards that both have to be there: the pause one so an incident can stop writes from outside the realm, and the escaping one because a string a caller typed is the oldest way to break a page.

Function

Add

func Add(cur realm, body string)

Add appends a note. It is the only mutating function here, and it carries both guards a real one should.

Param

Command

# WARNING: This command is running in an INSECURE mode.
# It is strongly recommended to use a hardware device for signing
# and avoid trusting any computer connected to the internet,
# as your private keys could be exposed.

gnokey maketx call -pkgpath "gno.land/r/moul/x/allinone/devtools/v0" -func "Add" -args $'' -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -chainid "gnoland-1" -remote "https://rpc.gno.land" ADDRESSgnokey query -remote "https://rpc.gno.land" auth/accounts/ADDRESS
gnokey maketx call -pkgpath "gno.land/r/moul/x/allinone/devtools/v0" -func "Add" -args $'' -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -broadcast=false ADDRESS > call.tx
gnokey sign -tx-path call.tx -chainid "gnoland-1" -account-number ACCOUNTNUMBER -account-sequence SEQUENCENUMBER ADDRESS
gnokey broadcast -remote "https://rpc.gno.land" call.tx