Script

script name(params) { … } declares a JS function template; <script> element bodies may interpolate {{ expr }} with JS-context escaping; ghtmx.JSFuncCall builds escaped handler attributes; ghtmx.JSONScript emits JSON data islands; once-handles deduplicate shared snippets.

script alertName(name string) {
	alert(name);
}

templ buttons(msg string) {
	<button onClick={ alertName(msg) }>go</button>
	<script>
		var payload = "{{ msg }}";
	</script>
}

AST: ScriptTemplate, ScriptElement, ScriptContents.

Verified by: internal/generator/test-script-usage, internal/generator/test-script-inline, internal/generator/test-script-expressions, internal/generator/test-script-usage-nonce, internal/generator/test-only-scripts, internal/generator/test-js-usage, internal/generator/test-js-unsafe-usage, internal/generator/test-once.