Socket
Socket
Sign inDemoInstall

@putout/plugin-nodejs

Package Overview
Dependencies
389
Maintainers
1
Versions
56
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @putout/plugin-nodejs

🐊Putout plugin adds ability to transform code to new API of Node.js


Version published
Weekly downloads
16K
decreased by-13.68%
Maintainers
1
Created
Weekly downloads
Β 

Readme

Source

@putout/plugin-nodejs NPM version

Node.js is an open-source, cross-platform, JavaScript runtime environment.

(c) Nodejs.org

🐊Putout plugin adds ability to transform to new Node.js API and apply best practices.

Install

npm i putout @putout/plugin-nodejs -D

Options

{
    "rules": {
        "nodejs/convert-commonjs-to-esm": "off",
        "nodejs/convert-esm-to-commonjs": "off",
        "nodejs/cjs-file": "off",
        "nodejs/mjs-file": "off",
        "nodejs/rename-file-cjs-to-js": "off",
        "nodejs/rename-file-mjs-to-js": "off",
        "nodejs/add-node-prefix": "on",
        "nodejs/convert-buffer-to-buffer-alloc": "on",
        "nodejs/convert-fs-promises": "on",
        "nodejs/convert-promisify-to-fs-promises": "on",
        "nodejs/convert-dirname-to-url": "on",
        "nodejs/convert-exportst-to-module-exports": "on",
        "nodejs/convert-url-to-dirname": "on",
        "nodejs/convert-top-level-return": "on",
        "nodejs/declare": "on",
        "nodejs/declare-after-require": "on",
        "nodejs/remove-process-exit": "on",
        "nodejs/add-missing-strict-mode": "on",
        "nodejs/remove-useless-strict-mode": "on",
        "nodejs/remove-useless-promisify": "on"
    }
}

add-node-prefix

Deno supports using Node.js built-in modules such as fs, path, process, and many more via node: specifiers.

(c) deno.land

Check out in 🐊Putout Editor.

❌ Example of incorrect code

import fs from 'fs';

βœ… Example of correct code

import fs from 'node:fs';

Comparison

LinterRuleFix
🐊 Putoutapply-node-prefixβœ…
⏣ ESLintprefer-node-protocolβœ…

convert-buffer-to-buffer-alloc

The Buffer() function and new Buffer() constructor are deprecated due to API usability issues that can lead to accidental security issues.

(c) DEP0005

Check out in 🐊Putout Editor.

❌ Example of incorrect code

const n = 100;
const buf = [];

new Buffer(123);
new Buffer(n);
new Buffer('hello');

new Buffer([]);
new Buffer(buf);

βœ… Example of correct code

const n = 100;
const buf = [];

Buffer.alloc(123);
Buffer.alloc(n);
Buffer.from('hello');

Buffer.from([]);
Buffer.from(buf);

convert-fs-promises

Convert fs.promises into form that will be simpler to use and convert to and from ESM.

❌ Example of incorrect code

const {readFile} = require('fs').promises;

βœ… Example of correct code

const {readFile} = require('fs/promises');

convert-promisify-to-fs-promises

❌ Example of incorrect code

const fs = require('fs');
const readFile = promisify(fs.readFile);

βœ… Example of correct code

const {readFile} = require('fs/promises');

convert-dirname-to-url

Only for ESM.

❌ Example of incorrect code

const {join} = require('path');
const path = require('path');

const file1 = join(__dirname, '../../package.json');
const file2 = path.join(__dirname, '../../package.json');

βœ… Example of correct code

const file1 = new URL('../../package.json', import.meta.url);
const file2 = new URL('../../package.json', import.meta.url);

convert-url-to-dirname

Only for CommonJS.

❌ Example of incorrect code

const {readFile} = require('fs/promises');
const file = new URL('../../package.json', import.meta.url);

βœ… Example of correct code

const {readFile} = require('fs/promises');
const {join} = require('path');
const file = join(__dirname, '../../package.json');

remove-process-exit

In most cases process.exit() is called from bin directory, if not - disable this rule using match.

-process.exit();

convert-exports-to-module-exports

Since exports = 5 wan't make any export, just change value of variable. Checkout in 🐊Putout Editor.

❌ Example of incorrect code

exports.x = 5;

