New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

benalu

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

benalu - npm Package Compare versions

Comparing version 0.0.8 to 1.0.0

7

dist/benalu.d.ts

@@ -11,7 +11,7 @@ export declare enum MemberType {

memberType: MemberType;
proceed(): any;
proceed(): void;
}
export interface InterceptionInfo {
memberName: string;
interceptors: Array<(invocation: Invocation) => void>;
interceptor: (invocation: Invocation) => void;
}

@@ -21,3 +21,3 @@ export interface MemberProxyStrategyInfo {

memberName: string;
interceptors: Array<(invocation: Invocation) => void>;
interceptor: (invocation: Invocation) => void;
}

@@ -43,2 +43,3 @@ export interface MemberProxyStrategy {

addInterception(interception: (invocation: Invocation) => void): this;
private createProxy(origin, interceptor);
build(): T;

@@ -45,0 +46,0 @@ private getStrategy(memberType);

@@ -13,22 +13,17 @@ "use strict";

Interception.prototype.invoke = function (memberType, originMemberInvoker, parameters) {
if (this.info.interceptors.length == 0) {
if (!this.info.interceptor) {
return originMemberInvoker(parameters);
}
else {
var returnValue = void 0;
for (var _i = 0, _a = this.info.interceptors; _i < _a.length; _i++) {
var interceptor = _a[_i];
var invocation = {
parameters: parameters,
memberType: memberType,
memberName: this.info.memberName,
proceed: function () {
this.returnValue =
originMemberInvoker(parameters);
}
};
interceptor(invocation);
returnValue = invocation.returnValue;
}
return returnValue;
var invocation = {
parameters: parameters,
memberType: memberType,
memberName: this.info.memberName,
proceed: function () {
this.returnValue =
originMemberInvoker(parameters);
}
};
this.info.interceptor(invocation);
return invocation.returnValue;
}

@@ -91,11 +86,11 @@ };

};
BenaluBuilder.prototype.build = function () {
BenaluBuilder.prototype.createProxy = function (origin, interceptor) {
var proxy = new Object();
for (var key in this.origin) {
var memberType = typeof this.origin[key];
for (var key in origin) {
var memberType = typeof origin[key];
var strategy = this.getStrategy(memberType);
strategy.apply(proxy, {
memberName: key,
origin: this.origin,
interceptors: this.intercepts
origin: origin,
interceptor: interceptor
});

@@ -105,2 +100,10 @@ }

};
BenaluBuilder.prototype.build = function () {
var originObject = this.origin;
for (var _i = 0, _a = this.intercepts; _i < _a.length; _i++) {
var interceptor = _a[_i];
originObject = this.createProxy(originObject, interceptor);
}
return originObject;
};
BenaluBuilder.prototype.getStrategy = function (memberType) {

@@ -107,0 +110,0 @@ if (memberType == "function") {

{
"name": "benalu",
"version": "0.0.8",
"version": "1.0.0",
"description": "A dynamic proxy for javascript",

@@ -8,3 +8,3 @@ "main": "dist/benalu.js",

"scripts": {
"test": "mocha tests/**/*.js"
"test": "gulp"
},

@@ -21,12 +21,13 @@ "keywords": [

"devDependencies": {
"@types/chai": "^3.4.34",
"@types/mocha": "^2.2.33",
"chai": "^3.5.0",
"gulp": "^3.9.1",
"gulp-istanbul": "^0.10.3",
"gulp-mocha": "^2.2.0",
"gulp-tslint": "^4.3.3",
"gulp-typescript": "^2.12.1",
"run-sequence": "^1.1.5",
"tslint": "^3.5.0",
"typescript": "^1.8.2"
"gulp-istanbul": "^1.1.1",
"gulp-mocha": "^3.0.1",
"gulp-typescript": "^3.1.3",
"mocha": "^3.2.0",
"run-sequence": "^1.2.2",
"typescript": "^2.0.10"
}
}

@@ -11,3 +11,2 @@ #Benalu

Benalu also useful for IOC container library that hasn't support for interception
like [Inversify 1.x](http://inversify.io)

@@ -30,2 +29,4 @@ ###Features

```Javascript
var Benalu = require('benalu');
//declare the class

@@ -74,5 +75,47 @@ function MyObject(){}

###Interception Priority
Interception can be applied more than one in a proxy. The last inserted interceptor
having the most priority. If the last interceptor change the return value of Invocation
then all previous override will be ignored.
###Multiple Interception
Benalu also support multiple interception.
```Javascript
var Benalu = require('benalu');
function MyObject(){}
MyObject.prototype.getNumber = function(){
console.log("The real method called");
return 700;
}
var myObject = new MyObject();
var proxy = Benalu.fromInstance(myObject)
.addInterception(function(i) {
if(i.methodName == "getNumber"){
console.log("First interceptor before proceed");
i.proceed();
console.log("First interceptor after proceed");
i.returnValue = 300;
}
})
.addInterception(function(i) {
if(i.methodName == "getNumber"){
console.log("Second interceptor before proceed");
i.proceed();
console.log("Second interceptor after proceed");
i.returnValue = i.returnValue + 300;
}
})
.build();
var numResult = proxy.getNumber();
//numResult = 600
```
Above code will write log in the console like below:
```
Second interceptor before proceed
First interceptor before proceed
The real method called
First interceptor after proceed
Second interceptor after proceed
```
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc