JSTQL-JS-Transform/README.md
2024-05-31 16:26:18 +02:00

58 lines
1.6 KiB
Markdown

# JSTQL JavaScript Transform tool
This tool is created to transform JavaScript based on definitions written in a custom DSL called JSTQL
## JSTQL
This is a DSL created to define proposal transformations using templates. A transformation is defined by two templates, a template of what code snippets to search for **applicable to** and a template of how to transform those snippets **transform to**.
Examples of definitions for proposals can be found in [dsl_files](./dsl_files/)
## Running this project
This project exposes an api in the file [transform/transfrom.ts](./src/transform/transform.ts), which is meant to be used as this library's entry point.
To run this code as a standalone project, a file [index.ts](./index.ts) exists to facilitate running this project.
This project is created using TypeScript, and it is recommended to use [Bun](https://bun.sh/) to compile and run it.
### Building Langium required files
Firstly, building langium is required, this is done by the following:
```sh
# cd into JSTQL
cd JSTQL
# Install dependencies
npm i
# Build langium generated files
npm run langium:generate
# Build final JS source
npm run build
```
### Running a transformation
Now we are ready to run this project with the pipeline on a test JS file:
```sh
# cd into top level
cd ..
# Install dependencies
bun i
# Run an example transformation
bun run index.ts dsl_files/pipeline.jstql test_files/test.js
```
### Arguments of index.ts
Arguments
- First positional is path to JSTQL
- Second positional is path to JS file to transform
- -o is optional output path, if not given path is **./out.js**