mirror of
https://github.com/mjl-/mox.git
synced 2025-07-15 03:34:35 +03:00
change javascript into typescript for webaccount and webadmin interface
all ui frontend code is now in typescript. we no longer need jshint, and we build the frontend code during "make build". this also changes tlsrpt types for a Report, not encoding field names with dashes, but to keep them valid identifiers in javascript. this makes it more conveniently to work with in the frontend, and works around a sherpats limitation.
This commit is contained in:
26
develop.txt
26
develop.txt
@ -28,6 +28,32 @@ with bad API. Third party users aren't affected too seriously due to Go's
|
||||
minimal version selection. The reusable packages are in apidiff/packages.txt.
|
||||
We generate the incompatible changes with each release.
|
||||
|
||||
# Web interfaces/frontend
|
||||
|
||||
The web interface frontends (for webmail/, webadmin/ and webaccount/) are
|
||||
written in strict TypeScript. The web API is a simple self-documenting
|
||||
HTTP/JSON RPC API mechanism called sherpa,
|
||||
https://www.ueber.net/who/mjl/sherpa/. The web API exposes types and functions
|
||||
as implemented in Go, using https://github.com/mjl-/sherpa. API definitions in
|
||||
JSON form are generated with https://github.com/mjl-/sherpadoc. Those API
|
||||
definitions are used to generate TypeScript clients with by
|
||||
https://github.com/mjl-/sherpats/.
|
||||
|
||||
The JavaScript that is generated from the TypeScript is included in the
|
||||
repository. This makes it available for inclusion in the binary, which is
|
||||
practical for users, and desirable given Go's reproducible builds. When
|
||||
developing, run "make" to also build the frontend code. Run "make jsinstall"
|
||||
once to install the TypeScript compiler into ./node_modules/.
|
||||
|
||||
There are no other external (runtime or devtime) frontend dependencies. A
|
||||
light-weight abstraction over the DOM is provided by ./lib.ts. A bit more
|
||||
manual UI state management must be done compared to "frameworks", but it is
|
||||
little code, and this allows JavaScript/TypeScript developer to quickly get
|
||||
started. UI state is often encapsulated in a JavaScript object with a
|
||||
TypeScript interface exposing a "root" HTMLElement that is added to the DOM,
|
||||
and functions for accessing/changing the internal state, keeping the UI
|
||||
managable.
|
||||
|
||||
# TLS certificates
|
||||
|
||||
https://github.com/cloudflare/cfssl is useful for testing with TLS
|
||||
|
Reference in New Issue
Block a user