# req-custom

> Add custom parameters to an Object with Symbol, can be used as express middleware to add custom parameters to the req object.

Latest version **1.0.1** (published 2018-05-04) · ISC license · 0 weekly downloads

## Install

```sh
npm install req-custom
pnpm add req-custom
yarn add req-custom
bun add req-custom
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2018-05-04 |
| First published | 2018-04-27 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Benco1967 |
| Maintainers | benco1967 |
| Keywords | node, express, middleware, custom parameters |

## Links

- npm: https://www.npmjs.com/package/req-custom
- Repository: https://github.com/benco1967/req-custom
- Homepage: https://github.com/benco1967/req-custom#readme
- Issues: https://github.com/benco1967/req-custom/issues
- npm.io page: https://npm.io/package/req-custom

## Alternatives

- [@expo/fingerprint](https://npm.io/package/@expo/fingerprint.md) — 6.2M weekly downloads
- [@azure/monitor-opentelemetry-exporter](https://npm.io/package/@azure/monitor-opentelemetry-exporter.md) — 850.0K weekly downloads
- [@azure/monitor-opentelemetry](https://npm.io/package/@azure/monitor-opentelemetry.md) — 624.0K weekly downloads
- [@posthog/ai](https://npm.io/package/@posthog/ai.md) — 423.3K weekly downloads
- [fakefilter](https://npm.io/package/fakefilter.md) — 63.9K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2018-05-04
- 1.0.0 — 2018-04-27

## README

## Custom parameters (*customParams*)
This middleware allows to add parameters on a object, without fear of key conflict. 
It adds an object containing the parameters with a *Symbol* key.


### Installation 
`$ npm install --save req-custom`

### Usage
#### Adding as a middleware

```javascript
const express = require('express');
const app = express();
const customParameters = require('req-custom');

app.use(customParameters());
```

#### Adding custom parameters to a random object

```javascript
const customParameters = require('req-custom');
const foo = {};

customParameters(foo);
```

#### Adding with a specific *Symbol*

```javascript
const customParameters = require('req-custom');
const foo = {};

customParameters('id')(foo);
foo.setPrm('bar', 42);
foo[Symbol.for('id')].bar === 42; // => true
```

#### Adding parameters
***`req.setPrm('parameter name', value) => req`***
```javascript
function middlewareWitre(req, res, next) {
  req.setPrm('myParam', { foo: 42, bar: { baz: 'value' } }); // => req
  req.setPrm('anotherOne', 42);                              // => req
  //...
}
```

#### Retrieving a parameter or a sub-key
***`req.getPrm('parameter name'[, ...subKeys]) => value`***

```javascript
function middlewareUse(req, res, next) {
  const a = req.getPrm('myParam');               // => { foo: 42, bar: { baz: 'value' } }
  const b = req.getPrm('myParam', "foo");        // => 42
  const c = req.getPrm('myParam', "bar", "baz"); // => 'value'
  const d = req.getPrm('myParam', "qux");        // => null
  const foo = req.getPrm('quux');                // => null
  //...
}
```

#### Deleting a parameter
***`req.deletePrm('parameter name') => value`***

```javascript
function middlewareDelete(req, res, next) {
  req.deletePrm('myParam'); // => { foo: 42, bar: { baz: 'value' } }
  req.deletePrm('quux');    // => null
  //...
}
```

#### Check a parameter
***`req.hasPrm('parameter name') => true|false`***
```javascript
function middlewareCheck(req, res, next) {
  req.hasPrm('myParam');  // => false
  req.hasPrm('quux');     // => true
  //...
}
```

---
_Source: https://npm.io/package/req-custom · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
