Skip to content
This repository has been archived by the owner on Dec 29, 2022. It is now read-only.
/ go-structeditor Public archive

User interface library for editing arbitrary Go structures using a UI rendered in HTML.

License

Notifications You must be signed in to change notification settings

google/go-structeditor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Struct Editor

User interface library for editing arbitrary structures using a UI rendered in HTML.

Background

Struct Editor is intended as a debugging tool for observing and modifying state inside a Go server accessible via HTTP. It was originally written to simplify debugging of a client-server turn-based game engine, but can be applied to any circumstance where global data is represented as a struct.

Usage

An example of configuring the editor is provided in the editor example in the examples subdirectory.

	editor := structeditor.ServeEditor(demoData, "/", http.DefaultServeMux)

	log.Fatal(http.ListenAndServe(":8000", nil))

Once the server is running, you can view the demoData structure at http://localhost:8000/. Making edits to the structure will modify the structure on the server.

Known Issues / Future Work

  • Mutation of the struct in the editor is not synchronized or protected against multithreaded access
  • Private members of structs cannot be mutated
  • Several Go types cannot be rendered
    • complex
    • interface
    • map
  • General UI usability cleanups
    • Errors are not reported
    • The UI does not notify the user when a change is committed
    • The UI is not reloaded upon change
    • Boolean data types are exposed as string fields, not dropdowns or checkboxes
    • Newline and comma misplacement
  • Pointers cannot be cleared
  • Extremely large structs can bog down the UI

Security Notice

Use of this library exposes internal state of your server directly to an insecure HTTP endpoint. If you do not control access to the server, you should wrap access to the editor's ViewHandler and MutateHandler in an authentication / authorization solution.

Disclaimer

This is not an officially supported Google product.

About

User interface library for editing arbitrary Go structures using a UI rendered in HTML.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages