flatlint
JavaScript tokens-based linter
Last updated 2 months ago by coderaiser .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install flatlint 
SYNC missed versions from official npm registry.

FlatLintLicense NPM version Build Status Coverage Status

Token-based JavaScript linter that fixes Syntax Errors

Install

npm i flatlint

Available fixes

<summary>apply import order</summary>
-import {readFile}, fs from 'node:fs';
+import fs, {readFile} from 'node:fs';
<summary>apply import from</summary>
-import fs form 'node:fs';
+import fs from 'node:fs';
<summary>assignment without parentheses after &&</summary>
-a && b = c;
+a && (b = c);
<summary>convert assert to with</summary>
-import a from 'a' assert {type: 'json'}
+import a from 'a' with {type: 'json'}
<summary>convert comma to semicolon</summary>
-const a = 5,
+const a = 5;

function x() {
-   return m,
+   return m;
}

-import a from 'a',
+import a from 'a';

-const a = 3,
+const a = 3;
module.exports = 2;
<summary>convert colon to semicolon</summary>
-console.log(a, b):
+console.log(a, b);
<summary>convert colon to comma</summary>
export const rules = [
-   ['apply-nesting': applyNesting],
+   ['apply-nesting', applyNesting],
];
<summary>convert colon to as</summary>
-import {simpleImport: _simpleImport} from './simple-import.js';
+import {simpleImport as _simpleImport} from './simple-import.js';
<summary>convert from to require</summary>
-const a = from 'a';
+const a = require('a');
<summary>add missing curly brace</summary>
-function a({b, c) {}
-function a({b, c}) {}

-const {a = b;
+const {a} = b;
<summary>add missing round brace</summary>
-if a > 5 {
+if (a > 5) {
    alert();
}

-if (a.b() {
+if (a.b()) {
}

-a('hello'
+a('hello');

const m = {
-    z: z('hello'
+    z: z('hello')
}

-{hello} = world;
+({hello} = world);

-assign(oldPath, currentPath;
+assign(oldPath, currentPath);
<summary>add missing assign</summary>
-const a 5;
+const a = 5;

-module.exports {};
+module.exports = {};
<summary>add missing comma</summary>
import {
-   a
+   a,
    b,
} from 'c';

t.transform('declare-imports-first', {
-   'declare-imports-first': declareImportsFirst
+   'declare-imports-first': declareImportsFirst,
    'convert-esm-to-commonjs': convertEsmToCommonJs,
});
<summary>add missing arrow '=>'</summary>
-const a = (b, c) {};
+const a = (b, c) => {};
<summary>add const to export</summary>
-export x = 5;
+export const x = 5;
<summary>add missing squire brace</summary>
-const a = ['hello', 'world';
+const a = ['hello', 'world'];
<summary>remove useless round brace</summary>
-const a = 5);
+const a = 5;

-import a from 'a');
+import a from 'a';

if (a) {
-})
+}
<summary>remove useless square brace</summary>
-const a = [1, 2, 3]];
+const a = [1, 2, 3];
<summary>convert semicolon to comma</summary>
const a = {
-    b: 'hello';
+    b: 'hello',
}

const b = [
    1,
-   2;
+   2,
    3,
]
<summary>convert module to namespace</summary>
-module M {
+namespace M {
    var a: string;
}
<summary>remove useless comma</summary>
function x() {
    return m;
-},
+}

-const expected = [],
+const expected = [];
t.equal(expected, []);
<summary>remove useless dot</summary>
-fn([]);
+fn([].);
<summary>remove invalid character</summary>
-const {¬
-····is,¬
-····sArgsStr,¬
-····isTypeParamsStr,¬
-} = require('./is');¬
+const {
+    is,
+    isArgsStr,
+    isTypeParamsStr,
+} = require('./is');
<summary>add missing quote</summary>
-const a = 'hello
+const a = 'hello'

-fn('hello);
+fn('hello');
<summary>Remove useless arrow</summary>
-function parse(source) => {
+function parse(source) {
    return source;
}
<summary>Remove useless assign</summary>
-import {readFile, readdir} = from 'node:fs/promises';
+import {readFile, readdir} from 'node:fs/promises';
<summary>Remove useless coma</summary>
const a = class {
-    b() {},
+    b() {}
}
<summary>add missing semicolon</summary>
-const a = 5
+const a = 5;
<summary>add missing if</summary>
    if (a < 0)
        console.log('hello');
-    else (a > 3)
+    else if (a > 3)
        console.log('world');
<summary>split namespace with specifiers</summary>
-import * as plugin, {CUT} from './plugin.js';
+import * as plugin from './plugin.js';
+const {CUT} = plugin;

Template literals

FlatLint uses language similar to ????PutoutScript.

It can look similar, but has a couple differences:

  • ✅ it may not be valid JavaScript, it can be couple tokens that can be fixed;
  • ✅ it counts each symbol as a token;

__a

From __a to __z is usually identifiers, but can also be strings if used with quotes '__a' they can be single or double, it can be only one quote '__a - this is valid, since FlatLint is tokens based.

__array

Collects everything that looks like array elements, it can start from squire brace [__array;, but that's not important to end with it, since it used to fix error patterns.

__args

Collects arguments of function when exists.

__expr

Collects everything that looks like expression.

API

import {lint, plugins} from 'flatlint/with-plugins';

const [code] = flatlint(`a && b = c`, {
    plugins,
});

// returns
`
a && (b = c);
`;

Without fix:

import {lint, plugins} from 'flatlint/with-plugins';

const [, places] = flatlint(`a && b = c`, {
    fix: false,
    plugins,
});

// returns
[{
    column: 1,
    line: 1,
    message: `Wrap the assignment in parentheses after '&&'`,
    rule: 'wrap-assignment-in-parens',
}];

When you want to use custom plugins:

import {lint} from 'flatlint';

const [code] = lint(`a && b = c`, {
    startLine: 1,
    plugins: [
        ['wrap-assignment-in-parens', {
            report: () => `Wrap the assignment in parentheses after '&&'`,
            replace: () => ({
                '__a && __b = __c': '__a && (__b = __c)',
            }),
        }],
    ],
});

License

MIT

Current Tags

  • 5.1.0                                ...           latest (2 months ago)

250 Versions

  • 5.1.0                                ...           2 months ago
  • 5.0.0                                ...           2 months ago
  • 4.13.1                                ...           2 months ago
  • 4.13.0                                ...           2 months ago
  • 4.12.1                                ...           2 months ago
  • 4.12.0                                ...           2 months ago
  • 4.11.0                                ...           2 months ago
  • 4.10.0                                ...           2 months ago
  • 4.9.1                                ...           2 months ago
  • 4.9.0                                ...           2 months ago
  • 4.8.2                                ...           2 months ago
  • 4.8.1                                ...           2 months ago
  • 4.8.0                                ...           2 months ago
  • 4.7.2                                ...           2 months ago
  • 4.7.1                                ...           2 months ago
  • 4.7.0                                ...           2 months ago
  • 4.6.2                                ...           2 months ago
  • 4.6.1                                ...           2 months ago
  • 4.6.0                                ...           2 months ago
  • 4.5.3                                ...           2 months ago
  • 4.5.2                                ...           2 months ago
  • 4.5.1                                ...           2 months ago
  • 4.5.0                                ...           2 months ago
  • 4.4.2                                ...           2 months ago
  • 4.4.1                                ...           2 months ago
  • 4.4.0                                ...           2 months ago
  • 4.3.2                                ...           2 months ago
  • 4.3.1                                ...           2 months ago
  • 4.3.0                                ...           3 months ago
  • 4.2.0                                ...           3 months ago
  • 4.1.0                                ...           3 months ago
  • 4.0.7                                ...           3 months ago
  • 4.0.6                                ...           3 months ago
  • 4.0.5                                ...           3 months ago
  • 4.0.4                                ...           3 months ago
  • 4.0.3                                ...           3 months ago
  • 4.0.2                                ...           3 months ago
  • 4.0.1                                ...           3 months ago
  • 4.0.0                                ...           3 months ago
  • 3.12.0                                ...           3 months ago
  • 3.11.0                                ...           3 months ago
  • 3.10.2                                ...           3 months ago
  • 3.10.1                                ...           3 months ago
  • 3.10.0                                ...           3 months ago
  • 3.9.0                                ...           3 months ago
  • 3.8.0                                ...           3 months ago
  • 3.7.0                                ...           3 months ago
  • 3.6.0                                ...           3 months ago
  • 3.5.0                                ...           4 months ago
  • 3.4.0                                ...           4 months ago
  • 3.3.0                                ...           7 months ago
  • 3.2.1                                ...           8 months ago
  • 3.2.0                                ...           8 months ago
  • 3.1.2                                ...           8 months ago
  • 3.1.1                                ...           10 months ago
  • 3.1.0                                ...           a year ago
  • 3.0.0                                ...           a year ago
  • 2.14.1                                ...           a year ago
  • 2.14.0                                ...           a year ago
  • 2.13.0                                ...           a year ago
  • 2.12.0                                ...           a year ago
  • 2.11.0                                ...           a year ago
  • 2.10.0                                ...           a year ago
  • 2.9.0                                ...           a year ago
  • 2.8.0                                ...           a year ago
  • 2.7.0                                ...           a year ago
  • 2.6.0                                ...           a year ago
  • 2.5.1                                ...           a year ago
  • 2.5.0                                ...           a year ago
  • 2.4.0                                ...           a year ago
  • 2.3.5                                ...           a year ago
  • 2.3.4                                ...           a year ago
  • 2.3.3                                ...           a year ago
  • 2.3.2                                ...           a year ago
  • 2.3.1                                ...           a year ago
  • 2.3.0                                ...           a year ago
  • 2.2.0                                ...           a year ago
  • 2.1.7                                ...           a year ago
  • 2.1.6                                ...           a year ago
  • 2.1.5                                ...           a year ago
  • 2.1.4                                ...           a year ago
  • 2.1.3                                ...           a year ago
  • 2.1.2                                ...           a year ago
  • 2.1.1                                ...           a year ago
  • 2.1.0                                ...           a year ago
  • 2.0.10                                ...           a year ago
  • 2.0.9                                ...           a year ago
  • 2.0.8                                ...           a year ago
  • 2.0.7                                ...           a year ago
  • 2.0.6                                ...           a year ago
  • 2.0.5                                ...           a year ago
  • 2.0.4                                ...           a year ago
  • 2.0.3                                ...           a year ago
  • 2.0.2                                ...           a year ago
  • 2.0.1                                ...           a year ago
  • 2.0.0                                ...           a year ago
  • 1.116.0                                ...           a year ago
  • 1.115.0                                ...           a year ago
  • 1.114.0                                ...           a year ago
  • 1.113.0                                ...           a year ago
  • 1.112.0                                ...           a year ago
  • 1.111.0                                ...           a year ago
  • 1.110.0                                ...           a year ago
  • 1.109.0                                ...           a year ago
  • 1.108.0                                ...           a year ago
  • 1.107.0                                ...           a year ago
  • 1.106.1                                ...           a year ago
  • 1.106.0                                ...           a year ago
  • 1.105.1                                ...           a year ago
  • 1.105.0                                ...           a year ago
  • 1.104.0                                ...           a year ago
  • 1.103.0                                ...           a year ago
  • 1.102.0                                ...           a year ago
  • 1.101.1                                ...           a year ago
  • 1.101.0                                ...           a year ago
  • 1.100.0                                ...           a year ago
  • 1.99.0                                ...           a year ago
  • 1.98.2                                ...           a year ago
  • 1.98.1                                ...           a year ago
  • 1.98.0                                ...           a year ago
  • 1.97.1                                ...           a year ago
  • 1.97.0                                ...           a year ago
  • 1.96.0                                ...           a year ago
  • 1.95.0                                ...           a year ago
  • 1.94.0                                ...           a year ago
  • 1.93.1                                ...           a year ago
  • 1.93.0                                ...           a year ago
  • 1.92.0                                ...           a year ago
  • 1.91.1                                ...           a year ago
  • 1.91.0                                ...           a year ago
  • 1.90.1                                ...           a year ago
  • 1.90.0                                ...           a year ago
  • 1.89.0                                ...           a year ago
  • 1.88.0                                ...           a year ago
  • 1.87.0                                ...           a year ago
  • 1.86.0                                ...           a year ago
  • 1.85.0                                ...           a year ago
  • 1.84.0                                ...           a year ago
  • 1.83.0                                ...           a year ago
  • 1.82.0                                ...           a year ago
  • 1.81.0                                ...           a year ago
  • 1.80.1                                ...           a year ago
  • 1.80.0                                ...           a year ago
  • 1.79.0                                ...           a year ago
  • 1.78.0                                ...           a year ago
  • 1.77.0                                ...           a year ago
  • 1.76.0                                ...           a year ago
  • 1.75.0                                ...           a year ago
  • 1.74.0                                ...           a year ago
  • 1.73.0                                ...           a year ago
  • 1.72.0                                ...           a year ago
  • 1.71.0                                ...           a year ago
  • 1.70.0                                ...           a year ago
  • 1.69.0                                ...           a year ago
  • 1.68.0                                ...           a year ago
  • 1.67.0                                ...           a year ago
  • 1.66.0                                ...           a year ago
  • 1.65.0                                ...           a year ago
  • 1.64.0                                ...           a year ago
  • 1.63.0                                ...           a year ago
  • 1.62.0                                ...           a year ago
  • 1.61.0                                ...           a year ago
  • 1.60.2                                ...           a year ago
  • 1.60.1                                ...           a year ago
  • 1.60.0                                ...           a year ago
  • 1.59.0                                ...           a year ago
  • 1.58.1                                ...           a year ago
  • 1.58.0                                ...           a year ago
  • 1.57.0                                ...           a year ago
  • 1.56.0                                ...           a year ago
  • 1.55.0                                ...           a year ago
  • 1.54.1                                ...           a year ago
  • 1.54.0                                ...           a year ago
  • 1.53.0                                ...           a year ago
  • 1.52.1                                ...           a year ago
  • 1.52.0                                ...           a year ago
  • 1.51.0                                ...           a year ago
  • 1.50.0                                ...           a year ago
  • 1.49.0                                ...           a year ago
  • 1.48.0                                ...           a year ago
  • 1.47.1                                ...           a year ago
  • 1.47.0                                ...           a year ago
  • 1.46.0                                ...           a year ago
  • 1.45.3                                ...           a year ago
  • 1.45.2                                ...           a year ago
  • 1.45.1                                ...           a year ago
  • 1.45.0                                ...           a year ago
  • 1.44.0                                ...           a year ago
  • 1.43.1                                ...           a year ago
  • 1.43.0                                ...           a year ago
  • 1.42.1                                ...           a year ago
  • 1.42.0                                ...           a year ago
  • 1.41.0                                ...           a year ago
  • 1.40.0                                ...           a year ago
  • 1.39.3                                ...           a year ago
  • 1.39.2                                ...           a year ago
  • 1.39.1                                ...           a year ago
  • 1.39.0                                ...           a year ago
  • 1.38.0                                ...           a year ago
  • 1.37.0                                ...           a year ago
  • 1.36.0                                ...           a year ago
  • 1.35.0                                ...           a year ago
  • 1.34.0                                ...           a year ago
  • 1.33.0                                ...           a year ago
  • 1.32.0                                ...           a year ago
  • 1.31.0                                ...           a year ago
  • 1.30.1                                ...           a year ago
  • 1.30.0                                ...           a year ago
  • 1.29.0                                ...           a year ago
  • 1.28.0                                ...           a year ago
  • 1.27.0                                ...           a year ago
  • 1.26.0                                ...           a year ago
  • 1.25.0                                ...           a year ago
  • 1.24.1                                ...           a year ago
  • 1.24.0                                ...           a year ago
  • 1.23.0                                ...           a year ago
  • 1.22.0                                ...           a year ago
  • 1.21.2                                ...           a year ago
  • 1.21.1                                ...           a year ago
  • 1.21.0                                ...           a year ago
  • 1.20.0                                ...           a year ago
  • 1.19.0                                ...           a year ago
  • 1.18.0                                ...           a year ago
  • 1.17.0                                ...           a year ago
  • 1.16.0                                ...           a year ago
  • 1.15.0                                ...           a year ago
  • 1.14.0                                ...           a year ago
  • 1.13.0                                ...           a year ago
  • 1.12.0                                ...           a year ago
  • 1.11.0                                ...           a year ago
  • 1.10.0                                ...           a year ago
  • 1.9.0                                ...           a year ago
  • 1.8.0                                ...           a year ago
  • 1.7.3                                ...           a year ago
  • 1.7.2                                ...           a year ago
  • 1.7.1                                ...           a year ago
  • 1.7.0                                ...           a year ago
  • 1.6.1                                ...           a year ago
  • 1.6.0                                ...           a year ago
  • 1.5.1                                ...           a year ago
  • 1.5.0                                ...           a year ago
  • 1.4.1                                ...           a year ago
  • 1.4.0                                ...           a year ago
  • 1.3.0                                ...           a year ago
  • 1.2.1                                ...           a year ago
  • 1.2.0                                ...           a year ago
  • 1.1.0                                ...           a year ago
  • 1.0.2                                ...           a year ago
  • 1.0.1                                ...           a year ago
  • 1.0.0                                ...           a year ago
Maintainers (1)
Downloads
Today 0
This Week 43
This Month 207
Last Day 1
Last Week 165
Last Month 1
Dependencies (4)
Dev Dependencies (10)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |