proxify-method
Advanced tools
+3
-2
@@ -10,5 +10,6 @@ declare function proxify(result: any, chainMehod: { | ||
| resultFromChain: boolean; | ||
| <T>(name: string | INameOrAsserter, asserter?: (...args: any[]) => any): { | ||
| (name: string | INameOrAsserter, asserter?: (...args: any[]) => any): { | ||
| chainProxify: ISetUpChain; | ||
| initChainModel: (ctx: any, bindCtx?: any, proxityPattern?: string | RegExp) => void; | ||
| initContextChainModel: (ctx: any, proxityPattern?: string | RegExp) => void; | ||
| initPrototyeChainModel: (ctx: new (...args: any[]) => any, proxityPattern?: string | RegExp) => void; | ||
| }; | ||
@@ -15,0 +16,0 @@ } |
+15
-15
@@ -17,6 +17,7 @@ "use strict"; | ||
| exports.proxify = proxify; | ||
| function initChainModel(ctx, bindCtx, proxityPattern, chainMehod, resultFromChain) { | ||
| const ownProps = Object.getOwnPropertyNames(ctx.__proto__); | ||
| function initChainModel(ctx, proxityPattern, chainMehod, resultFromChain, base) { | ||
| const baseObj = ctx[base]; | ||
| const ownProps = Object.getOwnPropertyNames(baseObj); | ||
| let onlyMethods = ownProps | ||
| .filter((p) => (typeof ctx.__proto__[p]) === 'function' && !(p === 'constructor')); | ||
| .filter((p) => (typeof baseObj[p]) === 'function' && !(p === 'constructor')); | ||
| if (proxityPattern) { | ||
@@ -26,8 +27,14 @@ onlyMethods = onlyMethods.filter((m) => m.match(proxityPattern)); | ||
| onlyMethods.forEach((m) => { | ||
| const currentMethod = ctx.__proto__[m]; | ||
| ctx.__proto__[m] = function (...args) { | ||
| return proxify(currentMethod.call(bindCtx, ...args), chainMehod, resultFromChain); | ||
| const currentMethod = baseObj[m]; | ||
| baseObj[m] = function (...args) { | ||
| return proxify(currentMethod.call(this, ...args), chainMehod, resultFromChain); | ||
| }; | ||
| }); | ||
| } | ||
| function initContextChainModel(ctx, proxityPattern, chainMehod, resultFromChain) { | ||
| initChainModel(ctx, proxityPattern, chainMehod, resultFromChain, '__proto__'); | ||
| } | ||
| function initPrototyeChainModel(ctx, proxityPattern, chainMehod, resultFromChain) { | ||
| initChainModel(ctx, proxityPattern, chainMehod, resultFromChain, 'prototype'); | ||
| } | ||
| function setUpChain(name, asserter, _chainMehod = {}) { | ||
@@ -44,17 +51,10 @@ if ((typeof name).includes('function') && name.name) { | ||
| chainProxify: (name, asserter) => setUpChain(name, asserter, _chainMehod), | ||
| initChainModel: (ctx, bindCtx, proxityPattern = null) => { | ||
| initContextChainModel: (ctx, proxityPattern = null) => { | ||
| if (utils_1.isString(proxityPattern)) { | ||
| proxityPattern = new RegExp(proxityPattern); | ||
| } | ||
| if (utils_1.isString(bindCtx) || utils_1.isRegex(bindCtx)) { | ||
| proxityPattern = utils_1.isString(bindCtx) ? new RegExp(bindCtx) : bindCtx; | ||
| bindCtx = ctx; | ||
| } | ||
| if (!bindCtx) { | ||
| bindCtx = ctx; | ||
| } | ||
| const resultFromChain = setUpChain.resultFromChain; | ||
| // back to default condition, should be disabled = false | ||
| setUpChain.resultFromChain = false; | ||
| initChainModel(ctx, bindCtx, proxityPattern, _chainMehod, resultFromChain); | ||
| initContextChainModel(ctx, proxityPattern, _chainMehod, resultFromChain); | ||
| } | ||
@@ -61,0 +61,0 @@ }; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"} |
@@ -57,3 +57,3 @@ import {expect} from 'chai'; | ||
| .chainProxify('assertResponsePropEqual', assertResponsePropEqual) | ||
| .initChainModel(this); | ||
| .initContextChainModel(this); | ||
| } | ||
@@ -60,0 +60,0 @@ } |
+1
-1
| { | ||
| "name": "proxify-method", | ||
| "version": "0.0.11", | ||
| "version": "0.0.12", | ||
| "description": "Project for flexible extension of the existing functionality", | ||
@@ -5,0 +5,0 @@ "main": "built/index.js", |
+1
-1
@@ -35,3 +35,3 @@ | ||
| .chainProxify('strictAssertBody', assertResponseBodyStrictEqual) | ||
| .initChainModel(this); | ||
| .initContextChainModel(this); | ||
| } | ||
@@ -38,0 +38,0 @@ |
25761
0.71%395
0.25%