Haru/docs/decisions.md
2021-12-29 16:52:37 +01:00

1.3 KiB

Decisions

Server

Tools

  • typescript
    • static typing
    • stricter than normal javascript
    • better visual studio (code) support
  • drawio
    • lighter than png diagrams
    • allows for editing the diagrams later

Conventions

  • file naming
    • emulate C# namespacing

Libraries

  • browserify
    • less setup compared to webpack
  • node:http
    • no additional dependencies
    • no overhead from frameworks
    • can be modified to the project's specific needs (EFT request have no compression headers, but data is zlib compressed)
  • rcedit
    • no virus warning after editing the target exe
  • ws
    • no overhead from frameworks
    • no additional dependencies client side
  • typescript-eslint
    • provides type-specific rules for typescript as well opposed to alternatives

Build

  • npm run build is reserved by VS2022 for it's build task
  • nexe cannot include node_modules of it's own, so browserify is used to combine it all into one JS file
  • browserify doesn't support ES6 modules, so babel is used for transpiling to CommonJS.
  • node doesn't include sourcemaps loading support, so we add it in through a babel plugin (babel-plugin-source-map-support)

Lint

  • marked any explicitly valid to allow for prototyping faster