sn-prometheus
v1.0.19
Published
Typescript file combiner and builder for node scripts / modules
Downloads
9
Readme
Sennon Prometheus
Typescript file combiner for node scripts. Used to put all separate files containing script classes into one file that gets compiled into javascript. The javscript output is easier to uglify than a directory of javascript code, and there is less repeated overhead due to importing and exporting code across files.
Goals :
- Keeps working code usable as is for easier debugging. No need to figure out which part of the uglified code is breaking when running the code as is.
- Keeps the js outputs clean by making a single working typescript file before converting to javascript. Going from typescript to javascript involves creating a lot of overhead which is avoided by combining code at the typescript level instead of combining compiled js outputs.
- Creates a consistent pattern for node scripts, whether they are actual node modules or just node scripts locally used. It seems like there is no standard for how to structure a node tool, so prometheus attempts to solve this issue by introducing a "main with a header and costum" classes pattern to the equation.
- By having all shared libraries, constants, and other variables defined in the main_header file, it makes it easier to make sure nothing gets loaded twice if it is used in more than one tool class.
- The main file should include the necessary args check to make the tool usable in the console, and it should return the main tool class as the exports so that other node scripts can use the tool internally.
- The tool should create or export a main class which has defined functionality, as well as offer the necessary command lines options to use the tool directly from the console. All command lines options should be shortcuts to using the tool class directly in a node script.
- Classes used to separate tool functionality should have the necessary interfaces defined in order to have default and custom behavior available as needed, without breaking class expectations.
A specific pattern is used to make scripts with this tool. All external imports and global definitions should be exported from the main_header.ts file. Each class necessary for the code to work should be defined in its own file. There should be at least one main class which is initialized (running main.ts/output directly) or exported (requiring the script in another script). The main.ts file acts like a normal program's starting point and should checks the script's user arguments if it has to run the tool directly. The main.ts file acts as a console intermediary to requiring the tool in another script and accessing its functionality that way.
Each main aspect of the tool's functionality and its variables needed to run as expected should be handled in the main.ts file. Using the prometheus tool as an example, we can see that the tool is broken down into five main files. The Prometheus class (main class of the tool) has