Skip to content
internal/js
On this page

The browser scripts a built page ships, authored as real .js files and embedded rather than written as Go strings, plus the bundle each page assembles.

#internal/js

#internal/js

Package js carries the browser scripts a built page ships and assembles the body bundle each page needs.

The scripts are authored as .js files in this package and embedded, never written as string literals in Go: a script that lives in a Go source file gets no syntax checking, no editor support and no diff a reviewer can read.

#What a page loads

Two scripts sit in the head -- [Head], which applies the stored colour scheme before the first paint, and [Analytics], which is injected only when the project configures it. Everything else is one bundle at the end of the body, assembled by [AssembleBody].

The bundle is not the whole directory. Five blocks are on every page; the rest are included only when the rendered HTML shows the element they drive, which the assembler decides by probing the fragments the page renderer already holds. A page with no code block ships no copy-button handler, and a page with no table of contents ships no scrollspy.

#PageHTML

Go go
type PageHTML struct

PageHTML is the rendered page, in the fragments [AssembleBody] probes to decide which conditional blocks the page needs.

The split is the page renderer's own: the article body, the table of contents, the footer, the template-level extras the wrapper renders around the body (the superseded-version notice and the share control), and the chrome outside the article (the topbar, where the two pickers live).

#Load

Go go
func Load(name string) (string, error)

Load returns the source of the named script, without its .js extension -- Load("theme-toggle") reads theme-toggle.js. An unknown name is an error.

Go go
func Head() string

Head returns the script every page runs in its head, before the first paint: it applies the colour scheme the visitor last chose and switches scroll behaviour to instant so an initial in-page landing does not animate.

#Analytics

Go go
func Analytics() string

Analytics returns the Google Analytics configuration script, which a page carries only when the project's feedback settings name a measurement id. It reads that id from its own script element's data-ga-id attribute.

#BodyScripts

Go go
func BodyScripts(page PageHTML) []string

BodyScripts returns the names of the blocks a page ships, in bundle order.

It is what [AssembleBody] concatenates, exposed on its own because a build stage that reports or checks a page's payload wants the names rather than the bytes.

#AssembleBody

Go go
func AssembleBody(page PageHTML) string

AssembleBody returns the body bundle for page: the always-included blocks, then every conditional block whose element the page carries, then the smooth scroll restore, joined by newlines and not yet minified.

More tools from this site

  • claudestream Drive Claude Code from Python: run it as a subprocess and read its output as typed events, with async and sync sessions, sandbox policies, and tools you define in Python
  • claudewheel A TUI Claude Code Launcher that lets you have more than one profile, manage sessions lifecycle, pick the exact CC version, model to use (even older unlisted ones), pick which GitHub account to use, etc.
  • dirstat Fast, single-binary directory statistics CLI: every file under a tree grouped by format, with counts, sizes, and lines of code, as a colored terminal table or as JSON
  • fastware A batteries-included ASGI framework: msgspec JSON, a managed Granian server, dependency injection, SSE, WebSockets, auth, and a test client
  • go-toml-edit Zero-dep TOML editing library for Go with comment preservation
  • howmuchleft The fastest Claude Code statusline: context window, 5-hour, and weekly limit usage as three customizable gradient bars, rendering in about 6 ms
  • orxtra
  • pgdesign
  • predraw Declarative rendering pipeline: describe a scene in JSON and get SVG, PNG and WebP out, with light and dark style tokens, reusable components and text converted to path outlines
  • reposummary Turn a git repository's history into a Markdown journal: pick a time window or revision range and get a readable digest of what changed, optionally narrated by an LLM
  • rlsbl Release orchestration and project scaffolding CLI that bumps versions, validates a structured JSONL changelog, tags only the commit CI verified, and publishes to npm, PyPI, Go and more
  • safegit git wrapper CLI that gives each commit its own temporary index and retries ref updates on conflict, so concurrent agents share one repository
  • saferm Command-line replacement for rm that archives every deletion with a mandatory reason and the context it ran in, so deleted files can be listed, inspected and restored
  • strictcli
  • stricttest An always-on test-isolation floor: a pytest plugin and a Go env-hygiene module that make a test suite structurally unable to reach real credentials, the real HOME, the network, or the development repository.
  • wesktop A Python framework that turns an ASGI web app into a desktop application, serving it from a local Granian server and displaying it in a native OS window via pywebview
Search