Socket
Socket
Sign inDemoInstall

typemoq

Package Overview
Dependencies
Maintainers
1
Versions
28
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typemoq - npm Package Compare versions

Comparing version 1.6.0 to 1.7.0

7

CHANGELOG.md

@@ -0,1 +1,8 @@

v1.7.0 / 2017-05-29
===================
* enable target property enumeration of dynamic mocks #64
* replace JSON.stringify with CircularJSON.stringify to resolve circular JSON issue #63
* fix cannot read property '___matches' of null #62
v1.6.0 / 2017-05-11

@@ -2,0 +9,0 @@ ===================

4

dist/typemoq-min.js

@@ -1,2 +0,2 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("lodash")):"function"==typeof define&&define.amd?define(["exports","lodash"],e):e(t.TypeMoq=t.TypeMoq||{},t._)}(this,function(t,e){!function(t){t[t.Loose=0]="Loose",t[t.Strict=1]="Strict"}(t.MockBehavior||(t.MockBehavior={})),function(t){t[t.InAnyOrder=0]="InAnyOrder",t[t.InSequence=1]="InSequence"}(t.ExpectedCallType||(t.ExpectedCallType={}));var n,r=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),o=function(t){function e(n,r){var o=t.call(this,r)||this;return o.name=n,Object.setPrototypeOf(o,e.prototype),o}return r(e,t),e.prototype.toString=function(){var t=this.message?this.name+" - "+this.message:this.name;return t},e}(Error),i=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();!function(t){t[t.NoSetup="no setup expression found for"]="NoSetup",t[t.MoreThanOneSetup="more than one setup expression found for"]="MoreThanOneSetup",t[t.InvalidArg="invalid argument"]="InvalidArg",t[t.InvalidSetup="invalid setup expression"]="InvalidSetup",t[t.InvalidMatcher="invalid matching expression"]="InvalidMatcher",t[t.UnknownGlobalType="unknown global type"]="UnknownGlobalType",t[t.CallCountVerificationFailed="invocation count verification failed"]="CallCountVerificationFailed",t[t.CallOrderVerificationFailed="invocation order verification failed"]="CallOrderVerificationFailed",t[t.InvalidDynamicProxyRuntime="invalid dynamic proxy runtime"]="InvalidDynamicProxyRuntime"}(n||(n={}));var c=function(t){function e(n,r,o){void 0===o&&(o=void 0);var i=t.call(this,"MockException",o)||this;return i.reason=n,i.ctx=r,i.message=o,Object.setPrototypeOf(i,e.prototype),i}return i(e,t),e.prototype.toString=function(){var t=this.name+" - "+this.reason;return this.message&&(t=t+" ("+this.message+")"),t},e}(o),u=function(){function t(t,n,r,o){this._condition=t,this.min=n,this.max=r,this._failMessage=e.template(o)}return t.prototype.failMessage=function(t){return this._failMessage({i:t,n:this.min,m:this._lastCallCount})},t.prototype.verify=function(t){return this._lastCallCount=t,this._condition(t)},t.exactly=function(e){if(0>e)throw new c(n.InvalidArg,void 0,"'Times.exactly' argument cannot be a negative number");return new t(function(t){return t===e},e,e,t.NO_MATCHING_CALLS_EXACTLY_N_TIMES)},t.never=function(){return t.exactly(0)},t.once=function(){return t.exactly(1)},t.atLeastOnce=function(){return new t(function(t){return t>=1},1,255,t.NO_MATCHING_CALLS_AT_LEAST_ONCE)},t.atMostOnce=function(){return new t(function(t){return t>=0&&1>=t},0,1,t.NO_MATCHING_CALLS_AT_MOST_ONCE)},t.prototype.toString=function(){var t="";return this.min===this.max?t=0===this.min?"never":1===this.min?"once":this.min+" times":this.min>=0&&this.max<=1?t="at most once":this.min>=1&&(t="at least once"),t},t}();u.NO_MATCHING_CALLS_EXACTLY_N_TIMES="expected invocation of <%= i %> <%= n %> times, invoked <%= m %> times",u.NO_MATCHING_CALLS_AT_LEAST_ONCE="expected invocation of <%= i %> at least once, invoked <%= m %> times",u.NO_MATCHING_CALLS_AT_MOST_ONCE="expected invocation of <%= i %> at most once, invoked <%= m %> times";var a=function(){function t(){}return t.getOwnEnumerables=function(t){return this._getPropertyNames(t,!0,!1,this._enumerable)},t.getOwnNonenumerables=function(t){return this._getPropertyNames(t,!0,!1,this._notEnumerable)},t.getOwnEnumerablesAndNonenumerables=function(t){return this._getPropertyNames(t,!0,!1,this._enumerableAndNotEnumerable)},t.getPrototypeEnumerables=function(t){return this._getPropertyNames(t,!1,!0,this._enumerable)},t.getPrototypeNonenumerables=function(t){return this._getPropertyNames(t,!1,!0,this._notEnumerable)},t.getPrototypeEnumerablesAndNonenumerables=function(t){return this._getPropertyNames(t,!1,!0,this._enumerableAndNotEnumerable)},t.getOwnAndPrototypeEnumerables=function(t){return this._getPropertyNames(t,!0,!0,this._enumerable)},t.getOwnAndPrototypeNonenumerables=function(t){return this._getPropertyNames(t,!0,!0,this._notEnumerable)},t.getOwnAndPrototypeEnumerablesAndNonenumerables=function(t){return this._getPropertyNames(t,!0,!0,this._enumerableAndNotEnumerable)},t._enumerable=function(t,e){return t.propertyIsEnumerable(e)},t._notEnumerable=function(t,e){return!t.propertyIsEnumerable(e)},t._enumerableAndNotEnumerable=function(t,e){return!0},t._getPropertyNames=function(t,n,r,o){var i=[];do{if(n)for(var c=Object.getOwnPropertyNames(t),u=function(n){var r=e.find(i,function(t){return t.name===n});if(!r&&o(t,n)){var c=Object.getOwnPropertyDescriptor(t,n);i.push({name:n,desc:c})}},a=0,s=c;a<s.length;a++){var p=s[a];u(p)}if(!r)break;n=!0}while(t=Object.getPrototypeOf(t));return i},t}(),s=function(){function t(){}return t}();s.IMATCH_ID_VALUE="438A51D3-6864-49D7-A655-CA1153B86965",s.IMATCH_ID_NAME="___id",s.IMATCH_MATCHES_NAME="___matches",s.IPROXY_ID_VALUE="BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",s.IPROXY_ID_NAME="___id";var p,l=function(){function t(){}return t.isMatcher=function(t){return!e.isUndefined(t[s.IMATCH_MATCHES_NAME])&&!e.isUndefined(t[s.IMATCH_ID_NAME])&&t[s.IMATCH_ID_NAME]===s.IMATCH_ID_VALUE},t}(),f=function(){function t(){}return t.functionName=function(t){var e;if(t.name)e=t.name;else{var n=t.toString();n=n.substr("function ".length),e=n.substr(0,n.indexOf("("))}return e},t.objectName=function(e){var n=t.functionName(e.constructor);return n},t.argsName=function(t){var n=Array.prototype.slice.call(t),r=n.map(function(t){var e="";return e=l.isMatcher(t)?t.toString():JSON.stringify(t)}),o=e.join(r);return o},t.conthunktor=function(t,e){var n=new(t.bind.apply(t,[void 0].concat(e)));return n},t.clone=function(t,e){for(var n=a.getOwnAndPrototypeEnumerablesAndNonenumerables(e),r=0,o=n;r<o.length;r++){var i=o[r];Object.defineProperty(t,i.name,i.desc)}},t}(),h=function(){function t(t){this._ctor=t,this.___id=s.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var e=!1;return t&&t.constructor.prototype==this._ctor.prototype&&(e=!0),e},t.prototype.toString=function(){var t="It.isAnyObject("+f.functionName(this._ctor)+")";return t},t}(),y=function(){function t(){this.___id=s.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var e=!0;return e},t.prototype.toString=function(){return"It.isAny()"},t}(),_=function(){function t(){this.___id=s.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var n=!1;return e.isString(t)&&(n=!0),n},t.prototype.toString=function(){return"It.isAnyString()"},t}(),v=function(){function t(){this.___id=s.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var n=!1;return e.isNumber(t)&&(n=!0),n},t.prototype.toString=function(){return"It.isAnyNumber()"},t}(),d=function(){function t(t){this._pred=t,this.___id=s.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var e=!1;return t&&this._pred(t)&&(e=!0),e},t.prototype.toString=function(){var t="It.is("+this._pred+")";return t},t}(),m=function(){function t(t){this.___id=s.IMATCH_ID_VALUE,this._value=e.cloneDeep(t)}return t.prototype.___matches=function(t){var n=!1;return e.isEqual(this._value,t)&&(n=!0),n},t.prototype.toString=function(){var t=f.argsName([this._value]),e="It.isValue("+t+")";return e},t}(),b=function(){function t(t){this.___id=s.IMATCH_ID_VALUE,this._value=e.cloneDeep(t)}return t.prototype.___matches=function(t){var n=!1,r=e.pick(t,e.keys(this._value));return e.isEqual(this._value,r)&&(n=!0),n},t.prototype.toString=function(){var t=f.argsName([this._value]),e="It.isObjectWith("+t+")";return e},t}();!function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.PROPERTY=1]="PROPERTY",t[t.FUNCTION=2]="FUNCTION"}(p||(p={}));var g;!function(t){t[t.STATIC=0]="STATIC",t[t.DYNAMIC=1]="DYNAMIC"}(g||(g={}));var C,O=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();!function(t){t[t.NONE=0]="NONE",t[t.SETUP=1]="SETUP",t[t.EXECUTE=2]="EXECUTE"}(C||(C={}));var I,w=function(){function t(t,e){this.proxyType=t,this.callType=e,this.invocationType=C.NONE}return Object.defineProperty(t.prototype,"isAnUnknownDynamicCallAtExecution",{get:function(){return this.proxyType==g.DYNAMIC&&this.callType==p.UNKNOWN&&this.invocationType==C.EXECUTE},enumerable:!0,configurable:!0}),t}(),P=function(t){function n(n,r,o,i,c){void 0===i&&(i=g.STATIC),void 0===c&&(c=p.FUNCTION);var u=t.call(this,i,c)||this;return u._that=n,u._property=r,o&&(u._args=e.cloneDeep(o),u._args.length=o.length,u._args.callee=o.callee),u}return O(n,t),Object.defineProperty(n.prototype,"args",{get:function(){return this._args||{length:0,callee:null}},set:function(t){this._args=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),n.prototype.invokeBase=function(){var t={};this._that?f.clone(t,this._that):t=this._property.obj,this.returnValue=this._property.toFunc.apply(t,this._args)},n.prototype.toString=function(){var t=this.property+"("+f.argsName(this.args)+")";return t},n}(w),x=function(t){function n(n,r,o,i){void 0===o&&(o=g.STATIC),void 0===i&&(i=p.PROPERTY);var c=t.call(this,o,i)||this;return c._property=n,c.value=r,c.returnValue=e.cloneDeep(r),c}return O(n,t),Object.defineProperty(n.prototype,"args",{get:function(){var t=[];return Object.defineProperty(t,"callee",{configurable:!0,enumerable:!0,writable:!1,value:null}),t},set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),n.prototype.invokeBase=function(){this.returnValue=this._property.obj[this._property.name]},n.prototype.toString=function(){var t=""+this.property;return t},n}(w),A=function(t){function n(n,r){var o=t.call(this,n,r,g.DYNAMIC,p.UNKNOWN)||this;return o.returnValue=e.cloneDeep(r),o}return O(n,t),n}(x),N=function(t){function n(n,r,o,i){void 0===o&&(o=g.STATIC),void 0===i&&(i=p.PROPERTY);var c=t.call(this,o,i)||this;return c._property=n,c._args=e.cloneDeep(r),c._args.length=r.length,c._args.callee=r.callee,c}return O(n,t),Object.defineProperty(n.prototype,"args",{get:function(){return this._args},set:function(t){this._args=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),n.prototype.invokeBase=function(){this._property.obj[this._property.name]=this._args[0],this.returnValue=this._property.obj[this._property.name]},n.prototype.toString=function(){var t=this.property+" = "+f.argsName(this.args[0]);return t},n}(w),E=function(t){function e(e,n,r,o){void 0===r&&(r=g.STATIC),void 0===o&&(o=p.FUNCTION);var i=t.call(this,r,o)||this;return i._property=e,i._getter=n,i}return O(e,t),Object.defineProperty(e.prototype,"args",{get:function(){var t=[];return Object.defineProperty(t,"callee",{configurable:!0,enumerable:!0,writable:!1,value:null}),t},set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),e.prototype.invokeBase=function(){this.returnValue=this._property.obj[this._property.name]},e.prototype.toString=function(){var t=""+this.property;return t},e}(w),T=function(t){function n(n,r,o,i,c){void 0===i&&(i=g.STATIC),void 0===c&&(c=p.FUNCTION);var u=t.call(this,i,c)||this;return u._property=n,u._setter=r,u._args=e.cloneDeep(o),u._args.length=o.length,u._args.callee=o.callee,u}return O(n,t),Object.defineProperty(n.prototype,"args",{get:function(){return this._args},set:function(t){this._args=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),n.prototype.invokeBase=function(){this._property.obj[this._property.name]=this._args[0],this.returnValue=this._property.obj[this._property.name]},n.prototype.toString=function(){var t=this.property+"("+f.argsName(this.args[0])+")";return t},n}(w),j=function(){function t(t,n,r){this.obj=t,this.name=n,r&&(this.desc=e.cloneDeep(r))}return Object.defineProperty(t.prototype,"toFunc",{get:function(){var t;return t=e.isFunction(this.obj)?this.obj:this.obj[this.name]},enumerable:!0,configurable:!0}),t.prototype.toString=function(){var t=f.objectName(this.obj),e=t+"."+this.name;return e},t}(),k=function(){function t(t,n,r){this.obj=t,this.name=n,r&&(this.desc=e.cloneDeep(r))}return t.prototype.toString=function(){var t=f.objectName(this.obj),e=t+"."+this.name;return e},t}(),S=function(){function t(t,n){var r=this;this.___id=s.IPROXY_ID_VALUE,this.check(n);var o=this,i=a.getOwnAndPrototypeEnumerablesAndNonenumerables(n);e.each(i,function(i){if(e.isFunction(i.desc.value)){var c={configurable:i.desc.configurable,enumerable:i.desc.enumerable,writable:i.desc.writable};r.defineMethodProxy(o,t,n,i.name,c)}else{var c={configurable:i.desc.configurable,enumerable:i.desc.enumerable};void 0!==i.desc.value?r.defineValuePropertyProxy(o,t,n,i.name,i.desc.value,c):r.defineGetSetPropertyProxy(o,t,n,i.name,i.desc.get,i.desc.set,c)}})}return t.of=function(n,r){t.check(n);var o;if(e.isFunction(n)){var i=f.functionName(n);o=t.methodProxyValue(void 0,r,n,i,null)}else o=new t(r,n);return o},t.isProxy=function(t){return e.isNil(t)||e.isUndefined(t[s.IPROXY_ID_NAME])||t[s.IPROXY_ID_NAME]!==s.IPROXY_ID_VALUE?!1:!0},t.check=function(r){t.checkNotNullOrUndefined(r);var o=!1;if((e.isFunction(r)||e.isObject(r)&&!t.isPrimitiveObject(r))&&(o=!0),!o)throw new c(n.InvalidArg,r,"'"+r+"'; proxy argument should be a function or a non primitive object")},t.prototype.check=function(r){t.checkNotNullOrUndefined(r);var o=!1;if(e.isFunction(r)||!e.isObject(r)||t.isPrimitiveObject(r)||(o=!0),!o)throw new c(n.InvalidArg,r,"'"+r+"'; proxy argument should be a non primitive object")},t.checkNotNullOrUndefined=function(t){if(e.isNil(t))throw new c(n.InvalidArg,t,"'"+t+"'; proxy argument is required")},t.isPrimitiveObject=function(t){var n=!1;return(e.isFunction(t)||e.isArray(t)||e.isDate(t)||e.isNull(t))&&(n=!0),n},t.prototype.defineMethodProxy=function(e,n,r,o,i){void 0===i&&(i={configurable:!0,enumerable:!0,writable:!1}),i.value=t.methodProxyValue(e,n,r,o,i),this.defineProperty(e,o,i)},t.methodProxyValue=function(t,e,n,r,o){function i(){var i=new j(n,r,o),c=new P(t,i,arguments);return e.intercept(c),c.returnValue}return i},t.prototype.defineValuePropertyProxy=function(t,e,n,r,o,i){function c(){var t=new k(n,r),i=new x(t,o);return e.intercept(i),i.returnValue}function u(t){var o=new k(n,r),i=new N(o,arguments);e.intercept(i)}void 0===i&&(i={configurable:!0,enumerable:!0}),i.get=c,i.set=u,this.defineProperty(t,r,i)},t.prototype.defineGetSetPropertyProxy=function(t,e,n,r,o,i,c){function u(){var t=new k(n,r),i=new E(t,o);return e.intercept(i),i.returnValue}function a(t){var o=new k(n,r),c=new T(o,i,arguments);e.intercept(c)}void 0===c&&(c={configurable:!0,enumerable:!0}),c.get=u,c.set=a,this.defineProperty(t,r,c)},t.prototype.defineProperty=function(t,e,n){try{Object.defineProperty(t,e,n)}catch(r){console.log(r.message)}},t}(),M=function(){function t(t){this.___id=s.IPROXY_ID_VALUE;var e=new Proxy(function(){},t);return e}return t.of=function(e){t.check();var n=new t(e);return n},t.check=function(){if("undefined"==typeof Proxy)throw new c(n.InvalidDynamicProxyRuntime,null,"ES6 Proxy object not detected; the dynamic mocking feature requires ES6 Proxy object support")},t}(),V=function(){function t(t){this._interceptor=t}return t.prototype.apply=function(t,e,n){var r=f.functionName(t),o=new j(t,r),i=new P(t,o,n,g.DYNAMIC);return this._interceptor.intercept(i),i.returnValue},t.prototype.get=function(t,n,r){var o=this,i=t[n],c=new k(t,n),u=new A(c,i);return this._interceptor.intercept(u),!e.isFunction(i)&&u.callType==p.PROPERTY&&u.property.desc?u.returnValue:function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];o._interceptor.removeInvocation(u);var i=new j(t,n),c=new P(t,i,e,g.DYNAMIC);return o._interceptor.intercept(c),c.returnValue}},t.prototype.set=function(t,e,n,r){var o=new k(t,e),i=new N(o,[n],g.DYNAMIC);return this._interceptor.intercept(i),Reflect.set(t,e,n,r)},t.prototype.defineProperty=function(t,e,n){return n.configurable=!0,Reflect.defineProperty(t,e,n)},t}(),D=function(){function t(){}return t.createProxy=function(t,e){var n=S.of(e,t);return n},t.createProxyES6=function(t){var e=new V(t),n=M.of(e);return n},t}(),U=function(){function n(e,n,r){void 0===r&&(r=t.MockBehavior.Loose),this.targetInstance=e,this.canOverrideTarget=n,this.behavior=r,this._id=this.generateId(),this._name=this.getNameOf(this.targetInstance)}return Object.defineProperty(n.prototype,"object",{get:function(){return this._proxy},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"callBase",{get:function(){return this._callBase},set:function(t){this._callBase=t},enumerable:!0,configurable:!0}),n.prototype.generateId=function(){return"Mock<"+e.uniqueId()+">"},n.prototype.getNameOf=function(t){var n;if(e.isFunction(t))n=f.functionName(t);else if(e.isObject(t)){var r=t.constructor;n=f.functionName(r)}return n&&(n=n.trim()),n},n.prototype.verifyAll=function(){try{this._interceptor.verify()}catch(t){throw t}},n.prototype.reset=function(){this._interceptor.reset()},n}();!function(t){t[t.Continue=0]="Continue",t[t.Stop=1]="Stop"}(I||(I={}));var L,F=function(){function t(t){this.mock=t,this._actualInvocations=[],this._expectedCalls=[]}return Object.defineProperty(t.prototype,"behavior",{get:function(){return this.mock.behavior},enumerable:!0,configurable:!0}),t.prototype.addInvocation=function(t){this._actualInvocations.push(t)},t.prototype.removeInvocation=function(t){e.remove(this._actualInvocations,function(e){return e===t})},t.prototype.actualInvocations=function(){return this._actualInvocations},t.prototype.clearInvocations=function(){this._actualInvocations.splice(0,this._actualInvocations.length)},t.prototype.addExpectedCall=function(t){this._expectedCalls.push(t)},t.prototype.removeExpectedCall=function(t){e.filter(this._expectedCalls,function(e){return e.id!==t.id})},t.prototype.expectedCalls=function(){return this._expectedCalls},t.prototype.clearExpectedCalls=function(){this._expectedCalls.splice(0,this._expectedCalls.length)},t.prototype.reset=function(){this.clearInvocations(),this.clearExpectedCalls()},t}(),B=function(){function t(){}return t}(),R=function(){function t(){}return t.prototype.handleIntercept=function(t,e,n){return e.addInvocation(t),I.Continue},t}(),Y=function(){function r(){}return r.prototype.handleIntercept=function(r,o,i){var u=o.expectedCalls().slice(),a=function(t){return t.matches(r)},s=e.filter(u,function(t){return a(t)});if(s.length>1&&(a=function(t){return!t.isInvoked&&t.matches(r)}),i.call=e.find(u,function(t){return a(t)}),null!=i.call){if(r.isAnUnknownDynamicCallAtExecution&&(r.callType=i.call.setupCall.callType,r.callType==p.FUNCTION))return I.Stop;i.call.evaluatedSuccessfully()}else if(o.behavior==t.MockBehavior.Strict)throw new c(n.NoSetup,r,"'"+r+"'");return I.Continue},r}(),H=function(){function t(){}return t.prototype.handleIntercept=function(t,e,n){this._ctx=e;var r=n.call;return null!=r?(r.execute(t),I.Stop):I.Continue},t}(),q=function(){function t(){}return t.prototype.handleIntercept=function(t,e,n){return e.mock.callBase?(t.invokeBase(),I.Stop):I.Continue},t}(),G=function(){function t(){}return t.prototype.handleIntercept=function(t,e,n){return I.Continue},t}(),X=function(){function r(t){this._interceptorContext=new F(t)}return Object.defineProperty(r.prototype,"interceptorContext",{get:function(){return this._interceptorContext},enumerable:!0,configurable:!0}),r.prototype.intercept=function(t){var n=this,r=new B;t.invocationType=C.EXECUTE,e.some(this.interceptionStrategies(),function(e){return I.Stop===e.handleIntercept(t,n.interceptorContext,r)?!0:void 0})},r.prototype.removeInvocation=function(t){this._interceptorContext.removeInvocation(t)},r.prototype.addExpectedCall=function(t){this._interceptorContext.addExpectedCall(t)},r.prototype.verify=function(){var n=this._interceptorContext.expectedCalls(),r=[];if(this._interceptorContext.behavior==t.MockBehavior.Strict)for(var o=0,i=n;o<i.length;o++){var c=i[o];c.isVerifiable||c.setVerifiable(),r.push(c)}else r=e.filter(n,function(t){return t.isVerifiable});for(var u=0,a=r;u<a.length;u++){var s=a[u];this.verifyCallCount(s,s.expectedCallCount)}var p=e.filter(n,function(t){return t.isInSequence});this.verifyCallsOrder(p)},r.prototype.verifyCallCount=function(t,n){var r=this._interceptorContext.expectedCalls(),o=this._interceptorContext.actualInvocations(),i=e.filter(o,function(e){return t.matches(e)}).length;n.verify(i)||this.throwVerifyCallCountException(t.setupCall,n,r,o)},r.prototype.throwVerifyCallCountException=function(t,e,r,o){var i=e.failMessage(t),u=r.reduce(function(t,e){return t+" "+e+"\n"},""),a=o.reduce(function(t,e){return t+" "+e+"\n"},""),s=i+"\n Configured setups:\n"+u+"\n Performed invocations:\n"+a,p=new c(n.CallCountVerificationFailed,t,s);throw p},r.prototype.verifyCallsOrder=function(t){var e=this._interceptorContext.actualInvocations();this.checkCallOrderExpectations(t,e)},r.prototype.checkCallOrderExpectations=function(t,n){var r=function(r){for(var o=e.sum(r),i=0,c=0;c<r.length;c++)for(var u=t[c],a=r[c],s=1;a>=s;s++){var p=n[i++];if(!u.matches(p))return!1}return i===o},o=!1,i=function(e,n){if(!o)if(n===t.length)o=r(e);else for(var c=t[n].expectedCallCount.min;c<=t[n].expectedCallCount.max;c++)e[n]=c,i(e,n+1)};i([],0),o||this.throwVerifyCallOrderException()},r.prototype.throwVerifyCallOrderException=function(){var t=new c(n.CallOrderVerificationFailed,null);throw t},r.prototype.reset=function(){this._interceptorContext.reset()},r.prototype.interceptionStrategies=function(){var t=[new R,new Y,new H,new q,new G];return t},r}(),W=function(){function t(){}return Object.defineProperty(t.prototype,"interceptedCall",{get:function(){return this._interceptedCall},enumerable:!0,configurable:!0}),t.prototype.intercept=function(t){if(t.invocationType=C.SETUP,t.proxyType==g.DYNAMIC&&t.callType==p.UNKNOWN&&(t.callType=p.PROPERTY),this._interceptedCall)throw new c(n.MoreThanOneSetup,t,"'"+t+"'; setup should contain only one expression");this._interceptedCall=t},t.prototype.removeInvocation=function(t){this._interceptedCall&&this._interceptedCall===t&&(this._interceptedCall=void 0)},t}(),K=function(){function r(t,e,r,o){if(this.mock=t,this._setupExpression=e,this._callCount=0,this._id=this.generateId(),e(o),!r.interceptedCall)throw new c(n.InvalidSetup,this._setupExpression,"'"+this._setupExpression+"'");var i=r.interceptedCall,u=this.transformToMatchers(i.args);Object.defineProperty(u,"callee",{configurable:!0,enumerable:!0,writable:!1,value:i.args.callee}),i.args=u,this._setupCall=i}return r.ofStaticMock=function(t,e){var n=new W,o=D.createProxy(n,t.targetInstance),i=new r(t,e,n,o);return i},r.ofDynamicMock=function(t,e){var n=new W,o=D.createProxyES6(n),i=new r(t,e,n,o);return i},r.prototype.generateId=function(){return"MethodCall<"+e.uniqueId()+">"},r.prototype.transformToMatchers=function(t){var n=[];return e.each(t,function(t){if(e.isObject(t))if(l.isMatcher(t))n.push(t);else{var r=new d(function(n){return e.isEqual(n,t)});n.push(r)}else{var r=new m(t);n.push(r)}}),n},Object.defineProperty(r.prototype,"id",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"setupExpression",{get:function(){return this._setupExpression},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"setupCall",{get:function(){return this._setupCall},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"isVerifiable",{get:function(){return this._isVerifiable},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"isInSequence",{get:function(){return this._expectedCallType===t.ExpectedCallType.InSequence},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"expectedCallCount",{get:function(){return this._expectedCallCount},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"isInvoked",{get:function(){return this._isInvoked},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"callCount",{get:function(){return this._callCount},enumerable:!0,configurable:!0}),r.prototype.setVerifiable=function(e,n){void 0===e&&(e=u.once()),void 0===n&&(n=t.ExpectedCallType.InAnyOrder),this._isVerifiable=!0,this._expectedCallCount=e,this._expectedCallType=n},r.prototype.evaluatedSuccessfully=function(){this._evaluatedSuccessfully=!0},r.prototype.matches=function(t){var n=!1;return this._setupCall.property&&t&&t.property&&this._setupCall.property.name===t.property.name&&this._setupCall.args.length>=t.args.length&&(n=!0,t.isAnUnknownDynamicCallAtExecution||e.each(this._setupCall.args,function(e,r){var o=e,i=t.args[r];n&&!o.___matches(i)&&(n=!1)})),n},r.prototype.execute=function(t){if(this._isInvoked=!0,null!=this._setupCallback&&this._setupCallback.apply(this,t.args),null!=this._thrownException)throw this._thrownException;this._callCount++},r.prototype.verifiable=function(t,e){this.setVerifiable(t,e)},r.prototype.toString=function(){var t=""+this.setupCall;return this.expectedCallCount&&(t=t+", "+this.expectedCallCount),t},r}(),J=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),z=function(t){function e(e,n,r,o){var i=t.call(this,e,n,r,o)||this;return i._overrideTarget=e.canOverrideTarget,i}return J(e,t),e.ofStaticMock=function(t,n){var r=new W,o=D.createProxy(r,t.targetInstance),i=new e(t,n,r,o);return i},e.ofDynamicMock=function(t,n){var r=new W,o=D.createProxyES6(r),i=new e(t,n,r,o);return i},e.prototype.execute=function(e){t.prototype.execute.call(this,e),this._callBase?e.invokeBase():this.hasReturnValue&&(e.returnValue=this._returnValueFunc.apply(this,e.args),e.property.desc={value:this.setupCall.property.desc&&this.setupCall.property.desc.value})},e.prototype.callback=function(t){return this._setupCallback=t,this},e.prototype["throws"]=function(t){return this._thrownException=t,this},e.prototype.returns=function(t){if(this._returnValueFunc=t,this.hasReturnValue=!0,this._overrideTarget){var e=this.mock.targetInstance,n=this.setupCall.property.name,r=this.setupCall.property.desc;r&&(r.configurable=!0,r.enumerable=!0,r.value=this._returnValueFunc,Object.defineProperty(e,n,r))}return this},e.prototype.callBase=function(){return this._callBase=!0,this},e}(K),Q=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Z=function(t){function n(e,n,r){var o=t.call(this,e,n,r)||this;return o._interceptor=new X(o),o._proxy=D.createProxy(o._interceptor,e),o}return Q(n,t),n.ofInstance=function(t,e){t=n.cloneDeep(t);var r=new n(t,!0,e);return r},n.ofGlobalInstance=function(t,e){var r=new n(t,!1,e);return r},n.ofType=function(t,e,r){var o=f.conthunktor(t,r),i=new n(o,!0,e);return i},n.cloneDeep=function(t){var n=t;if(!e.isFunction(t)){var r=function(t){return S.isProxy(t)?t:void 0};n=e.cloneDeepWith(t,r)}return n},n.prototype.setup=function(t){var e=z.ofStaticMock(this,t);return this._interceptor.addExpectedCall(e),e},n.prototype.verify=function(t,e){var n=K.ofStaticMock(this,t);this._interceptor.addExpectedCall(n);try{this._interceptor.verifyCallCount(n,e)}catch(r){throw r}},n}(U),$=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),tt=function(t){function e(e,n,r){var o=t.call(this,{},n,r)||this;return e&&(o._name=e),o._interceptor=new X(o),o._proxy=D.createProxyES6(o._interceptor),o}return $(e,t),e.ofType=function(t,n){var r=new e(t,!0,n);return r},e.prototype.setup=function(t){var e=z.ofDynamicMock(this,t);return this._interceptor.addExpectedCall(e),e},e.prototype.verify=function(t,e){var n=K.ofDynamicMock(this,t);this._interceptor.addExpectedCall(n);try{this._interceptor.verifyCallCount(n,e)}catch(r){throw r}},e}(U),et=function(){function e(){}return e.ofInstance=function(e,n){void 0===n&&(n=t.MockBehavior.Loose);var r=Z.ofInstance(e,n);return r},e.ofType=function(n,r){void 0===r&&(r=t.MockBehavior.Loose);for(var o=[],i=2;i<arguments.length;i++)o[i-2]=arguments[i];var c;return c=n?e.ofType2(n,o,r):tt.ofType(void 0,r)},e.ofType2=function(e,n,r){void 0===r&&(r=t.MockBehavior.Loose);var o=Z.ofType(e,r,n);return o},e}(),nt=function(){function t(){}return t.isValue=function(t){var e=new m(t);return e},t.isObjectWith=function(t){var e=new b(t);return e},t.isAnyObject=function(t){var e=new h(t);return e},t.isAny=function(){var t=new y;return t},t.isAnyString=function(){var t=new _;return t},t.isAnyNumber=function(){var t=new v;return t},t.is=function(t){var e=new d(t);return e},t}();!function(t){t[t.Class=0]="Class",t[t.Function=1]="Function",t[t.Value=2]="Value"}(L||(L={}));var rt=function(){function t(t,e,n,r){this.mock=t,this._name=e,this._type=n,this.container=r,this._name||(this._name=t.name)}return Object.defineProperty(t.prototype,"object",{get:function(){return this.mock.object},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return this._name||this.mock.name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"behavior",{get:function(){return this.mock.behavior},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"callBase",{get:function(){return this.mock.callBase},set:function(t){this.mock.callBase=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"type",{get:function(){return this._type},enumerable:!0,configurable:!0}),t.prototype.setup=function(t){return this.mock.setup(t)},t.prototype.verify=function(t,e){this.mock.verify(t,e)},t.prototype.verifyAll=function(){this.mock.verifyAll()},t.prototype.reset=function(){this.mock.reset()},t}(),ot=function(){function n(){}return n.ofInstance=function(n,r,o,i){void 0===o&&(o=window),void 0===i&&(i=t.MockBehavior.Loose);var c=Z.ofGlobalInstance(n,i),u=e.isFunction(n)?L.Function:L.Value;return new rt(c,r,u,o)},n.ofType=function(e,n,r){void 0===n&&(n=window),void 0===r&&(r=t.MockBehavior.Loose);var o=new e,i=Z.ofInstance(o,r);return new rt(i,void 0,L.Class,n)},n.ofType2=function(e,n,r){void 0===n&&(n=window),void 0===r&&(r=t.MockBehavior.Loose);var o=tt.ofType(e,r);return new rt(o,void 0,L.Class,n)},n}(),it=function(){function t(t){this._args=t}return t.prototype["with"]=function(t){var r={};try{e.each(this._args,function(t){var o=a.getOwnAndPrototypeEnumerablesAndNonenumerables(t.container),i=e.find(o,function(e){return e.name===t.name});if(i){r[t.name]=i.desc;var u={};switch(t.type){case L.Class:u.value=function(){return t.mock.object};break;case L.Function:u.value=t.mock.object;break;case L.Value:u.get=function(){return t.mock.object;
};break;default:throw new c(n.UnknownGlobalType,t,"unknown global type: "+t.type)}try{Object.defineProperty(t.container,t.name,u)}catch(s){console.log("1: "+s)}}}),t.apply(this,this._args)}catch(o){console.log("2: "+o)}finally{e.each(this._args,function(t){var e=r[t.name];if(e){switch(t.type){case L.Class:break;case L.Function:break;case L.Value:e.configurable=!0}try{Object.defineProperty(t.container,t.name,e)}catch(n){console.log("3: "+n)}}})}},t}(),ct=function(){function t(){}return t.using=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=new it(t);return n},t}();t.Mock=et,t.It=nt,t.Times=u,t.GlobalMock=ot,t.GlobalScope=ct,t.MockException=c,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("lodash"),require("circular-json")):"function"==typeof define&&define.amd?define(["exports","lodash","circular-json"],e):e(t.TypeMoq=t.TypeMoq||{},t._,t.CircularJSON)}(this,function(t,e,n){!function(t){t[t.Loose=0]="Loose",t[t.Strict=1]="Strict"}(t.MockBehavior||(t.MockBehavior={})),function(t){t[t.InAnyOrder=0]="InAnyOrder",t[t.InSequence=1]="InSequence"}(t.ExpectedCallType||(t.ExpectedCallType={}));var r,o=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=function(t){function e(n,r){var o=t.call(this,r)||this;return o.name=n,Object.setPrototypeOf(o,e.prototype),o}return o(e,t),e.prototype.toString=function(){var t=this.message?this.name+" - "+this.message:this.name;return t},e}(Error),c=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();!function(t){t[t.NoSetup="no setup expression found for"]="NoSetup",t[t.MoreThanOneSetup="more than one setup expression found for"]="MoreThanOneSetup",t[t.InvalidArg="invalid argument"]="InvalidArg",t[t.InvalidSetup="invalid setup expression"]="InvalidSetup",t[t.InvalidMatcher="invalid matching expression"]="InvalidMatcher",t[t.UnknownGlobalType="unknown global type"]="UnknownGlobalType",t[t.CallCountVerificationFailed="invocation count verification failed"]="CallCountVerificationFailed",t[t.CallOrderVerificationFailed="invocation order verification failed"]="CallOrderVerificationFailed",t[t.InvalidDynamicProxyRuntime="invalid dynamic proxy runtime"]="InvalidDynamicProxyRuntime"}(r||(r={}));var u=function(t){function e(n,r,o){void 0===o&&(o=void 0);var i=t.call(this,"MockException",o)||this;return i.reason=n,i.ctx=r,i.message=o,Object.setPrototypeOf(i,e.prototype),i}return c(e,t),e.prototype.toString=function(){var t=this.name+" - "+this.reason;return this.message&&(t=t+" ("+this.message+")"),t},e}(i),a=function(){function t(t,n,r,o){this._condition=t,this.min=n,this.max=r,this._failMessage=e.template(o)}return t.prototype.failMessage=function(t){return this._failMessage({i:t,n:this.min,m:this._lastCallCount})},t.prototype.verify=function(t){return this._lastCallCount=t,this._condition(t)},t.exactly=function(e){if(0>e)throw new u(r.InvalidArg,void 0,"'Times.exactly' argument cannot be a negative number");return new t(function(t){return t===e},e,e,t.NO_MATCHING_CALLS_EXACTLY_N_TIMES)},t.never=function(){return t.exactly(0)},t.once=function(){return t.exactly(1)},t.atLeastOnce=function(){return new t(function(t){return t>=1},1,255,t.NO_MATCHING_CALLS_AT_LEAST_ONCE)},t.atMostOnce=function(){return new t(function(t){return t>=0&&1>=t},0,1,t.NO_MATCHING_CALLS_AT_MOST_ONCE)},t.prototype.toString=function(){var t="";return this.min===this.max?t=0===this.min?"never":1===this.min?"once":this.min+" times":this.min>=0&&this.max<=1?t="at most once":this.min>=1&&(t="at least once"),t},t}();a.NO_MATCHING_CALLS_EXACTLY_N_TIMES="expected invocation of <%= i %> <%= n %> times, invoked <%= m %> times",a.NO_MATCHING_CALLS_AT_LEAST_ONCE="expected invocation of <%= i %> at least once, invoked <%= m %> times",a.NO_MATCHING_CALLS_AT_MOST_ONCE="expected invocation of <%= i %> at most once, invoked <%= m %> times";var s=function(){function t(){}return t.getOwnEnumerables=function(t){return this._getPropertyNames(t,!0,!1,this._enumerable)},t.getOwnNonenumerables=function(t){return this._getPropertyNames(t,!0,!1,this._notEnumerable)},t.getOwnEnumerablesAndNonenumerables=function(t){return this._getPropertyNames(t,!0,!1,this._enumerableAndNotEnumerable)},t.getPrototypeEnumerables=function(t){return this._getPropertyNames(t,!1,!0,this._enumerable)},t.getPrototypeNonenumerables=function(t){return this._getPropertyNames(t,!1,!0,this._notEnumerable)},t.getPrototypeEnumerablesAndNonenumerables=function(t){return this._getPropertyNames(t,!1,!0,this._enumerableAndNotEnumerable)},t.getOwnAndPrototypeEnumerables=function(t){return this._getPropertyNames(t,!0,!0,this._enumerable)},t.getOwnAndPrototypeNonenumerables=function(t){return this._getPropertyNames(t,!0,!0,this._notEnumerable)},t.getOwnAndPrototypeEnumerablesAndNonenumerables=function(t){return this._getPropertyNames(t,!0,!0,this._enumerableAndNotEnumerable)},t._enumerable=function(t,e){return t.propertyIsEnumerable(e)},t._notEnumerable=function(t,e){return!t.propertyIsEnumerable(e)},t._enumerableAndNotEnumerable=function(t,e){return!0},t._getPropertyNames=function(t,n,r,o){var i=[];do{if(n)for(var c=Object.getOwnPropertyNames(t),u=function(n){var r=e.find(i,function(t){return t.name===n});if(!r&&o(t,n)){var c=Object.getOwnPropertyDescriptor(t,n);i.push({name:n,desc:c})}},a=0,s=c;a<s.length;a++){var p=s[a];u(p)}if(!r)break;n=!0}while(t=Object.getPrototypeOf(t));return i},t}(),p=function(){function t(){}return t}();p.IMATCH_ID_VALUE="438A51D3-6864-49D7-A655-CA1153B86965",p.IMATCH_ID_NAME="___id",p.IMATCH_MATCHES_NAME="___matches",p.IPROXY_ID_VALUE="BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",p.IPROXY_ID_NAME="___id";var l,f=function(){function t(){}return t.isMatcher=function(t){return!e.isNil(t)&&!e.isUndefined(t[p.IMATCH_MATCHES_NAME])&&!e.isUndefined(t[p.IMATCH_ID_NAME])&&t[p.IMATCH_ID_NAME]===p.IMATCH_ID_VALUE},t}(),h=function(){function t(){}return t.functionName=function(t){var e;if(t.name)e=t.name;else{var n=t.toString();n=n.substr("function ".length),e=n.substr(0,n.indexOf("("))}return e},t.objectName=function(e){var n=t.functionName(e.constructor);return n},t.argsName=function(t){var r=Array.prototype.slice.call(t),o=r.map(function(t){var e="";return e=f.isMatcher(t)?t.toString():n.stringify(t)}),i=e.join(o);return i},t.conthunktor=function(t,e){var n=new(t.bind.apply(t,[void 0].concat(e)));return n},t.clone=function(t,e){for(var n=s.getOwnAndPrototypeEnumerablesAndNonenumerables(e),r=0,o=n;r<o.length;r++){var i=o[r];Object.defineProperty(t,i.name,i.desc)}},t}(),y=function(){function t(t){this._ctor=t,this.___id=p.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var e=!1;return t&&t.constructor.prototype==this._ctor.prototype&&(e=!0),e},t.prototype.toString=function(){var t="It.isAnyObject("+h.functionName(this._ctor)+")";return t},t}(),_=function(){function t(){this.___id=p.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var e=!0;return e},t.prototype.toString=function(){return"It.isAny()"},t}(),v=function(){function t(){this.___id=p.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var n=!1;return e.isString(t)&&(n=!0),n},t.prototype.toString=function(){return"It.isAnyString()"},t}(),d=function(){function t(){this.___id=p.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var n=!1;return e.isNumber(t)&&(n=!0),n},t.prototype.toString=function(){return"It.isAnyNumber()"},t}(),m=function(){function t(t){this._pred=t,this.___id=p.IMATCH_ID_VALUE}return t.prototype.___matches=function(t){var e=!1;return t&&this._pred(t)&&(e=!0),e},t.prototype.toString=function(){var t="It.is("+this._pred+")";return t},t}(),b=function(){function t(t){this.___id=p.IMATCH_ID_VALUE,this._value=e.cloneDeep(t)}return t.prototype.___matches=function(t){var n=!1;return e.isEqual(this._value,t)&&(n=!0),n},t.prototype.toString=function(){var t=h.argsName([this._value]),e="It.isValue("+t+")";return e},t}(),g=function(){function t(t){this.___id=p.IMATCH_ID_VALUE,this._value=e.cloneDeep(t)}return t.prototype.___matches=function(t){var n=!1,r=e.pick(t,e.keys(this._value));return e.isEqual(this._value,r)&&(n=!0),n},t.prototype.toString=function(){var t=h.argsName([this._value]),e="It.isObjectWith("+t+")";return e},t}();!function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.PROPERTY=1]="PROPERTY",t[t.FUNCTION=2]="FUNCTION"}(l||(l={}));var C;!function(t){t[t.STATIC=0]="STATIC",t[t.DYNAMIC=1]="DYNAMIC"}(C||(C={}));var O,I=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();!function(t){t[t.NONE=0]="NONE",t[t.SETUP=1]="SETUP",t[t.EXECUTE=2]="EXECUTE"}(O||(O={}));var w,P=function(){function t(t,e){this.proxyType=t,this.callType=e,this.invocationType=O.NONE}return Object.defineProperty(t.prototype,"isAnUnknownDynamicCallAtExecution",{get:function(){return this.proxyType==C.DYNAMIC&&this.callType==l.UNKNOWN&&this.invocationType==O.EXECUTE},enumerable:!0,configurable:!0}),t}(),x=function(t){function n(n,r,o,i,c){void 0===i&&(i=C.STATIC),void 0===c&&(c=l.FUNCTION);var u=t.call(this,i,c)||this;return u._that=n,u._property=r,o&&(u._args=e.cloneDeep(o),u._args.length=o.length,u._args.callee=o.callee),u}return I(n,t),Object.defineProperty(n.prototype,"args",{get:function(){return this._args||{length:0,callee:null}},set:function(t){this._args=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),n.prototype.invokeBase=function(){var t={};this._that?h.clone(t,this._that):t=this._property.obj,this.returnValue=this._property.toFunc.apply(t,this._args)},n.prototype.toString=function(){var t=this.property+"("+h.argsName(this.args)+")";return t},n}(P),A=function(t){function n(n,r,o,i){void 0===o&&(o=C.STATIC),void 0===i&&(i=l.PROPERTY);var c=t.call(this,o,i)||this;return c._property=n,c.value=r,c.returnValue=e.cloneDeep(r),c}return I(n,t),Object.defineProperty(n.prototype,"args",{get:function(){var t=[];return Object.defineProperty(t,"callee",{configurable:!0,enumerable:!0,writable:!1,value:null}),t},set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),n.prototype.invokeBase=function(){this.returnValue=this._property.obj[this._property.name]},n.prototype.toString=function(){var t=""+this.property;return t},n}(P),N=function(t){function n(n,r){var o=t.call(this,n,r,C.DYNAMIC,l.UNKNOWN)||this;return o.returnValue=e.cloneDeep(r),o}return I(n,t),n}(A),E=function(t){function n(n,r,o,i){void 0===o&&(o=C.STATIC),void 0===i&&(i=l.PROPERTY);var c=t.call(this,o,i)||this;return c._property=n,c._args=e.cloneDeep(r),c._args.length=r.length,c._args.callee=r.callee,c}return I(n,t),Object.defineProperty(n.prototype,"args",{get:function(){return this._args},set:function(t){this._args=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),n.prototype.invokeBase=function(){this._property.obj[this._property.name]=this._args[0],this.returnValue=this._property.obj[this._property.name]},n.prototype.toString=function(){var t=this.property+" = "+h.argsName(this.args[0]);return t},n}(P),T=function(t){function e(e,n,r,o){void 0===r&&(r=C.STATIC),void 0===o&&(o=l.FUNCTION);var i=t.call(this,r,o)||this;return i._property=e,i._getter=n,i}return I(e,t),Object.defineProperty(e.prototype,"args",{get:function(){var t=[];return Object.defineProperty(t,"callee",{configurable:!0,enumerable:!0,writable:!1,value:null}),t},set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),e.prototype.invokeBase=function(){this.returnValue=this._property.obj[this._property.name]},e.prototype.toString=function(){var t=""+this.property;return t},e}(P),j=function(t){function n(n,r,o,i,c){void 0===i&&(i=C.STATIC),void 0===c&&(c=l.FUNCTION);var u=t.call(this,i,c)||this;return u._property=n,u._setter=r,u._args=e.cloneDeep(o),u._args.length=o.length,u._args.callee=o.callee,u}return I(n,t),Object.defineProperty(n.prototype,"args",{get:function(){return this._args},set:function(t){this._args=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"property",{get:function(){return this._property},enumerable:!0,configurable:!0}),n.prototype.invokeBase=function(){this._property.obj[this._property.name]=this._args[0],this.returnValue=this._property.obj[this._property.name]},n.prototype.toString=function(){var t=this.property+"("+h.argsName(this.args[0])+")";return t},n}(P),k=function(){function t(t,n,r){this.obj=t,this.name=n,r&&(this.desc=e.cloneDeep(r))}return Object.defineProperty(t.prototype,"toFunc",{get:function(){var t;return t=e.isFunction(this.obj)?this.obj:this.obj[this.name]},enumerable:!0,configurable:!0}),t.prototype.toString=function(){var t=h.objectName(this.obj),e=t+"."+this.name;return e},t}(),S=function(){function t(t,n,r){this.obj=t,this.name=n,r&&(this.desc=e.cloneDeep(r))}return t.prototype.toString=function(){var t=h.objectName(this.obj),e=t+"."+this.name;return e},t}(),M=function(){function t(t,n){var r=this;this.___id=p.IPROXY_ID_VALUE,this.check(t);var o=this,i=s.getOwnAndPrototypeEnumerablesAndNonenumerables(t);e.each(i,function(i){if(e.isFunction(i.desc.value)){var c={configurable:i.desc.configurable,enumerable:i.desc.enumerable,writable:i.desc.writable};r.defineMethodProxy(o,n,t,i.name,c)}else{var c={configurable:i.desc.configurable,enumerable:i.desc.enumerable};void 0!==i.desc.value?r.defineValuePropertyProxy(o,n,t,i.name,i.desc.value,c):r.defineGetSetPropertyProxy(o,n,t,i.name,i.desc.get,i.desc.set,c)}})}return t.of=function(n,r){t.check(n);var o;if(e.isFunction(n)){var i=h.functionName(n);o=t.methodProxyValue(void 0,r,n,i,null)}else o=new t(n,r);return o},t.isProxy=function(t){return e.isNil(t)||e.isUndefined(t[p.IPROXY_ID_NAME])||t[p.IPROXY_ID_NAME]!==p.IPROXY_ID_VALUE?!1:!0},t.check=function(n){t.checkNotNullOrUndefined(n);var o=!1;if((e.isFunction(n)||e.isObject(n)&&!t.isPrimitiveObject(n))&&(o=!0),!o)throw new u(r.InvalidArg,n,"'"+n+"'; proxy argument should be a function or a non primitive object")},t.prototype.check=function(n){t.checkNotNullOrUndefined(n);var o=!1;if(e.isFunction(n)||!e.isObject(n)||t.isPrimitiveObject(n)||(o=!0),!o)throw new u(r.InvalidArg,n,"'"+n+"'; proxy argument should be a non primitive object")},t.checkNotNullOrUndefined=function(t){if(e.isNil(t))throw new u(r.InvalidArg,t,"'"+t+"'; proxy argument is required")},t.isPrimitiveObject=function(t){var n=!1;return(e.isFunction(t)||e.isArray(t)||e.isDate(t)||e.isNull(t))&&(n=!0),n},t.prototype.defineMethodProxy=function(e,n,r,o,i){void 0===i&&(i={configurable:!0,enumerable:!0,writable:!1}),i.value=t.methodProxyValue(e,n,r,o,i),this.defineProperty(e,o,i)},t.methodProxyValue=function(t,e,n,r,o){function i(){var i=new k(n,r,o),c=new x(t,i,arguments);return e.intercept(c),c.returnValue}return i},t.prototype.defineValuePropertyProxy=function(t,e,n,r,o,i){function c(){var t=new S(n,r),i=new A(t,o);return e.intercept(i),i.returnValue}function u(t){var o=new S(n,r),i=new E(o,arguments);e.intercept(i)}void 0===i&&(i={configurable:!0,enumerable:!0}),i.get=c,i.set=u,this.defineProperty(t,r,i)},t.prototype.defineGetSetPropertyProxy=function(t,e,n,r,o,i,c){function u(){var t=new S(n,r),i=new T(t,o);return e.intercept(i),i.returnValue}function a(t){var o=new S(n,r),c=new j(o,i,arguments);e.intercept(c)}void 0===c&&(c={configurable:!0,enumerable:!0}),c.get=u,c.set=a,this.defineProperty(t,r,c)},t.prototype.defineProperty=function(t,e,n){try{Object.defineProperty(t,e,n)}catch(r){console.log(r.message)}},t}(),V=function(){function t(t,e){this.___id=p.IPROXY_ID_VALUE;var n=new Proxy(t,e);return n}return t.of=function(e,n){t.check();var r=new t(e,n);return r},t.check=function(){if("undefined"==typeof Proxy)throw new u(r.InvalidDynamicProxyRuntime,null,"ES6 Proxy object not detected; the dynamic mocking feature requires ES6 Proxy object support")},t}(),D=function(){function t(t){this._interceptor=t}return t.prototype.apply=function(t,e,n){var r=h.functionName(t),o=new k(t,r),i=new x(t,o,n,C.DYNAMIC);return this._interceptor.intercept(i),i.returnValue},t.prototype.get=function(t,n,r){var o=this,i=t[n],c=new S(t,n),u=new N(c,i);return this._interceptor.intercept(u),!e.isFunction(i)&&u.callType==l.PROPERTY&&u.property.desc?u.returnValue:function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];o._interceptor.removeInvocation(u);var i=new k(t,n),c=new x(t,i,e,C.DYNAMIC);return o._interceptor.intercept(c),c.returnValue}},t.prototype.set=function(t,e,n,r){var o=new S(t,e),i=new E(o,[n],C.DYNAMIC);return this._interceptor.intercept(i),Reflect.set(t,e,n,r)},t.prototype.defineProperty=function(t,e,n){return n.configurable=!0,Reflect.defineProperty(t,e,n)},t}(),U=function(){function t(){}return t.createProxy=function(t,e){var n=M.of(t,e);return n},t.createProxyES6=function(t,e){var n=new D(e),r=V.of(t,n);return r},t}(),L=function(){function n(e,n,r){void 0===r&&(r=t.MockBehavior.Loose),this.target=e,this.canOverrideTarget=n,this.behavior=r,this._id=this.generateId(),this._name=this.getNameOf(this.target)}return Object.defineProperty(n.prototype,"object",{get:function(){return this._proxy},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"callBase",{get:function(){return this._callBase},set:function(t){this._callBase=t},enumerable:!0,configurable:!0}),n.prototype.generateId=function(){return"Mock<"+e.uniqueId()+">"},n.prototype.getNameOf=function(t){var n;if(e.isFunction(t))n=h.functionName(t);else if(e.isObject(t)){var r=t.constructor;n=h.functionName(r)}return n&&(n=n.trim()),n},n.prototype.verifyAll=function(){try{this._interceptor.verify()}catch(t){throw t}},n.prototype.reset=function(){this._interceptor.reset()},n}();!function(t){t[t.Continue=0]="Continue",t[t.Stop=1]="Stop"}(w||(w={}));var F,B=function(){function t(t){this.mock=t,this._actualInvocations=[],this._expectedCalls=[]}return Object.defineProperty(t.prototype,"behavior",{get:function(){return this.mock.behavior},enumerable:!0,configurable:!0}),t.prototype.addInvocation=function(t){this._actualInvocations.push(t)},t.prototype.removeInvocation=function(t){e.remove(this._actualInvocations,function(e){return e===t})},t.prototype.actualInvocations=function(){return this._actualInvocations},t.prototype.clearInvocations=function(){this._actualInvocations.splice(0,this._actualInvocations.length)},t.prototype.addExpectedCall=function(t){this._expectedCalls.push(t)},t.prototype.removeExpectedCall=function(t){e.filter(this._expectedCalls,function(e){return e.id!==t.id})},t.prototype.expectedCalls=function(){return this._expectedCalls},t.prototype.clearExpectedCalls=function(){this._expectedCalls.splice(0,this._expectedCalls.length)},t.prototype.reset=function(){this.clearInvocations(),this.clearExpectedCalls()},t}(),R=function(){function t(){}return t}(),Y=function(){function t(){}return t.prototype.handleIntercept=function(t,e,n){return e.addInvocation(t),w.Continue},t}(),H=function(){function n(){}return n.prototype.handleIntercept=function(n,o,i){var c=o.expectedCalls().slice(),a=function(t){return t.matches(n)},s=e.filter(c,function(t){return a(t)});if(s.length>1&&(a=function(t){return!t.isInvoked&&t.matches(n)}),i.call=e.find(c,function(t){return a(t)}),null!=i.call){if(n.isAnUnknownDynamicCallAtExecution&&(n.callType=i.call.setupCall.callType,n.callType==l.FUNCTION))return w.Stop;i.call.evaluatedSuccessfully()}else if(o.behavior==t.MockBehavior.Strict)throw new u(r.NoSetup,n,"'"+n+"'");return w.Continue},n}(),q=function(){function t(){}return t.prototype.handleIntercept=function(t,e,n){this._ctx=e;var r=n.call;return null!=r?(r.execute(t),w.Stop):w.Continue},t}(),G=function(){function t(){}return t.prototype.handleIntercept=function(t,e,n){return e.mock.callBase?(t.invokeBase(),w.Stop):w.Continue},t}(),X=function(){function t(){}return t.prototype.handleIntercept=function(t,e,n){return w.Continue},t}(),W=function(){function n(t){this._interceptorContext=new B(t)}return Object.defineProperty(n.prototype,"interceptorContext",{get:function(){return this._interceptorContext},enumerable:!0,configurable:!0}),n.prototype.intercept=function(t){var n=this,r=new R;t.invocationType=O.EXECUTE,e.some(this.interceptionStrategies(),function(e){return w.Stop===e.handleIntercept(t,n.interceptorContext,r)?!0:void 0})},n.prototype.removeInvocation=function(t){this._interceptorContext.removeInvocation(t)},n.prototype.addExpectedCall=function(t){this._interceptorContext.addExpectedCall(t)},n.prototype.verify=function(){var n=this._interceptorContext.expectedCalls(),r=[];if(this._interceptorContext.behavior==t.MockBehavior.Strict)for(var o=0,i=n;o<i.length;o++){var c=i[o];c.isVerifiable||c.setVerifiable(),r.push(c)}else r=e.filter(n,function(t){return t.isVerifiable});for(var u=0,a=r;u<a.length;u++){var s=a[u];this.verifyCallCount(s,s.expectedCallCount)}var p=e.filter(n,function(t){return t.isInSequence});this.verifyCallsOrder(p)},n.prototype.verifyCallCount=function(t,n){var r=this._interceptorContext.expectedCalls(),o=this._interceptorContext.actualInvocations(),i=e.filter(o,function(e){return t.matches(e)}).length;n.verify(i)||this.throwVerifyCallCountException(t.setupCall,n,r,o)},n.prototype.throwVerifyCallCountException=function(t,e,n,o){var i=e.failMessage(t),c=n.reduce(function(t,e){return t+" "+e+"\n"},""),a=o.reduce(function(t,e){return t+" "+e+"\n"},""),s=i+"\n Configured setups:\n"+c+"\n Performed invocations:\n"+a,p=new u(r.CallCountVerificationFailed,t,s);throw p},n.prototype.verifyCallsOrder=function(t){var e=this._interceptorContext.actualInvocations();this.checkCallOrderExpectations(t,e)},n.prototype.checkCallOrderExpectations=function(t,n){var r=function(r){for(var o=e.sum(r),i=0,c=0;c<r.length;c++)for(var u=t[c],a=r[c],s=1;a>=s;s++){var p=n[i++];if(!u.matches(p))return!1}return i===o},o=!1,i=function(e,n){if(!o)if(n===t.length)o=r(e);else for(var c=t[n].expectedCallCount.min;c<=t[n].expectedCallCount.max;c++)e[n]=c,i(e,n+1)};i([],0),o||this.throwVerifyCallOrderException()},n.prototype.throwVerifyCallOrderException=function(){var t=new u(r.CallOrderVerificationFailed,null);throw t},n.prototype.reset=function(){this._interceptorContext.reset()},n.prototype.interceptionStrategies=function(){var t=[new Y,new H,new q,new G,new X];return t},n}(),K=function(){function t(){}return Object.defineProperty(t.prototype,"interceptedCall",{get:function(){return this._interceptedCall},enumerable:!0,configurable:!0}),t.prototype.intercept=function(t){if(t.invocationType=O.SETUP,t.proxyType==C.DYNAMIC&&t.callType==l.UNKNOWN&&(t.callType=l.PROPERTY),this._interceptedCall)throw new u(r.MoreThanOneSetup,t,"'"+t+"'; setup should contain only one expression");this._interceptedCall=t},t.prototype.removeInvocation=function(t){this._interceptedCall&&this._interceptedCall===t&&(this._interceptedCall=void 0)},t}(),J=function(){function n(t,e,n,o){if(this.mock=t,this._setupExpression=e,this._callCount=0,this._id=this.generateId(),e(o),!n.interceptedCall)throw new u(r.InvalidSetup,this._setupExpression,"'"+this._setupExpression+"'");var i=n.interceptedCall,c=this.transformToMatchers(i.args);Object.defineProperty(c,"callee",{configurable:!0,enumerable:!0,writable:!1,value:i.args.callee}),i.args=c,this._setupCall=i}return n.ofStaticMock=function(t,e){var r=new K,o=U.createProxy(t.target,r),i=new n(t,e,r,o);return i},n.ofDynamicMock=function(t,e){var r=new K,o=U.createProxyES6(t.target,r),i=new n(t,e,r,o);return i},n.prototype.generateId=function(){return"MethodCall<"+e.uniqueId()+">"},n.prototype.transformToMatchers=function(t){var n=[];return e.each(t,function(t){if(e.isObject(t))if(f.isMatcher(t))n.push(t);else{var r=new m(function(n){return e.isEqual(n,t)});n.push(r)}else{var r=new b(t);n.push(r)}}),n},Object.defineProperty(n.prototype,"id",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"setupExpression",{get:function(){return this._setupExpression},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"setupCall",{get:function(){return this._setupCall},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"isVerifiable",{get:function(){return this._isVerifiable},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"isInSequence",{get:function(){return this._expectedCallType===t.ExpectedCallType.InSequence},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"expectedCallCount",{get:function(){return this._expectedCallCount},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"isInvoked",{get:function(){return this._isInvoked},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"callCount",{get:function(){return this._callCount},enumerable:!0,configurable:!0}),n.prototype.setVerifiable=function(e,n){void 0===e&&(e=a.once()),void 0===n&&(n=t.ExpectedCallType.InAnyOrder),this._isVerifiable=!0,this._expectedCallCount=e,this._expectedCallType=n},n.prototype.evaluatedSuccessfully=function(){this._evaluatedSuccessfully=!0},n.prototype.matches=function(t){var n=!1;return this._setupCall.property&&t&&t.property&&this._setupCall.property.name===t.property.name&&this._setupCall.args.length>=t.args.length&&(n=!0,t.isAnUnknownDynamicCallAtExecution||e.each(this._setupCall.args,function(e,r){var o=e,i=t.args[r];n&&!o.___matches(i)&&(n=!1)})),n},n.prototype.execute=function(t){if(this._isInvoked=!0,null!=this._setupCallback&&this._setupCallback.apply(this,t.args),null!=this._thrownException)throw this._thrownException;this._callCount++},n.prototype.verifiable=function(t,e){this.setVerifiable(t,e)},n.prototype.toString=function(){var t=""+this.setupCall;return this.expectedCallCount&&(t=t+", "+this.expectedCallCount),t},n}(),z=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Q=function(t){function e(e,n,r,o){var i=t.call(this,e,n,r,o)||this;return i._overrideTarget=e.canOverrideTarget,i}return z(e,t),e.ofStaticMock=function(t,n){var r=new K,o=U.createProxy(t.target,r),i=new e(t,n,r,o);return i},e.ofDynamicMock=function(t,n){var r=new K,o=U.createProxyES6(t.target,r),i=new e(t,n,r,o);return i},e.prototype.execute=function(e){t.prototype.execute.call(this,e),this._callBase?e.invokeBase():this.hasReturnValue&&(e.returnValue=this._returnValueFunc.apply(this,e.args),e.property.desc={value:this.setupCall.property.desc&&this.setupCall.property.desc.value})},e.prototype.callback=function(t){return this._setupCallback=t,this},e.prototype["throws"]=function(t){return this._thrownException=t,this},e.prototype.returns=function(t){if(this._returnValueFunc=t,this.hasReturnValue=!0,this._overrideTarget){var e=this.mock.target,n=this.setupCall.property.name,r=this.setupCall.property.desc;r||this.setupCall.proxyType!=C.DYNAMIC?r&&(r.configurable=!0,r.enumerable=!0,r.value=this._returnValueFunc,Object.defineProperty(e,n,r)):(r={},r.configurable=!0,r.enumerable=!0,r.value=null,Object.defineProperty(e,n,r))}return this},e.prototype.callBase=function(){return this._callBase=!0,this},e}(J),Z=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),$=function(t){function n(e,n,r){var o=t.call(this,e,n,r)||this;return o._interceptor=new W(o),o._proxy=U.createProxy(e,o._interceptor),o}return Z(n,t),n.ofInstance=function(t,e){t=n.cloneDeep(t);var r=new n(t,!0,e);return r},n.ofGlobalInstance=function(t,e){var r=new n(t,!1,e);return r},n.ofType=function(t,e,r){var o=h.conthunktor(t,r),i=new n(o,!0,e);return i},n.cloneDeep=function(t){var n=t;if(!e.isFunction(t)){var r=function(t){return M.isProxy(t)?t:void 0};n=e.cloneDeepWith(t,r)}return n},n.prototype.setup=function(t){var e=Q.ofStaticMock(this,t);return this._interceptor.addExpectedCall(e),e},n.prototype.verify=function(t,e){var n=J.ofStaticMock(this,t);this._interceptor.addExpectedCall(n);try{this._interceptor.verifyCallCount(n,e)}catch(r){throw r}},n}(L),tt=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),et=function(t){function e(e,n,r,o){var i=t.call(this,e,r,o)||this;return n&&(i._name=n),i._interceptor=new W(i),i._proxy=U.createProxyES6(e,i._interceptor),i}return tt(e,t),e.ofType=function(t,n){var r=new e(function(){},t,!0,n);return r},e.prototype.setup=function(t){var e=Q.ofDynamicMock(this,t);return this._interceptor.addExpectedCall(e),e},e.prototype.verify=function(t,e){var n=J.ofDynamicMock(this,t);this._interceptor.addExpectedCall(n);try{this._interceptor.verifyCallCount(n,e)}catch(r){throw r}},e}(L),nt=function(){function e(){}return e.ofInstance=function(e,n){void 0===n&&(n=t.MockBehavior.Loose);var r=$.ofInstance(e,n);return r},e.ofType=function(n,r){void 0===r&&(r=t.MockBehavior.Loose);for(var o=[],i=2;i<arguments.length;i++)o[i-2]=arguments[i];var c;return c=n?e.ofType2(n,o,r):et.ofType(void 0,r)},e.ofType2=function(e,n,r){void 0===r&&(r=t.MockBehavior.Loose);var o=$.ofType(e,r,n);return o},e}(),rt=function(){function t(){}return t.isValue=function(t){var e=new b(t);return e},t.isObjectWith=function(t){var e=new g(t);return e},t.isAnyObject=function(t){var e=new y(t);return e},t.isAny=function(){var t=new _;return t},t.isAnyString=function(){var t=new v;return t},t.isAnyNumber=function(){var t=new d;return t},t.is=function(t){var e=new m(t);return e},t}();!function(t){t[t.Class=0]="Class",t[t.Function=1]="Function",t[t.Value=2]="Value"}(F||(F={}));var ot=function(){function t(t,e,n,r){this.mock=t,this._name=e,this._type=n,this.container=r,this._name||(this._name=t.name)}return Object.defineProperty(t.prototype,"object",{get:function(){return this.mock.object},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return this._name||this.mock.name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"behavior",{get:function(){return this.mock.behavior},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"callBase",{get:function(){return this.mock.callBase},set:function(t){this.mock.callBase=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"type",{get:function(){return this._type},enumerable:!0,configurable:!0}),t.prototype.setup=function(t){return this.mock.setup(t)},t.prototype.verify=function(t,e){this.mock.verify(t,e)},t.prototype.verifyAll=function(){this.mock.verifyAll()},t.prototype.reset=function(){this.mock.reset()},t}(),it=function(){function n(){}return n.ofInstance=function(n,r,o,i){void 0===o&&(o=window),void 0===i&&(i=t.MockBehavior.Loose);var c=$.ofGlobalInstance(n,i),u=e.isFunction(n)?F.Function:F.Value;return new ot(c,r,u,o)},n.ofType=function(e,n,r){void 0===n&&(n=window),void 0===r&&(r=t.MockBehavior.Loose);var o=new e,i=$.ofInstance(o,r);return new ot(i,void 0,F.Class,n)},n.ofType2=function(e,n,r){void 0===n&&(n=window),void 0===r&&(r=t.MockBehavior.Loose);var o=et.ofType(e,r);return new ot(o,void 0,F.Class,n)},n}(),ct=function(){function t(t){this._args=t}return t.prototype["with"]=function(t){var n={};try{e.each(this._args,function(t){var o=s.getOwnAndPrototypeEnumerablesAndNonenumerables(t.container),i=e.find(o,function(e){return e.name===t.name});if(i){n[t.name]=i.desc;
var c={};switch(t.type){case F.Class:c.value=function(){return t.mock.object};break;case F.Function:c.value=t.mock.object;break;case F.Value:c.get=function(){return t.mock.object};break;default:throw new u(r.UnknownGlobalType,t,"unknown global type: "+t.type)}try{Object.defineProperty(t.container,t.name,c)}catch(a){console.log("1: "+a)}}}),t.apply(this,this._args)}catch(o){console.log("2: "+o)}finally{e.each(this._args,function(t){var e=n[t.name];if(e){switch(t.type){case F.Class:break;case F.Function:break;case F.Value:e.configurable=!0}try{Object.defineProperty(t.container,t.name,e)}catch(r){console.log("3: "+r)}}})}},t}(),ut=function(){function t(){}return t.using=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=new ct(t);return n},t}();t.Mock=nt,t.It=rt,t.Times=a,t.GlobalMock=it,t.GlobalScope=ut,t.MockException=u,Object.defineProperty(t,"__esModule",{value:!0})});

@@ -331,3 +331,3 @@ // Generated by dts-bundle v0.7.2

export abstract class MockBase<T> implements all.IMock<T> {
readonly targetInstance: T;
readonly target: T;
readonly canOverrideTarget: boolean;

@@ -338,3 +338,3 @@ readonly behavior: all.MockBehavior;

protected _proxy: T;
constructor(targetInstance: T, canOverrideTarget: boolean, behavior?: all.MockBehavior);
constructor(target: T, canOverrideTarget: boolean, behavior?: all.MockBehavior);
readonly object: T;

@@ -528,3 +528,3 @@ readonly name: string;

readonly ___id: string;
static of<U>(instance: U, interceptor: ICallInterceptor): ProxyES5<U>;
static of<U>(target: U, interceptor: ICallInterceptor): ProxyES5<U>;
static isProxy(obj: any): boolean;

@@ -539,3 +539,3 @@ }

readonly ___id: string;
static of<U>(handler: IProxyHandler<U>): ProxyES6<U>;
static of<U>(target: U, handler: IProxyHandler<U>): ProxyES6<U>;
}

@@ -547,4 +547,4 @@ }

export class ProxyFactory {
static createProxy<T>(interceptor: ICallInterceptor, instance: T): T;
static createProxyES6<T>(interceptor: ICallInterceptor): T;
static createProxy<T>(target: T, interceptor: ICallInterceptor): T;
static createProxyES6<T>(target: T, interceptor: ICallInterceptor): T;
}

@@ -551,0 +551,0 @@ }

@@ -13,4 +13,2 @@ 'use strict';

var lodashFullPath = './node_modules/lodash/lodash.js';
var tempDir = '.tmp';

@@ -134,3 +132,4 @@ var distDir = 'dist';

globals: {
lodash: '_'
'circular-json': 'CircularJSON',
'lodash': '_'
}

@@ -137,0 +136,0 @@ },

@@ -9,3 +9,8 @@ module.exports = function (config) {

files: ['./node_modules/lodash/lodash.js', './.tmp/src/typemoq.js', './.tmp/test/Mock.test.js', './.tmp/test/GlobalMock.test.js'],
files: [
'./node_modules/circular-json/build/circular-json.js',
'./node_modules/lodash/lodash.js',
'./.tmp/src/typemoq.js',
'./.tmp/test/Mock.test.js',
'./.tmp/test/GlobalMock.test.js'],

@@ -12,0 +17,0 @@ // list of files to exclude

{
"name": "typemoq",
"version": "1.6.0",
"version": "1.7.0",
"description": "A simple mocking library for TypeScript",

@@ -36,2 +36,3 @@ "author": "Florin Nitoi <florin.nitoi@gmail.com>",

"dependencies": {
"circular-json": "^0.3.1",
"lodash": "^4.16.4",

@@ -42,2 +43,3 @@ "postinstall-build": "^2.1.3"

"@types/chai": "^3.4.34",
"@types/circular-json": "^0.1.30",
"@types/lodash": "^4.14.37",

@@ -67,3 +69,3 @@ "@types/mocha": "^2.2.32",

"karma-mocha": "^0.1.9",
"karma-sauce-launcher": "^0.2.10",
"karma-sauce-launcher": "^1.1.0",
"merge2": "^1.0.2",

@@ -70,0 +72,0 @@ "mocha": "^3.1.2",

@@ -76,5 +76,6 @@ TypeMoq [![build badge](https://travis-ci.org/florinn/typemoq.svg?branch=master)](https://travis-ci.org/florinn/typemoq)

TypeMoq requires Lodash to run, so make sure to include it in your page along `typemoq.js`:
TypeMoq requires some dependencies to run, so make sure to include them in your page before `typemoq.js`:
```html
<script src="https://unpkg.com/circular-json/build/circular-json"></script>
<script src="https://unpkg.com/lodash"></script>

@@ -81,0 +82,0 @@ <script src="https://unpkg.com/typemoq"></script>

import * as _ from "lodash";
import * as CircularJSON from "circular-json";
import { CtorWithArgs } from "./Ctor";

@@ -32,3 +33,3 @@ import { PropertyRetriever } from "./PropertyRetriever";

else
res = JSON.stringify(x);
res = CircularJSON.stringify(x);
return res;

@@ -35,0 +36,0 @@ });

@@ -9,19 +9,20 @@ import * as all from "./_all";

export class DynamicMock<T> extends MockBase<T> {
private constructor(
target: T,
name: string,
canOverrideTarget: boolean,
canOverrideTarget: boolean,
behavior: all.MockBehavior) {
super(<T>{}, canOverrideTarget, behavior);
if(name)
super(target, canOverrideTarget, behavior);
if (name)
this._name = name;
this._interceptor = new InterceptorExecute(this);
this._proxy = all.ProxyFactory.createProxyES6<T>(this._interceptor);
this._proxy = all.ProxyFactory.createProxyES6<T>(target, this._interceptor);
}
static ofType<U>(name: string, behavior: all.MockBehavior): all.IMock<U> {
let mock: DynamicMock<U> = new DynamicMock<U>(name, true, behavior);
let mock: DynamicMock<U> = new DynamicMock<U>(<any>(() => { }), name, true, behavior);
return mock;

@@ -28,0 +29,0 @@ }

@@ -7,3 +7,4 @@ import * as _ from "lodash";

static isMatcher(x: any): boolean {
return !_.isUndefined(x[Consts.IMATCH_MATCHES_NAME]) &&
return !_.isNil(x) &&
!_.isUndefined(x[Consts.IMATCH_MATCHES_NAME]) &&
!_.isUndefined(x[Consts.IMATCH_ID_NAME]) &&

@@ -10,0 +11,0 @@ x[Consts.IMATCH_ID_NAME] === Consts.IMATCH_ID_VALUE;

@@ -48,3 +48,3 @@ import * as _ from "lodash";

let interceptor = new InterceptorSetup<U>();
let proxy = all.ProxyFactory.createProxy<U>(interceptor, mock.targetInstance);
let proxy = all.ProxyFactory.createProxy<U>(mock.target, interceptor);
let result = new MethodCall(mock, setupExpression, interceptor, proxy);

@@ -56,3 +56,3 @@ return result;

let interceptor = new InterceptorSetup<U>();
let proxy = all.ProxyFactory.createProxyES6<U>(interceptor);
let proxy = all.ProxyFactory.createProxyES6<U>(mock.target, interceptor);
let result = new MethodCall(mock, setupExpression, interceptor, proxy);

@@ -59,0 +59,0 @@ return result;

@@ -14,7 +14,7 @@ import * as all from "./_all";

private constructor(
mock: MockBase<T>,
mock: MockBase<T>,
setupExpression: all.IFunc2<T, TResult>,
interceptor: InterceptorSetup<T>,
proxy: T) {
super(mock, setupExpression, interceptor, proxy);

@@ -27,5 +27,5 @@

let interceptor = new InterceptorSetup<U>();
let proxy = all.ProxyFactory.createProxy<U>(interceptor, mock.targetInstance);
let proxy = all.ProxyFactory.createProxy<U>(mock.target, interceptor);
let result = new MethodCallReturn(mock, setupExpression, interceptor, proxy);
return result;
return result;
}

@@ -35,3 +35,3 @@

let interceptor = new InterceptorSetup<U>();
let proxy = all.ProxyFactory.createProxyES6<U>(interceptor);
let proxy = all.ProxyFactory.createProxyES6<U>(mock.target, interceptor);
let result = new MethodCallReturn(mock, setupExpression, interceptor, proxy);

@@ -73,8 +73,18 @@ return result;

if (this._overrideTarget) {
let obj: Object = this.mock.targetInstance;
let obj: Object = this.mock.target;
let name: string = this.setupCall.property.name;
let desc: all.PropDescriptor = this.setupCall.property.desc;
if (desc) {
if (!desc &&
this.setupCall.proxyType == all.ProxyType.DYNAMIC) {
// enable target property enumeration for dynamic mocks
desc = {};
desc.configurable = true;
desc.enumerable = true;
desc.value = null;
Object.defineProperty(obj, name, desc);
}
else if (desc) {
desc.configurable = true;
desc.enumerable = true;
desc.value = this._returnValueFunc;

@@ -81,0 +91,0 @@ Object.defineProperty(obj, name, desc);

@@ -16,3 +16,3 @@ import * as _ from "lodash";

constructor(
public readonly targetInstance: T,
public readonly target: T,
public readonly canOverrideTarget: boolean,

@@ -22,3 +22,3 @@ public readonly behavior: all.MockBehavior = all.MockBehavior.Loose) {

this._id = this.generateId();
this._name = this.getNameOf(this.targetInstance);
this._name = this.getNameOf(this.target);
}

@@ -25,0 +25,0 @@

@@ -14,7 +14,7 @@ import * as _ from "lodash";

private constructor(interceptor: ICallInterceptor, instance: T) {
this.check(instance);
private constructor(target: T, interceptor: ICallInterceptor) {
this.check(target);
let that = this;
let props = common.PropertyRetriever.getOwnAndPrototypeEnumerablesAndNonenumerables(instance);
let props = common.PropertyRetriever.getOwnAndPrototypeEnumerablesAndNonenumerables(target);
_.each(props, (prop: { name: string; desc: common.PropDescriptor }) => {

@@ -29,3 +29,3 @@

this.defineMethodProxy(that, interceptor, instance, prop.name, propDesc);
this.defineMethodProxy(that, interceptor, target, prop.name, propDesc);
}

@@ -39,5 +39,5 @@ else {

if (prop.desc.value !== undefined)
this.defineValuePropertyProxy(that, interceptor, instance, prop.name, prop.desc.value, propDesc);
this.defineValuePropertyProxy(that, interceptor, target, prop.name, prop.desc.value, propDesc);
else
this.defineGetSetPropertyProxy(that, interceptor, instance, prop.name, prop.desc.get, prop.desc.set, propDesc);
this.defineGetSetPropertyProxy(that, interceptor, target, prop.name, prop.desc.get, prop.desc.set, propDesc);
}

@@ -48,13 +48,13 @@

static of<U>(instance: U, interceptor: ICallInterceptor): ProxyES5<U> {
ProxyES5.check(instance);
static of<U>(target: U, interceptor: ICallInterceptor): ProxyES5<U> {
ProxyES5.check(target);
let result: any;
if (_.isFunction(instance)) {
let funcName = common.Utils.functionName(instance);
result = ProxyES5.methodProxyValue(undefined, interceptor, instance, funcName, null);
if (_.isFunction(target)) {
let funcName = common.Utils.functionName(target);
result = ProxyES5.methodProxyValue(undefined, interceptor, target, funcName, null);
}
else {
result = new ProxyES5(interceptor, instance);
result = new ProxyES5(target, interceptor);
}

@@ -73,9 +73,9 @@

private static check<U>(instance: U): void {
ProxyES5.checkNotNullOrUndefined(instance);
private static check<U>(target: U): void {
ProxyES5.checkNotNullOrUndefined(target);
// allow only primitive objects and functions
let ok = false;
if (_.isFunction(instance) ||
(_.isObject(instance) && !ProxyES5.isPrimitiveObject(instance)))
if (_.isFunction(target) ||
(_.isObject(target) && !ProxyES5.isPrimitiveObject(target)))
ok = true;

@@ -85,12 +85,12 @@

throw new error.MockException(error.MockExceptionReason.InvalidArg,
instance, `'${instance}'; proxy argument should be a function or a non primitive object`);
target, `'${target}'; proxy argument should be a function or a non primitive object`);
}
private check<U>(instance: U): void {
ProxyES5.checkNotNullOrUndefined(instance);
private check<U>(target: U): void {
ProxyES5.checkNotNullOrUndefined(target);
// allow only non primitive objects
let ok = false;
if (!_.isFunction(instance) &&
(_.isObject(instance) && !ProxyES5.isPrimitiveObject(instance)))
if (!_.isFunction(target) &&
(_.isObject(target) && !ProxyES5.isPrimitiveObject(target)))
ok = true;

@@ -100,3 +100,3 @@

throw new error.MockException(error.MockExceptionReason.InvalidArg,
instance, `'${instance}'; proxy argument should be a non primitive object`);
target, `'${target}'; proxy argument should be a non primitive object`);
}

@@ -125,7 +125,7 @@

interceptor: ICallInterceptor,
instance: T,
target: T,
propName: string,
propDesc: common.PropDescriptor = { configurable: true, enumerable: true, writable: false }) {
propDesc.value = ProxyES5.methodProxyValue(that, interceptor, instance, propName, propDesc);
propDesc.value = ProxyES5.methodProxyValue(that, interceptor, target, propName, propDesc);

@@ -138,3 +138,3 @@ this.defineProperty(that, propName, propDesc);

interceptor: ICallInterceptor,
instance: U,
target: U,
propName: string,

@@ -144,3 +144,3 @@ propDesc: common.PropDescriptor): () => any {

function proxy() {
let method = new MethodInfo(instance, propName, propDesc);
let method = new MethodInfo(target, propName, propDesc);
let invocation: ICallContext = new MethodInvocation(that, method, arguments);

@@ -156,3 +156,3 @@ interceptor.intercept(invocation);

interceptor: ICallInterceptor,
instance: T,
target: T,
propName: string,

@@ -163,3 +163,3 @@ propValue: any,

function getProxy(): any {
let method = new PropertyInfo(instance, propName);
let method = new PropertyInfo(target, propName);
let invocation: ICallContext = new ValueGetterInvocation(method, propValue);

@@ -172,3 +172,3 @@ interceptor.intercept(invocation);

function setProxy(v: any): void {
let method = new PropertyInfo(instance, propName);
let method = new PropertyInfo(target, propName);
let invocation: ICallContext = new ValueSetterInvocation(method, arguments);

@@ -185,3 +185,3 @@ interceptor.intercept(invocation);

interceptor: ICallInterceptor,
instance: T,
target: T,
propName: string,

@@ -193,3 +193,3 @@ get?: () => any,

function getProxy(): any {
let method = new PropertyInfo(instance, propName);
let method = new PropertyInfo(target, propName);
let invocation: ICallContext = new MethodGetterInvocation(method, get);

@@ -202,3 +202,3 @@ interceptor.intercept(invocation);

function setProxy(v: any): void {
let method = new PropertyInfo(instance, propName);
let method = new PropertyInfo(target, propName);
let invocation: ICallContext = new MethodSetterInvocation(method, set, arguments);

@@ -205,0 +205,0 @@ interceptor.intercept(invocation);

@@ -11,10 +11,10 @@ ///<reference path="../../node_modules/typescript/lib/lib.es6.d.ts"/>

private constructor(handler: IProxyHandler<T>) {
let p = <ProxyES6<T>>new Proxy(<any>(() => {}), handler);
private constructor(target: T, handler: IProxyHandler<T>) {
let p = <ProxyES6<T>>new Proxy(<Object>target, handler);
return p;
}
static of<U>(handler: IProxyHandler<U>): ProxyES6<U> {
static of<U>(target: U, handler: IProxyHandler<U>): ProxyES6<U> {
ProxyES6.check();
let result = new ProxyES6(handler);
let result = new ProxyES6(target, handler);
return result;

@@ -21,0 +21,0 @@ }

@@ -8,12 +8,12 @@ import { ICallInterceptor } from "./ICallInterceptor";

static createProxy<T>(interceptor: ICallInterceptor, instance: T): T {
let proxy: T = <T><any>ProxyES5.of(instance, interceptor);
static createProxy<T>(target: T, interceptor: ICallInterceptor): T {
let proxy: T = <T><any>ProxyES5.of(target, interceptor);
return proxy;
}
static createProxyES6<T>(interceptor: ICallInterceptor): T {
static createProxyES6<T>(target: T, interceptor: ICallInterceptor): T {
let proxyHandler: ProxyES6Handler<T> = new ProxyES6Handler(interceptor);
let proxy: T = <T><any>ProxyES6.of(proxyHandler);
let proxy: T = <T><any>ProxyES6.of(target, proxyHandler);
return proxy;
}
}

@@ -12,10 +12,10 @@ import * as _ from "lodash";

private constructor(
targetInstance: T,
target: T,
canOverrideTarget: boolean,
behavior: all.MockBehavior) {
super(targetInstance, canOverrideTarget, behavior);
super(target, canOverrideTarget, behavior);
this._interceptor = new InterceptorExecute(this);
this._proxy = all.ProxyFactory.createProxy<T>(this._interceptor, targetInstance);
this._proxy = all.ProxyFactory.createProxy<T>(target, this._interceptor);
}

@@ -22,0 +22,0 @@

@@ -170,2 +170,3 @@ import { Utils } from "./Utils";

execute(command: string): string;
save: (data: any, data2: any) => void;
[index: number]: string;

@@ -201,2 +202,10 @@ }

export class CircularFoo {
circularReference: CircularFoo
constructor() {
this.circularReference = this;
}
}
export interface IThing {

@@ -203,0 +212,0 @@ getA(a: string): string;

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

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