βœ… Example of correct code

module.exports.x = 5;

convert-top-level-return

❌ Example of incorrect code

return;

βœ… Example of correct code

process.exit();

declare

Add declarations to built-in node.js modules:

Based on @putout/operator-declare.

❌ Example of incorrect code

await readFile('hello.txt', 'utf8');

βœ… Example of correct code

import {readFile} from 'fs/promises';

await readFile('hello.txt', 'utf8');

When you want to skip some declaration use dismiss:

{
    "rules": {
        "nodejs/declare": ["on", {
            "dismiss": ["readFile"]
        }]
    }
}

declare-after-require

Node.js follows the CommonJS module system, and the builtin require function is the easiest way to include modules that exist in separate files. The basic functionality of require is that it reads a JavaScript file, executes the file, and then proceeds to return the exports object.

(c) Nodejs.org

Check out in 🐊Putout Editor.

❌ Example of incorrect code

const name = 'hello.txt';
const {readFile} = require('fs/promises');

βœ… Example of correct code

const {readFile} = require('fs/promises');
const name = 'hello.txt';

convert-commonjs-to-esm

Convert CommonJS EcmaScript Modules.

EcmaScript module syntax is the standard way to import and export values between files in JavaScript. The import statement can be used to reference a value exposed by the export statement in another file.

(c) parceljs

require

❌ Example of incorrect code

const {join} = require('path');

const args = require('minimist')({
    string: ['a', 'b'],
});

βœ… Example of correct code

import {join} from 'path';
import minimist from 'minimist';

const args = minimist({
    string: ['a', 'b'],
});

exports

❌ Example of incorrect code

module.exports = () => {};

βœ… Example of correct code

export default () => {};

Commons

❌ Example of incorrect code

const {readFile} = require('fs/promises');

await readFile(__filename);

βœ… Example of correct code

import {readFile} from 'fs/promises';
import {fileURLToPath} from 'url';

const __filename = fileURLToPath(import.meta.url);
await readFile(__filename);

convert-esm-to-commonjs

CommonJS is a module system supported in Node, it provides a require function, which can be used to access the exports object exposed by another file.

(c) parceljs

Convert EcmaScript Modules to CommonJS.

❌ Example of incorrect code

import hello from 'world';

βœ… Example of correct code

const hello = require('world');

cjs-file

Run convert-esm-to-commonjs for all *.cjs files with help of redlint.

Check out in 🐊Putout Editor.

mjs-file

Run convert-commonjs-to-esm for all *.cjs files with help of redlint.

Check out in 🐊Putout Editor.

rename-file-cjs-to-js

Rename *.cjs files when module !== "module":

 /
 |-- package.json
 `-- lib/
-     `-- hello.cjs
+     `-- hello.js

Check out in 🐊Putout Editor.

rename-file-mjs-to-js

Rename *.mjs files when module === "module":

 /
 |-- package.json
 `-- lib/
-     `-- hello.mjs
+     `-- hello.js

Check out in 🐊Putout Editor.

add-missing-strict-mode

Strict mode makes several changes to normal JavaScript semantics:

  • Eliminates some JavaScript silent errors by changing them to throw errors.
  • Fixes mistakes that make it difficult for JavaScript engines to perform optimizations: strict mode code can sometimes be made to run faster than identical code that's not strict mode.
  • Prohibits some syntax likely to be defined in future versions of ECMAScript.

(c) MDN

Add strict mode to CommonJS:

❌ Example of incorrect code

const a = require('b');

βœ… Example of correct code

'strict mode';

const a = require('b');

βœ… Example of correct code

remove-useless-strict-mode

Remove 'use strict' from ESM.

❌ Example of incorrect code

'strict mode';

import a from 'b';

βœ… Example of correct code

import a from 'b';

remove-useless-promisify

Takes a function following the common error-first callback style, i.e. taking an (err, value) => ... callback as the last argument, and returns a version that returns promises.

(c) nodejs.org

Remove useless promisify(). Checkout in 🐊Putout Editor.

❌ Example of incorrect code

export const readSize = promisify(async (dir, options, callback) => {});

βœ… Example of correct code

export const readSize = async (dir, options, callback) => {};

License

MIT

Keywords

FAQs

Last updated on 08 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚑️ by Socket Inc