You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					95 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					95 lines
				
				1.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
								# 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#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
							 |