This is the start at separating out UI related work from potentially backend
related work. This distinction will help when Web Workers can be
introduced to get around the background tab limitation for scripts.
Adding a few custom types and documentation to clean up TSLint rule
violations. Included some usage of rule disabling for things like long
lines where we need to extract text that the user would see. That level
of text should really be separated from the logic.
As it currently stands, bringing in TSLint with *all* rules enabled by
default and override each as we go. This means that as we upgrade and
bring in new rules we might start seeing new rules that the code
violates.
Because all the rules are enabled by default, the choice to explicitly
disable/relax rules can be discussed as part of PRs.
This also brought in strict type checking. This means we shouldn't be
relying on truthy/falsey value coercion. It also means that we will
likely need to create some type definition files or port certain files
over. That...will be a bit tedious, but will make the codebase better as
a whole.
The UI of a single Hacknet Node now only takes up ~50% of the screen.
This allows two nodes to be displayed per "row" when the screen is wide
enough.
Also repositioned the buttons for the nodes so they are inline with the
information each updates. This visual correlation lets us reduce the
text that needs to be in each button.
Also reduced the amount of DOM that needs to be continuously garbage
collected by updating specific text rather than throwing out entire HTML
elements.
In order to shave off ~0.02MiB of the bundle size, needed to continue
referencing the minified file. Ideally future changes can utilize
code splitting, tree shaking, and minification in WebPack to use normal
references.