## TypeScript Support

TypeScript files served from content directories are transformed into
JavaScript. Reference .ts files in html templates as module code.

`<script type="module" src="/filename.ts">`

## Linting & Formatting

This repository uses [eslint](https://eslint.org/) to format TS files,
[stylelint](https://stylelint.io/) to format CSS files, and
[prettier](https://prettier.io/) to format TS, CSS, Markdown, and YAML files.

See the style guides:

- [TypeScript](https://google.github.io/styleguide/tsguide.html)
- [CSS](https://go.dev/wiki/CSSStyleGuide)

It is encouraged that all TS and CSS code be run through formatters before
submitting a change. However, it is not a strict requirement enforced by CI.

### Installing npm Dependencies:

1. Install [docker](https://docs.docker.com/get-docker/)
2. Run `./npm install`

### Run ESLint, Stylelint, & Prettier

    ./npm run all

## Third Party

The `third_party` directory was generated with `go run ./devtools/cmd/npmdeps`.
It contains JS packages that are served by the web site. To add or upgrade a new
dependency use the necessary `./npm` command then run
`go run ./devtools/cmd/npmdeps`. Remove unnecessary files from the copy result
where appropriate. For example, `content/localserver/index.html` only depends on
files from `third_party/d3@7.8.4/dist/` so the directory
`third_party/d3@7.8.4/src` can be deleted.
