Skip to content

Commit

Permalink
Refactor flAST to ESM, Refactor Tests to Node's Test Runner (#28)
Browse files Browse the repository at this point in the history
- Update dependencies
- Refactor code to ESM
- Replace custom test runner with Node's builting test runner
- Add more tests to increase coverage
- Add coverage report using npm run test:coverage
- Fix Husky's pre-commit hook
  • Loading branch information
BenBaryoPX authored Oct 13, 2024
1 parent c198e72 commit 46bb65e
Show file tree
Hide file tree
Showing 25 changed files with 689 additions and 965 deletions.
2 changes: 0 additions & 2 deletions .eslintignore

This file was deleted.

39 changes: 0 additions & 39 deletions .eslintrc.js

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/node.js.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:

strategy:
matrix:
node-version: [16.x, 18.x, 20.x]
node-version: [18.x, 20.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/

steps:
Expand All @@ -27,4 +27,4 @@ jobs:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm install
- run: npm test
- run: npm run test:coverage
4 changes: 1 addition & 3 deletions .husky/pre-commit
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npm test
npx eslint .
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ npm install flast
```

### Clone The Repo
Requires Node 16 or newer.
Requires Node 18 or newer.
```bash
git clone [email protected]:PerimeterX/flast.git
cd flast
Expand Down Expand Up @@ -165,7 +165,7 @@ const tree = [
### flAST

```javascript
const {generateFlatAST, generateCode} = require('flast');
import {generateFlatAST, generateCode} from 'flast';
const ast = generateFlatAST(`console.log('flAST')`);
const reconstructedCode = generateCode(ast[0]); // rebuild from root node
```
Expand Down Expand Up @@ -197,7 +197,7 @@ const generateCodeDefaultOptions = {
### Arborist

```javascript
const {generateFlatAST, generateCode, Arborist} = require('flast');
import {generateFlatAST, generateCode, Arborist} from 'flast';
const ast = generateFlatAST(`console.log('Hello' + ' ' + 'there!');`);
const replacements = {
'Hello': 'General',
Expand All @@ -213,8 +213,8 @@ ast.filter(n => n.type === 'Literal' && replacements[n.value]).forEach(n => arbo
const numberOfChangesMade = arborist.applyChanges();
console.log(generateCode(arborist.ast[0])); // console.log('General' + ' ' + 'Kenobi');
```
The Arborist can be called with an extra argument - logFunc - which can be used to log
inside the arborist.
The Arborist can be called with an extra argument - logFunc - which can be used to override the log
function inside the arborist.

## How to Contribute
To contribute to this project see our [contribution guide](CONTRIBUTING.md)
43 changes: 43 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import globals from "globals";
import path from "node:path";
import { fileURLToPath } from "node:url";
import js from "@eslint/js";
import { FlatCompat } from "@eslint/eslintrc";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});

export default [{
ignores: ["**/*tmp*/", "**/*tmp*.*", "eslint.config.js", "node_modules/"],
}, ...compat.extends("eslint:recommended"), {
languageOptions: {
globals: {
...globals.browser,
...globals.node,
...globals.commonjs,
},

ecmaVersion: "latest",
sourceType: "module",
},

rules: {
indent: ["error", "tab", {
SwitchCase: 1,
}],

"linebreak-style": ["error", "unix"],

quotes: ["error", "single", {
allowTemplateLiterals: true,
}],

semi: ["error", "always"],
"no-empty": ["off"],
},
}];
Loading

0 comments on commit 46bb65e

Please sign in to comment.