meld

AOP for JS with before, around, on, afterReturning, afterThrowing, after advice, and pointcut support

  • meld

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
meld
64541.3.28 years ago11 years agoMinified + gzip package size for meld in KB

Readme

Build Status
Aspect Oriented Programming for Javascript. It allows you to change the behavior of, or add behavior to methods and functions (including constructors) non-invasively.
As a simple example, instead of changing code, you can use meld to log the result of myObject.doSomething:
var myObject = {
	doSomething: function(a, b) {
		return a + b;
	}
};

// Call a function after myObject.doSomething returns
var remover = meld.after(myObject, 'doSomething', function(result) {
	console.log('myObject.doSomething returned: ' + result);
});

myObject.doSomething(1, 2); // Logs: "myObject.doSomething returned: 3"

remover.remove();

myObject.doSomething(1, 2); // Nothing logged
Docs
Quick Start

AMD

  1. Get it using one of the following
1. `yeoman install meld`, or
1. `bower install meld`, or
1. `git clone https://github.com/cujojs/meld`, or
1. `git submodule add https://github.com/cujojs/meld`
  1. Configure your loader with a package:
```js
packages: [
	{ name: 'meld', location: 'path/to/meld', main: 'meld' },
	// ... other packages ...
]
```
  1. define(['meld', ...], function(meld, ...) { ... }); or require(['meld', ...], function(meld, ...) { ... });

Node

  1. npm install meld
  2. var meld = require('meld');

RingoJS

  1. ringo-admin install cujojs/meld
  2. var meld = require('meld');
Running the Unit Tests
Install buster.js
npm install -g buster
Run unit tests in Node:
buster test
What's New

1.3.0

  • meld() is now a function that adds aspects.
* **DEPRECATED:** `meld.add()`.  Use `meld()` instead.

1.2.2

  • Remove stray console.log.

1.2.1

  • Fix for IE8-specific issue with meld's internal use of Object.defineProperty.
  • Internally shim Object.create if not available to so that meld no longer requires an Object.create shim to advise constructors in pre-ES5 environments.

1.2.0

* trace: trace method call entry/return/throw
* memoize: simple memoization for methods and functions
* cache: configurable caching aspect to do more than simple memoization

1.1.0

  • Advice can be applied directly to methods on a function.
  • Removed undocumented behavior that implicitly adds constructor prototype advice: to advise a prototype, pass the prototype as the advice target.

1.0.0


See the full Changelog here
References