open-index/open-npm huggingface dataset:
npm package: @putout/plugin-remove-useless-template-expressions
Description: 🐊Putout plugin adds ability to remove useless template expressions
Author: coderaiser
Latest version: 3.0.2

# @putout/plugin-remove-useless-template-expressions [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-remove-useless-template-expressions.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-remove-useless-template-expressions"npm"

> Template literals are literals delimited with backtick (`) characters, allowing for multi-line strings, string interpolation with embedded expressions, and special constructs called tagged templates.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to remove useless `template expressions`.

## Install

```
npm i @putout/plugin-remove-useless-template-expressions -D
```

## Rule

```json
{
    "rules": {
        "remove-useless-template-expressions": "on"
    }
}
```

## ❌ Example of incorrect code

```js
const y = `${'hello'} + ${'world'}`;
```

## ✅ Example of correct code

```js
const y = `hello + world`;
```

## License

MIT
npm package: @putout/plugin-remove-useless-templates
Description: 🐊Putout plugin adds ability to find and remove useless template string
Author: coderaiser
Latest version: 2.0.0

# @putout/plugin-remove-useless-templates [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-remove-useless-templates.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-remove-useless-templates"npm"

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to find and remove useless `template string`. Nut bundled to `putout` (by default `convert-template-to-string` is used).

## Install

```
npm i @putout/plugin-remove-useless-templates
```

## Rule

```json
{
    "rules": {
        "remove-useless-templates": "on"
    }
}
```

## ❌ Example of incorrect code

```js
console.log(`${str}`);
```

## ✅ Example of correct code

```js
console.log(str);
```

## License

MIT
npm package: @putout/plugin-remove-useless-type-conversion
Description: 🐊Putout plugin adds ability to remove useless type conversion
Author: coderaiser
Latest version: 3.0.1

# @putout/plugin-remove-useless-type-conversion [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-remove-useless-type-conversion.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-remove-useless-type-conversion "npm"

> It is possible to use a couple of **NOT** operators (`!!`) in series to explicitly force the conversion of any value to the corresponding boolean primitive. The conversion is based on the "truthyness" or "falsyness" of the value.
>
> The same conversion can be done through the `Boolean` function.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_NOT)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to remove useless type conversion. Merged to [`@putout/plugin-types`](https://www.npmjs.com/package/@putout/plugin-types).

## Install

```
npm i @putout/plugin-remove-useless-type-conversion
```

## Rule

```json
{
    "rules": {
        "remove-useless-type-conversion/named": "on",
        "remove-useless-type-conversion/with-double-negations": "on"
    }
}
```

## named

### ❌ Example of incorrect code

```js
const a = !![1].includes(1);
const b = Boolean([1].includes(1));
```

### ✅ Example of correct code

```js
const a = [1].includes(1);
```

## with-double-negations

### ❌ Example of incorrect code

```js
if (!!a) {
    console.log('hi');
}
```

### ✅ Example of correct code

```js
if (a) {
    console.log('hi');
}
```

## Comparison

Linter | Rule | Fix
--------|-------|------------|
🐊 **Putout** | [`remove-useless-type-conversion`](https://github.com/coderaiser/putout/tree/master/packages/plugin-remove-useless-type-conversion#readme)| ✅
⏣ **ESLint** | [`no-implicit-coercion`](https://eslint.org/docs/rules/no-implicit-coercion) | ✅

## License

MIT
npm package: @putout/plugin-remove-useless-type-convertion
Description: putout plugin adds ability to remove useless type convertion
Author: coderaiser
Latest version: 3.0.1

# @putout/plugin-remove-useless-convertion [![NPM version][NPMIMGURL]][NPMURL] [![Dependency Status][DependencyStatusIMGURL]][DependencyStatusURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-remove-useless-convertion.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-remove-useless-convertion"npm"
[DependencyStatusURL]: https://david-dm.org/coderaiser/putout?path=packages/plugin-remove-useless-convertion
[DependencyStatusIMGURL]: https://david-dm.org/coderaiser/putout.svg?path=packages/plugin-remove-useless-convertion

`putout` plugin adds ability to apply shorthand properties. Renamed to [@putout/remove-useless-type-conversion](https://www.npmjs.com/package/@putout/plugin-remove-useless-type-conversion)

## Install

```
npm i @putout/plugin-remove-useless-convertion
```

## Rule

```json
{
    "rules": {
        "remove-useless-convertion/named": "on",
        "remove-useless-convertion/with-double-negations": "on"
    }
}
```

## ❌ Incorrect code example

```js
const a = !![1].includes(1);
const b = Boolean([1].includes(1));
```

## ✅ Correct code Example

```js
const a = [1].includes(1);
```

## License

MIT
npm package: @putout/plugin-remove-useless-typeof
Description: 🐊Putout plugin adds ability to remove useless typeof
Author: coderaiser
Latest version: 1.0.1

# @putout/plugin-remove-useless-typeof [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-remove-useless-typeof.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-remove-useless-typeof"npm"

> The `typeof` operator returns a string indicating the type of the unevaluated operand.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to apply shorthand properties. Merged to [`@putout/plugin-types`](https://www.npmjs.com/package/@putout/plugin-types).

## Install

```
npm i @putout/plugin-remove-useless-typeof
```

## Rule

```json
{
    "rules": {
        "remove-useless-typeof": "on"
    }
}
```

## ❌ Example of incorrect code

```js
typeof typeof 'hello';
```

## ✅ Example of correct code

```js
typeof 'hello';
```

## License

MIT
npm package: @putout/plugin-remove-useless-types
Description: putout plugin adds ability to find and remove useless
Author: coderaiser
Latest version: 1.4.1

# @putout/plugin-remove-useless-types [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-remove-useless-types.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-remove-useless-types "npm"

🐊[`Putout`](https://github.com/coderaiser/putout) plugin adds ability to find and remove `useless types`.
Moved to [`@putout/plugin-typescript`](https://github.com/coderaiser/putout/tree/v24.0.2/packages/plugin-typescript#remove-useless-types).

## Install

```
npm i @putout/plugin-remove-useless-types -D
```

## Rule

```json
{
    "rules": {
        "remove-useless-types": "on"
    }
}
```

## ❌ Incorrect code example

```ts
type oldType = {
    a: number,
    b: string,
};

type newType = oldType;

const x: newType = 5;
```

## ✅ Correct code Example

```ts
type oldType = {
    a: number,
    b: string,
};

const x: oldType = 5;
```

## License

MIT
npm package: @putout/plugin-remove-useless-types-from-constants
Description: putout plugin adds ability to convert any to primitive type
Author: coderaiser
Latest version: 1.2.1

# @putout/plugin-remove-useless-types-from-constants [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-remove-useless-types-from-constants.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-remove-useless-types-from-constants "npm"

🐊[`Putout`](https://github.com/coderaiser/putout) plugin adds ability to remove useless types from constants.
Moved to [`@putout/plugin-typescript`](https://github.com/coderaiser/putout/tree/v24.0.2/packages/plugin-typescript#remove-useless-types-from-constants).

## Install

```
npm i @putout/plugin-remove-useless-types-from-constants -D
```

## Rule

Rule `remove-useless-types-from-constants` is enabled by default for `ts` and `tsx` files, to disable add to `.putout.json`:

```json
{
    "rules": {
        "remove-useless-types-from-constants": "off"
    }
}
```

## ❌ Incorrect code example

```ts
const x: any = 5;
```

## ✅ Correct code Example

```ts
const x = 5;
```

## License

MIT
npm package: @putout/plugin-reuse-duplicate-init
Description: 🐊Putout plugin adds ability to reuse duplicate init
Author: coderaiser
Latest version: 8.0.1

# @putout/plugin-reuse-duplicate-init [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-reuse-duplicate-init.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-reuse-duplicate-init "npm"

> Functions are one of the fundamental building blocks it contains set of statements that performs a calculations, takes some input and returns an output. To use a function, you must define it somewhere in the scope from which you wish to call it.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to reuse duplicate init. Merged with [`@putout/plugin-variables#reuse-duplicate-init](https://www.npmjs.com/package/@putout/plugin-variables).

## Install

```
npm i @putout/plugin-reuse-duplicate-init -D
```

## Rule

```json
{
    "rules": {
        "reuse-duplicate-init": "on"
    }
}
```

## ❌ Example of incorrect code

```js
const putout = require('putout');

const {
    a,
    b,
    operator,
} = require('putout');

const {replaceWith} = operator;
```

## ✅ Example of correct code

```js
const putout = require('putout');

const {
    a,
    b,
    operator,
} = putout;

const {replaceWith} = operator;
```

## License

MIT
npm package: @putout/plugin-simplify-assignment
Description: 🐊Putout plugin adds ability to simplify assignment
Author: coderaiser
Latest version: 3.1.1

# @putout/plugin-simplify-assignment [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-simplify-assignment.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-simplify-assignment "npm"

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to simplify `assignment`.
Merged with [`@putout/plugin-assignment`](https://www.npmjs.com/package/@putout/plugin-assignment).

## Install

```
npm i @putout/plugin-simplify-assignment -D
```

## Rule

```json
{
    "rules": {
        "simplify-assignment": "on"
    }
}
```

## ❌ Example of incorrect code

```js
const {a} = {
    a: 5,
};

const [b] = [5];
const c = (() => 7)();
```

## ✅ Example of correct code

```js
const a = 5;
const b = 5;
const c = 7;
```

## License

MIT
npm package: @putout/plugin-simplify-boolean-return
Description: 🐊Putout plugin adds ability to simplify boolean return
Author: coderaiser
Latest version: 2.0.2

# @putout/plugin-simplify-boolean-return [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-simplify-boolean-return.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-simplify-boolean-return "npm"

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to simplify boolean return. Merged with [`@putout/plugin-return`](https://www.npmjs.com/package/@putout/plugin-return).


## Install

```
npm i @putout/plugin-simplify-boolean-return -D
```

## Rule

```json
{
    "rules": {
        "simplify-boolean-return": "on"
    }
}
```

Check out in 🐊[**Putout Editor**](https://putout.cloudcmd.io/#/gist/304035b9529830cf20e76e9a1f35f14c/39c743921c6bfad3984a3989f25c2986ab51e8c8).

### ❌ Example of incorrect code

```js
function isA(a, b) {
    if (a.length === b.length)
        return true;
    
    return false;
}
```

### ✅ Example of correct code

```js
function isA(a, b) {
    return a.length !== b.length;
}
```

## License

MIT
npm package: @putout/plugin-simplify-logical-expressions
Description: 🐊Putout plugin adds ability to simplify logical expressions
Author: coderaiser
Latest version: 4.0.2

# @putout/plugin-simplify-logical-expressions [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-simplify-logical-expressions.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-simplify-logical-expressions "npm"

> The logical NOT (`!`) operator takes truth to falsity and vice versa.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_NOT)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to simplify **logical expressions** containing
comparisons which will always evaluate to `true` or `false` since it's  likely indications of programmer error.
Complements [`@putout/plugin-apply-comparison-order`](https://github.com/coderaiser/putout/tree/master/packages/plugin-apply-comparison-order#readme).
Merged to [@putout/plugin-logical-expressions](https://www.npmjs.com/package/@putout/plugin-logical-expressions).

## Install

```
npm i @putout/plugin-simplify-logical-expressions -D
```

## Rule

```json
{
    "rules": {
        "simplify-logical-expressions": "on"
    }
}
```

## ❌ Example of incorrect code

```js
const is = !(options && !options.bidirectional);

if (!left.type === 'UnaryExpression');

const oneOf = a || a;
const same = a === a;
```

## ✅ Example of correct code

```js
const is = !options || options.bidirectional;

if (left.type !== 'UnaryExpression');

const oneOf = a;
const same = true;
```

The rule also simplify duplication use:

```diff
-if (a && b || a && c) {
+if (a && (b || c)) {
}
```

Wrong cases with `instanceof`:

```diff
-!a instanceof b;
-a instanceof !b;
-!a instanceof !b;
+!(a instanceof b);
```

Wrong cases with `in`:

```diff
-!a in b;
-a in !b;
+!(a in b);
```

In case of duplicates:

```diff
-a && b && a
+a && b
```

## Comparison

Linter | Rule | Fix
--------|-------|------------|
🐊 **Putout**| [`simplify-logical-expressions`](https://github.com/coderaiser/putout/tree/master/packages/plugin-simplify-logical-expressions#readme)| ✅
⏣ **ESLint** | [`no-constant-binary-expression`](https://eslint.org/docs/rules/no-constant-binary-expression) | ❌

## License

MIT
npm package: @putout/plugin-simplify-ternary
Description: 🐊Putout plugin adds ability to simplify ternary operator
Author: coderaiser
Latest version: 9.1.0

# @putout/plugin-simplify-ternary [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-simplify-ternary.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-simplify-ternary "npm"

> The **ternary** operator takes three operands: a condition followed by a question mark (`?`), then an expression to execute if the condition is truthy followed by a colon (`:`), and finally the expression to execute if the condition is falsy. This operator is frequently used as an alternative to an `if...else` statement.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to simplify **ternary** to **logical expression** when first and second operands are the same.

## Install

```
npm i @putout/plugin-simplify-ternary -D
```

## Rule

```json
{
    "rules": {
        "simplify-ternary/value": "on",
        "simplify-ternary/spread": "on"
    }
}
```

## value

Check out in 🐊[**Putout Editor**](https://putout.cloudcmd.io/#/gist/9dd4b87daa121c4fffbb63cab83b7f97/b90459bd06f8c7f71943791ee1bcb6970ade5a75).

### ❌ Example of incorrect code

```js
module.exports = fs.copyFileSync ? fs.copyFileSync : copyFileSync;

x = y ? y : z;
x = y ? z : y;
x = y ? z : false;

m = is ? a && b : a && c;
```

### ✅ Example of correct code

```js
module.exports = fs.copyFileSync || copyFileSync;

x = y || z;
x = y && z;

m = a && is ? b : c;
```

## spread

No need to use `ternary` when you can use logical expression (`&&`) it behaves in the same way, but simpler.

Check out in 🐊[**Putout Editor**](https://putout.cloudcmd.io/#/gist/8bbef76b11de45eb97e4f5647d9266bb/06840d9788ea4a2d48656331283f8da123d1e8fa).

### ❌ Example of incorrect code

```js
const a = {
    ...DEV ? {
        devtool: 'eval',
    } : {},
};
```

### ✅ Example of correct code

```js
const a = {
    ...DEV && {
        devtool: 'eval',
    },
};
```

## Comparison

Linter | Rule | Fix
--------|-------|------------|
🐊 **Putout**| [`simplify-ternary`](https://github.com/coderaiser/putout/tree/master/packages/plugin-simplify-ternary#readme)| ✅
⏣ **ESLint** | [`no-unneeded-ternary`](https://eslint.org/docs/rules/no-unneeded-ternary) | ⚠️ (partially: no [MemberExpression](https://github.com/coderaiser/putout/blob/master/docs/the-book-of-ast.md#memberexpression), [SpreadElement](https://github.com/coderaiser/putout/blob/master/docs/the-book-of-ast.md#spreadelement) support)

## License

MIT
npm package: @putout/plugin-socket-io
Description: 🐊Putout plugin helps to migrate to new version of socket.io
Author: coderaiser
Latest version: 2.0.0

# @putout/plugin-socket-io [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-socket-io-hooks.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-socket-io-hooks "npm"

> The library for web and native user interfaces
>
> (c) [socket-io.dev](https://socket-io.dev)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin helps to migrate to new version of [socket.io](https://socket.io/). *Not bundled*.

## Install

```
npm i putout @putout/plugin-socket-io-hooks -D
```

Add `.putout.json` with:

```json
{
    "plugins": ["socket-io"]
}
```

## Rules

- ✅ [convert-io-listen-to-new-server](#convert-io-listen-to-new-server);
- ✅ [declare](#declare);

## Config

```json
{
    "rules": {
        "socket-io/convert-io-listen-to-new-server": "on",
        "socket-io/declare": "on"
    }
}
```

## declare

```diff
+import {Server} from 'socket.io';
new Server(server);
```

## convert-io-listen-to-new-server

ESM has no `listen` exported, only `Server`. So it is better to change it to simplify migration.
Check out in 🐊[Putout Editor](https://putout.cloudcmd.io/#/gist/5348f80f9fea90155ca3a91a56bad498/7fd768e92dd2effd40cd7c1491bdbfc2cd5bff5c).

### ❌ Example of incorrect code

```
io.listen(server);
```

### ✅ Example of correct code

```js
new Server(server);
```

## License

MIT
npm package: @putout/plugin-sort-ignore
Description: 🐊Putout plugin sorts ignore
Author: coderaiser
Latest version: 1.0.2

# @putout/plugin-sort-ignore [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-sort-ignore.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-sort-ignore "npm"

🐊[**Putout**](https://github.com/coderaiser/putout) plugin sorts ignore.

Checkout in 🐊[**Putout Editor**](https://putout.cloudcmd.io/#/gist/c60c3474a65e446538b23f7a7e8b56c2/dc40475d61d8cff56b85ab10d49eddfbeb86cb52). Merged with [`@putout/operator-sort-ignore`](https://npmjs.org/package/@putout/operator-sort-ignore).

## Install

```
npm i @putout/plugin-sort-ignore -D
```

## Rules

```json
{
    "rules": {
        "sort-ignore": "on"
    }
}
```

## ❌ Example of incorrect code

```ignore
node_modules
*.swp
yarn-error.log
yarn.lock
.idea
.DS_Store
deno.lock

coverage
.filesystem.json
```

## ✅ Example of correct code

```ignore
.idea
.filesystem.json
.DS_Store

*.swp

yarn-error.log
yarn.lock
deno.lock

node_modules
coverage
```

## License

MIT
npm package: @putout/plugin-sort-imports-by-specifiers
Description: 🐊Putout plugin adds ability to find and sort imports by specifiers
Author: coderaiser
Latest version: 1.1.3

# @putout/plugin-sort-imports-by-specifiers [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-sort-imports-by-specifiers.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-sort-imports-by-specifiers "npm"

> The static **import** declaration is used to import read-only live bindings which are exported by another module.
> The imported bindings are called live bindings because they are updated by the module that exported the binding, but cannot be re-assigned by the importing module.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to find and sort `import` statements by specifiers. Checkout in 🐊[**Putout Editor**](https://putout.cloudcmd.io/#/gist/521e2ff199243a7ce1f65db7140c272e/28c0588281286f8a6765b8aa2ecabbfcde2973a7). Merged with [`@putout/plugin-esm`](https://www.npmjs.com/package/@putout/plugin-esm#sort-imports-by-specifiers).

## Install

```
npm i @putout/plugin-sort-imports-by-specifiers
```

## Rule

```json
{
    "rules": {
        "sort-imports-by-specifiers": "on"
    }
}
```

## ❌ Example of incorrect code

```js
import {
    a,
    b,
    c,
    d,
} from 'd';
import a1 from 'a1';
```

## ✅ Example of correct code

```js
import a1 from 'a1';
import {
    a,
    b,
    c,
    d,
} from 'd';
```

## License

MIT
npm package: @putout/plugin-split-assignment-expressions
Description: 🐊Putout plugin adds ability to find and remove process.exit
Author: coderaiser
Latest version: 2.1.0

# @putout/plugin-split-assignment-expressions [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-split-assignment-expressions.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-split-assignment-expressions "npm"

> The assignment (`=`) operator is used to assign a value to a variable or property. The assignment expression itself has a value, which is the assigned value. This allows multiple assignments to be chained in order to assign a single value to multiple variables.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Assignment)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to find and split variable declarations because (re)moving a line is simpler and less error prone then changing coma (`=`) to colon (`;`).

For the same reason, **diff** of changed declarations are more comfortable to read. Checkout in 🐊[**Putout Editor**](https://putout.cloudcmd.io/#/gist/fee33133e2313c3a741193570e307a58/f8fae66c93acc546194df49fff2a5fc13de8434c).

## Install

```
npm i @putout/plugin-split-assignment-expressions
```

## Rule

```json
{
    "rules": {
        "split-assignment-expressions": "on"
    }
}
```

## ❌ Example of incorrect code

```js
a = b = c = 1;
```

## ✅ Example of correct code

```js
a = 1;
b = a;
c = a;
```

## License

MIT
npm package: @putout/plugin-split-call-with-destructuring
Description: 🐊Putout plugin adds ability to find and  'split-call-with-destructuring' statement
Author: coderaiser
Latest version: 2.0.1

# @putout/plugin-split-call-with-destructuring [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-split-call-with-destructuring.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-split-call-with-destructuring "npm"

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to split `call` with `destructuring`. Merged with [`@putout/plugin-destructuring`](https://www.npmjs.com/package/@putout/plugin-destructuring).

Checkout in 🐊[**Putout Editor**](https://putout.cloudcmd.io/#/gist/4da111f11ed1448d7e1707a61439faff/b9a8a2041c6171cd7af5621dce7f902cc8c2ae18).

## Install

```
npm i @putout/plugin-split-call-with-destructuring
```

## Rule

```json
{
    "rules": {
        "split-call-with-destructuring": "on"
    }
}
```

## ❌ Example of incorrect code

```js
console.log('hello')({uid} = path.scope);
console.log('hello')[uid] = path.scope;
```

## ✅ Example of correct code

```js
console.log('hello');
({uid} = path.scope);

console.log('hello');
[uid] = path.scope;
```

## License

MIT
npm package: @putout/plugin-split-nested-destructuring
Description: 🐊Putout plugin adds ability to split nested destructuring
Author: coderaiser
Latest version: 4.1.2

# @putout/plugin-split-nested-destructuring [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-split-nested-destructuring.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-split-nested-destructuring "npm"

> - Don't use nested destructuring on data that comes from any external data sources (such as `REST API`s, `GraphQL` endpoints or files).
> - Don't use nested destructuring on function arguments that have long or complicated signatures.
>
> (c) [Destructuring in JavaScript: the not so good parts](https://goodguydaniel.com/blog/destructuring-not-so-good-parts)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to split nested destructuring. Merged with [`@putout/plugin-destructuring`](https://www.npmjs.com/package/@putout/plugin-destructuring).


## Install

```
npm i @putout/plugin-split-nested-destructuring -D
```

## Rule

```json
{
    "rules": {
        "split-nested-destructuring": "on"
    }
}
```

## ❌ Example of incorrect code

```js
const {
    a: {
        b,
    },
    a: {
        b: x,
    },
} = c;

function f({a: {b}}) {
    console.log(b);
}
```

## ✅ Example of correct code

```js
const {a} = c;
const {b, b: x} = a;

function f({a}) {
    const {b} = a;
    console.log(b);
}
```

## License

MIT
npm package: @putout/plugin-split-variable-declarations
Description: 🐊Putout plugin adds ability to find and remove process.exit
Author: coderaiser
Latest version: 5.0.2

# @putout/plugin-split-variable-declarations [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-split-variable-declarations.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-split-variable-declarations "npm"

> - The [`let`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let) statement declares a block-scoped local variable, optionally initializing it to a value.
> - [`const`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) statements are also block-scoped. The value of a constant can't be changed through reassignment, and it can't be redeclared. However, if a constant is an **object** or **array** its properties or items can be updated or removed.
>
> (c) MDN

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to find and split variable declarations because (re)moving a line is simpler and less error prone then changing coma (`,`) to colon (`;`). For the same reason, **diff** of changed declarations are more comfortable to read. Merged with [`@putout/plugin-variables`](http://npmjs.com/package/@putout/plugin-variables).

## Install

```
npm i @putout/plugin-split-variable-declarations
```

## Rule

```json
{
    "rules": {
        "split-variable-declarations": "on"
    }
}
```

## ❌ Example of incorrect code

```js
let a, b;
```

## ✅ Example of correct code

```js
let a;
let b;
```

## Comparison

Linter | Rule | Fix
--------|-------|------------|
🐊 **Putout** | [`remove-debugger`](https://github.com/coderaiser/putout/tree/master/packages/plugin-split-variable-declarations#readme) | ✅
⏣ **ESLint** | [`no-var`](https://eslint.org/docs/latest/rules/one-var) | ✅

## License

MIT
npm package: @putout/plugin-strict-mode
Description: 🐊Putout plugin adds ability to add or remove strict mode directive
Author: coderaiser
Latest version: 10.0.2

# @putout/plugin-strict-mode [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-strict-mode.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-strict-mode "npm"

> **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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to add **strict mode** to **CommonJS**, and remove from **ESM**, where it enabled by default. Moved to [`@putout/plugin-nodejs`](https://www.npmjs.com/package/@putout/plugin-nodejs).

## Install

```
npm i @putout/plugin-strict-mode -D
```

## Rule

```json
{
    "rules": {
        "strict-mode/add-missing": "on",
        "strict-mode/remove-useless": "on"
    }
}
```

## ❌ Example of incorrect code

ESM:

```js
'strict mode';

import a from 'b';
```

CommonJS:

```js
const a = require('b');
```

## ✅ Example of correct code

ESM:

```js
import a from 'b';
```

CommonJS:

```js
'strict mode';

const a = require('b');
```

## License

MIT
npm package: @putout/plugin-travis
Description: 🐊Putout plugin helps with Travis CI
Author: coderaiser
Latest version: 6.0.0

# @putout/plugin-travis [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-travis.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-travis"npm"

🐊[**Putout**](https://github.com/coderaiser/putout) plugin helps with [**Travis CI**](https://travis-ci.com/).

## Install

```
npm i @putout/plugin-travis -D
```

## Rules

```json
{
    "rules": {
        "travis/set-node-versions": "on",
        "travis/disable-cache": "on"
    }
}
```

## Set node versions

```diff
language: node_js
node_js:
+ - 15
  - 15
  - 14
  - 12
- - 10
```

## Disable cache

```diff
language: node_js
+cache: false
```

## License

MIT
npm package: @putout/processor-css
Description: 🐊Putout processor adds ability to parse css files
Author: coderaiser
Latest version: 12.0.1

# @putout/processor-css [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-css.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-css "npm"

🐊**Putout** processor adds ability to lint `css` files.

## Install

```
npm i @putout/processor-css -D
```

## Usage

```json
{
    "processors": ["css"]
}
```

## License

MIT
npm package: @putout/processor-docker
Description: 🐊Putout processor adds ability to parse docker files
Author: coderaiser
Latest version: 1.2.2

# @putout/processor-docker [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-docker.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-docker "npm"

> A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image. This page describes the commands you can use in a Dockerfile.
>
> (c) [docker.com](https://docs.docker.com/reference/dockerfile/)

🐊[**Putout**](https://github.com/coderaiser/putout) processor adds ability to parse `Dockerfile` to `json` and back.

## Install

```
npm i @putout/processor-toml -D
```

## Usage

```json
{
    "processors": ["docker"]
}
```

## License

MIT
npm package: @putout/processor-filesystem
Description: 🐊Putout processor adds ability to lint filesystem
Author: coderaiser
Latest version: 8.0.1

# @putout/processor-filesystem [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-filesystem.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-filesystem "npm"

🐊[**Putout**](https://github.com/coderaiser/putout) processor adds support of `.filesystem.json` files.

## Install

```
npm i @putout/processor-filesystem -D
```

## Usage

```json
{
    "processors": ["filesystem"]
}
```

## API

### `create(options)`

```
import {create} from '@putout/process-filesystem/create'

const {branch, merge} = create({
    cli: true,
    maybeSimple: true,
});
```

## License

MIT
npm package: @putout/processor-html
Description: 🐊Putout processor adds ability to parse html files and lint js snippets
Author: coderaiser
Latest version: 14.1.1

# @putout/processor-html [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-html.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-html "npm"

🐊[**Putout**](https://github.com/coderaiser/putout) processor adds ability to process `html` files.

## Install

```
npm i @putout/processor-html -D
```

## Usage

```json
{
    "processors": ["html"]
}
```

## License

MIT
npm package: @putout/processor-ignore
Description: 🐊Putout processor adds ability to lint ignore
Author: coderaiser
Latest version: 7.0.0

# @putout/processor-ignore [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-ignore.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-ignore "npm"

🐊**Putout** processor adds support of `ignore` files, like [.gitignore](https://git-scm.com/docs/gitignore) and [.eslintignore](https://eslint.org/docs/user-guide/configuring#eslintignore)

## Install

```
npm i @putout/processor-ignore -D
```

## Usage

```ignore
{
    "processors": [
        "ignore"
    ]
}
```

## License

MIT
npm package: @putout/processor-javascript
Description: 🐊Putout processor for javascript
Author: coderaiser
Latest version: 5.0.0

# @putout/processor-javascript [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-javascript.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-javascript "npm"

🐊**Putout** processor adds support of javascript files.

## Install

```
npm i @putout/processor-javascript -D
```

## Usage

```json
{
    "processors": [
        "javascript"
    ]
}
```

## License

MIT
npm package: @putout/processor-json
Description: 🐊Putout processor adds ability to lint json
Author: coderaiser
Latest version: 10.2.0

# @putout/processor-json [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-json.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-json "npm"

> **JSON** is a syntax for serializing `objects`, `arrays`, `numbers`, `strings`, `booleans`, and `null`. It is based upon **JavaScript** syntax but is distinct from it: some **JavaScript** is *not* **JSON**.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)

🐊[**Putout**](https://github.com/coderaiser/putout) processor adds support of `json` files.

## Install

```
npm i @putout/processor-json -D
```

## Usage

```json
{
    "processors": ["json"]
}
```

## License

MIT
npm package: @putout/processor-markdown
Description: 🐊Putout processor adds ability to parse markdown files and lint JavaScript, JSX, TypeScript and JSON snippets
Author: coderaiser
Latest version: 13.1.2

# @putout/processor-markdown [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-markdown.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-markdown "npm"

> **Markdown**, the simple and easy-to-use markup language you can use to format virtually any document.
>
> (c) [markdownguide.org](https://www.markdownguide.org/)

🐊[**Putout**](https://github.com/coderaiser/putout) processor adds ability to get **JavaScript**, **JSX**, **JSON** and **TypeScript** code from **Markdown** files.

## Install

```
npm i @putout/processor-markdown -D
```

## Usage

```json
{
    "processors": ["markdown"]
}
```

## Rules

- [Remove dependencies status badges](https://github.com/coderaiser/putout/tree/master/packages/processor-markdown/lib/rules/remove-dependencies-status-badge/README.md)
- [Split link with title](https://github.com/coderaiser/putout/tree/master/packages/processor-markdown/lib/rules/split-link-with-title/README.md);

## License

MIT
npm package: @putout/processor-svelte
Description: 🐊Putout processor adds ability to parse html files and lint js snippets
Author: coderaiser
Latest version: 2.0.0

# @putout/processor-svelte [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-html.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-html "npm"

🐊[**Putout**](https://github.com/coderaiser/putout) processor adds ability to get `js` and `css` code from `html` files.

## Install

```
npm i @putout/processor-html -D
```

## Usage

```json
{
    "processors": ["html"]
}
```

## License

MIT
npm package: @putout/processor-toml
Description: 🐊Putout processor adds ability to parse toml files
Author: coderaiser
Latest version: 1.1.11

# @putout/processor-toml [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-toml.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-toml "npm"

> **T**om's **O**bvious **M**inimal **L**language]
>
> (c) [toml.io](https://toml.io)

🐊[**Putout**](https://github.com/coderaiser/putout) processor adds ability to parse `toml` to `json` and back.

## Install

```
npm i @putout/processor-toml -D
```

## Usage

```json
{
    "processors": ["toml"]
}
```

## License

MIT
npm package: @putout/processor-typescript
Description: 🐊Putout processor adds ability to typecheck typescript
Author: coderaiser
Latest version: 11.0.1

# @putout/processor-typescript [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-typescript.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-typescript "npm"

🐊**Putout** processor adds support of type check for `typescript` files.

## Install

```
npm i @putout/processor-typescript -D
```

## Usage

```json
{
    "processors": ["typescript"]
}
```

## License

MIT
npm package: @putout/processor-wasm
Description: 🐊Putout processor adds ability to parse wasm files and lint js *.wast files
Author: coderaiser
Latest version: 5.0.1

# @putout/processor-wasm [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-wasm.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-wasm "npm"

> **WebAssembly** is a low-level assembly-like language with a compact binary format that runs with near-native performance. It designed to run alongside JavaScript, allowing both to work together.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/WebAssembly/)

🐊[**Putout**](https://github.com/coderaiser/putout) processor adds ability to lint `wasm`.

## Install

```
npm i @putout/processor-wasm -D
```

## Usage

```json
{
    "processors": ["wasm"]
}
```

## Rules

### convert-get-local-to-local-get

> The `local.get` instruction returns the value of the local at index `$id` in the locals vector of the current function execution. The type parameter is bound to the type of the local.
>
> (c) [Wasm Reference Manual](https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#get-local)

`get_local` is DEPRECATED.

```diff
-get_local $a
+local.get $a
```

### convert-set-local-to-local-set

> The `local.set` instruction returns the value of the local at index `$id` in the locals vector of the current function execution. The type parameter is bound to the type of the local.
>
> (c) [Wasm Reference Manual](https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#set-local)

`set_local` is DEPReCATED.

```diff
-set_local $a
+local.set $a
```

### apply-nesting

#### ❌ Example of incorrect code

```wast
(func (param $a i32) (param $b i32)
    (get_local $a)
    (get_local $b)
    (i32.add)
)
```

#### ✅ Example of correct code

```wast
(func (param $a i32) (param $b i32)
    (i32.add (get_local $a) (get_local $b))
)
```

### remove-unused

```diff
(module
    (func $one (result i32)
        i32.const 1
    )
    (func $oneTwo (param $y) (result i32 i32)
-       (call $one (local.get $y))
+       (call $one)
        i32.const 2
    )
)
```

### remove-useless-args

```diff
(module
-   (func $answer (result i32)
-       i32.const 0x2A
-   )
)
```

## License

MIT
npm package: @putout/processor-yaml
Description: 🐊Putout processor adds ability to parse yaml files and lint js snippets
Author: coderaiser
Latest version: 10.0.0

# @putout/processor-yaml [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/processor-yaml.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/processor-yaml "npm"

> **YAML** is a human-friendly data serialization language for all programming languages.
>
> (c) [yaml.org](https://yaml.org/)

🐊[**Putout**](https://github.com/coderaiser/putout) processor adds ability to transform `yaml` as `json`.

## Install

```
npm i @putout/processor-yaml -D
```

## Usage

```json
{
    "processors": ["yaml"]
}
```

## License

MIT
npm package: @putout/quick-lint
Description: quick-lint-js as library
Author: coderaiser
Latest version: 2.1.0

# Quick Lint [![License][LicenseIMGURL]][LicenseURL] [![NPM version][NPMIMGURL]][NPMURL] [![Build Status][BuildStatusIMGURL]][BuildStatusURL] [![Coverage Status][CoverageIMGURL]][CoverageURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/quick-lint.svg?style=flat
[BuildStatusURL]: https://github.com/putoutjs/quick-lint/actions?query=workflow%3A%22Node+CI%22 "Build Status"
[BuildStatusIMGURL]: https://github.com/putoutjs/quick-lint/workflows/Node%20CI/badge.svg
[LicenseIMGURL]: https://img.shields.io/badge/license-MIT-317BF9.svg?style=flat
[NPMURL]: https://npmjs.org/package/@putout/quick-lint "npm"
[LicenseURL]: https://tldrlegal.com/license/mit-license "MIT License"
[CoverageURL]: https://coveralls.io/github/putoutjs/quick-lint?branch=master
[CoverageIMGURL]: https://coveralls.io/repos/putoutjs/quick-lint/badge.svg?branch=master&service=github

[quick-lint-js](https://quick-lint-js.com/) as library.

## Install

`npm i @putout/quick-lint --save`

## API

### quickLint(source: string, options: Options)

```ts
interface Options {
    isJSX: boolean;
    isTS: boolean;
    startLine: number;
}
```

```js
const quickLint = require('@putout/quick-lint');
const option = `
    function x() {
        await m();
    }
`;

quickLint(source, {
    isJSX: true,
    isTS: false,
    startLine: 0, // default
});

// returns
[{
    rule: 'parser (quick-lint-js)',
    message: '\'await\' is only allowed in async functions',
    position: {
        line: 2,
        column: 8,
    },
}, {
    rule: 'parser (quick-lint-js)',
    message: 'use of undeclared variable: m',
    position: {
        line: 2,
        column: 14,
    },
}];
```

## License

MIT
npm package: @putout/traverse
Description: traverse ast-nodes
Author: coderaiser
Latest version: 16.0.0

# @putout/traverse [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/traverse.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/traverse "npm"

traverse AST-nodes

## Install

```
npm i @putout/traverse
```

## API

### traverse

```js
import {template} from '@putout/engine-parser';
import {traverse} from '@putout/traverse';

const node = template.ast('const a = b');

traverse(node, {
    'Identifier'(path) {
        console.log('found identifier');
    },
    
    'throw __a'(path, {__a}) {
        console.log(__a);
    },
    
    'await __'(path) {
        console.log('found await');
    },
    'for await (__ of __) __'(path) {
        console.log('found for-of');
    },
});
```

### contains

```js
import {template} from '@putout/engine-parser';
import {contains} from '@putout/traverse';

const node = template.ast('async () => await x');

contains(node, [
    'return __',
    'throw __',
    'await __',
    'for await (__ of __) __',
]);

// returns
true;
```

## License

MIT
npm package: @putput/mcp
Description: MCP server for PutPut file uploads — add file upload tools to Claude Code, Cursor, and Copilot
Latest version: 0.0.3

# @putput/mcp

File uploads for AI agents. Upload, list, and manage files from Claude Code, Cursor, Windsurf, and VS Code Copilot — no signup required.

## Quick Start

Get a free API token (no signup):

```bash
curl -X POST https://putput.io/api/v1/auth/guest | jq .token
```

### Claude Code

```bash
claude mcp add putput -- npx @putput/mcp -e PUTPUT_TOKEN=pp_your_token
```

### Cursor

Add to `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "putput": {
      "command": "npx",
      "args": ["@putput/mcp"],
      "env": {
        "PUTPUT_TOKEN": "pp_your_token"
      }
    }
  }
}
```

### VS Code Copilot

Add to `.vscode/mcp.json`:

```json
{
  "servers": {
    "putput": {
      "command": "npx",
      "args": ["@putput/mcp"],
      "env": {
        "PUTPUT_TOKEN": "pp_your_token"
      }
    }
  }
}
```

### Windsurf

Add to `~/.codeium/windsurf/mcp_config.json`:

```json
{
  "mcpServers": {
    "putput": {
      "command": "npx",
      "args": ["@putput/mcp"],
      "env": {
        "PUTPUT_TOKEN": "pp_your_token"
      }
    }
  }
}
```

### Remote (Streamable HTTP)

If your client supports remote MCP servers:

```
https://putput.io/api/v1/mcp
```

Pass your token as a Bearer token in the Authorization header.

## Tools

| Tool | Description |
|------|-------------|
| `upload_file` | Upload a file from a URL to PutPut and get a CDN link back |
| `list_files` | List uploaded files with optional prefix filter and pagination |
| `delete_file` | Delete a file by ID |
| `get_file_info` | Get file details, stats, and download URL |

## How It Works

1. Your AI agent calls `upload_file` with a URL
2. PutPut uploads the file to Cloudflare R2
3. You get back a CDN URL — done

No AWS, no config, no deploy step. Files are served from 300+ edge locations with $0 egress.

## Pricing

- **Guest:** 1 GB free, no signup, 14-day expiry
- **Free:** 10 GB free, requires account
- **Pro:** From $9/mo for 50 GB, unlimited bandwidth, $0 egress

## Links

- **Website:** https://putput.io
- **API Docs:** https://docs.putput.io
- **SDK:** `npm install @putput/sdk`
- **CLI:** `npx @putput/cli upload <file>`
- **GitHub:** https://github.com/putput-io
npm package: @putstack/prettier-config
Description: Prettier config by Putro
Author: Putro
Latest version: 2.0.0

# A Prettier configuration by Putro

This is a simple configuration for Prettier that I use across projects.

## Installation

To install this package run the following command in the terminal in the root directory of your application.

```
pnpm install -D @putstack/prettier-config
```

**OR**

```
npm install --save-dev @putstack/prettier-config
```

**OR**

```
yarn add -D @putstack/prettier-config
```

## Usage

Create a **.prettierrc**, **.prettierrc.yaml**, **.prettierrc.yml** or **.prettierrc.json** file and export a string.

**OR**

Create a **prettier.config.js** or **.prettierrc.js** file and export an object.

```
import putstackConfig from '@putstack/prettier-config';

/** @type {import("prettier").Config} */
const config = {
  ...putstackConfig,
};

export default config;
```

**OR WITH CJS**

```
module.exports = {
    ...require("@putstack/prettier-config"),
    endOfLine: 'lf', //to overwriter any configuration
}
```

## Example

This project use the prettier-config on itself, as seen in the root package.json file.