DOCS v0.1.13 github

@hatch:assets v0.2.6

Content-addressable assets database with hot-reload. Two backends behind one API — filesystem-backed on native (Fs.walk + content hashes + Hatch.watchFile), manifest-driven on web (fetch + lazy reads, page ships an assets-manifest.json). Edit a shader / texture / config file, see registered subscribers fire.

stable system updated Jun 4, 2026 source ↗
$ hatch add @hatch:assets

MOD assets_web

CL Asset

NEW Asset.new_(db, relPath, url, hash, size)

GET Asset.path

GET Asset.absolute

GET Asset.hash

GET Asset.size

GET Asset.mtime

GET Asset.text

GET Asset.bytes

GET Asset.invalidate_

GET Asset.toString

FN Asset.refresh_(hash, size)

CL Assets

NEW Assets.new_(baseUrl)

GET Assets.root

GET Assets.absRoot

GET Assets.count

GET Assets.list

GET Assets.toString

FN Assets.static open(baseUrl)

FN Assets.mount_(node, prefix)

FN Assets.has(relPath)

FN Assets.get(relPath)

FN Assets.bytes(relPath)

FN Assets.text(relPath)

FN Assets.hash(relPath)

FN Assets.list(prefix)

FN Assets.dirs(prefix)

FN Assets.files(prefix)

FN Assets.isDir(prefix)

FN Assets.listUnder_(prefix)

FN Assets.childrenOfKind_(prefix, wantDir)

FN Assets.on(relPath, fn)

FN Assets.off(relPath, fn)

FN Assets.reload(relPath)

FN Assets.lookupTreeNode_(tree, relPath)

FN Assets.fireSubscribers_(relPath, asset)

MOD loader

CL AssetLoader

NEW AssetLoader.new()

GET AssetLoader.decodeBatchCap → Num

SET AssetLoader.decodeBatchCap=(n: Num)

GET AssetLoader.running → Bool

GET AssetLoader.loaded → Map

GET AssetLoader.pending → Num

GET AssetLoader.done → Num

GET AssetLoader.total → Num

GET AssetLoader.pause

FN AssetLoader.extendTotal(n: Num)

FN AssetLoader.queue(name: String, loadFn: Fn)

FN AssetLoader.queueAsync(name: String, loadFn: Fn)

FN AssetLoader.queueDecode(name: String, beginFn: Fn, finishFn: Fn)

FN AssetLoader.onProgress(fn: Fn)

FN AssetLoader.onComplete(fn: Fn)

FN AssetLoader.onError(fn: Fn)

FN AssetLoader.start()

FN AssetLoader.update(dt: Num)

FN AssetLoader.reset()

MOD assets_native

CL Asset

NEW Asset.new_(db, relPath, absPath, hash, size, mtime)

GET Asset.path

GET Asset.absolute

GET Asset.hash

GET Asset.size

GET Asset.mtime

GET Asset.bytes

GET Asset.text

GET Asset.invalidate_

GET Asset.toString

FN Asset.refresh_(hash, size, mtime)

CL Assets

NEW Assets.new_(root)

GET Assets.root

GET Assets.absRoot

GET Assets.count

GET Assets.toString

FN Assets.static open(dir)

FN Assets.static absolutize_(p)

FN Assets.scan_()

FN Assets.indexFile_(rel, abs)

FN Assets.get(relPath)

FN Assets.bytes(relPath)

FN Assets.text(relPath)

FN Assets.hash(relPath)

FN Assets.has(relPath)

FN Assets.on(relPath, fn)

FN Assets.handleFileChange_(absPath)

FN Assets.fireSubscribers_(rel, asset)

FN Assets.off(relPath, fn)

MOD assets