# 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, and turn it off when all EFT types are defined - turned off `no-inferrable-types` as I want them to be explicitly stated (like in C#)