# delegates

> delegate methods and accessors to another property

Latest version **1.0.0** (published 2015-12-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install delegates
pnpm add delegates
yarn add delegates
bun add delegates
```

## Health

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

Positive: has types package; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2015-12-14 |
| First published | 2014-01-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/delegates) |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 427 |
| Maintainers | tjholowaychuk, dominicbarnes |
| Keywords | delegate, delegation |

## Links

- npm: https://www.npmjs.com/package/delegates
- Repository: https://github.com/visionmedia/node-delegates
- Homepage: https://github.com/visionmedia/node-delegates#readme
- Issues: https://github.com/visionmedia/node-delegates/issues
- npm.io page: https://npm.io/package/delegates

## Recent versions

- 1.0.0 (latest) — 2015-12-14
- 0.1.0 — 2014-10-17
- 0.0.3 — 2014-01-13
- 0.0.2 — 2014-01-13
- 0.0.1 — 2014-01-13

## README

# delegates

  Node method and accessor delegation utilty.

## Installation

```
$ npm install delegates
```

## Example

```js
var delegate = require('delegates');

...

delegate(proto, 'request')
  .method('acceptsLanguages')
  .method('acceptsEncodings')
  .method('acceptsCharsets')
  .method('accepts')
  .method('is')
  .access('querystring')
  .access('idempotent')
  .access('socket')
  .access('length')
  .access('query')
  .access('search')
  .access('status')
  .access('method')
  .access('path')
  .access('body')
  .access('host')
  .access('url')
  .getter('subdomains')
  .getter('protocol')
  .getter('header')
  .getter('stale')
  .getter('fresh')
  .getter('secure')
  .getter('ips')
  .getter('ip')
```

# API

## Delegate(proto, prop)

Creates a delegator instance used to configure using the `prop` on the given
`proto` object. (which is usually a prototype)

## Delegate.auto(proto, targetProto, targetProp)

Delegates getters, setters, values, and methods from targetProto to proto.
Assumes that targetProto objects will exist under proto objects with the key targetProp.

## Delegate#method(name)

Allows the given method `name` to be accessed on the host.

## Delegate#getter(name)

Creates a "getter" for the property with the given `name` on the delegated
object.

## Delegate#setter(name)

Creates a "setter" for the property with the given `name` on the delegated
object.

## Delegate#access(name)

Creates an "accessor" (ie: both getter *and* setter) for the property with the
given `name` on the delegated object.

## Delegate#fluent(name)

A unique type of "accessor" that works for a "fluent" API. When called as a
getter, the method returns the expected value. However, if the method is called
with a value, it will return itself so it can be chained. For example:

```js
delegate(proto, 'request')
  .fluent('query')

// getter
var q = request.query();

// setter (chainable)
request
  .query({ a: 1 })
  .query({ b: 2 });
```

# License

  MIT

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