{"_id":"typemoq","_rev":"46-c5e378aa2ab2d581520376c4c78d82e5","name":"typemoq","time":{"modified":"2022-06-28T01:44:44.252Z","created":"2015-01-05T14:27:57.995Z","0.0.1":"2015-01-05T14:27:57.995Z","0.0.2":"2015-01-05T16:06:25.099Z","0.0.3":"2015-01-07T20:21:57.764Z","0.0.4":"2015-01-07T20:39:23.235Z","0.0.5":"2015-01-09T19:59:31.169Z","0.0.6":"2015-01-24T20:01:36.599Z","0.1.0":"2016-05-26T18:23:59.444Z","0.1.1":"2016-06-06T12:44:01.084Z","0.2.0":"2016-06-12T13:31:22.711Z","0.3.0":"2016-07-17T18:36:45.045Z","0.3.1":"2016-07-17T19:17:21.972Z","0.3.2":"2016-07-22T16:46:34.996Z","0.3.3":"2016-08-28T10:58:03.887Z","1.0.0":"2016-11-24T14:48:06.119Z","1.0.1":"2016-11-25T13:46:14.983Z","1.0.2":"2016-11-28T08:28:36.433Z","1.0.3":"2016-12-03T11:44:35.782Z","1.1.0":"2017-01-03T12:56:01.046Z","1.2.0":"2017-02-07T12:54:09.203Z","1.2.1":"2017-02-28T14:45:57.228Z","1.3.0":"2017-03-09T08:19:16.453Z","1.3.1":"2017-03-09T10:10:11.257Z","1.4.0":"2017-03-19T18:06:09.246Z","1.4.1":"2017-03-23T12:52:08.655Z","1.4.2":"2017-04-20T10:43:39.793Z","1.5.0":"2017-04-25T07:13:02.924Z","1.6.0":"2017-05-11T11:58:52.531Z","1.7.0":"2017-05-29T18:37:19.202Z","1.8.0":"2017-07-21T07:20:13.526Z","2.0.0":"2017-08-08T08:08:30.842Z","2.0.1":"2017-08-10T18:02:07.403Z","2.1.0":"2017-10-31T06:15:32.762Z"},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"dist-tags":{"latest":"2.1.0"},"description":"A simple mocking library for TypeScript","readme":"TypeMoq [![build badge](https://travis-ci.org/florinn/typemoq.svg?branch=master)](https://travis-ci.org/florinn/typemoq)\r\n===================\r\n\r\nSimple mocking library for JavaScript targeting [TypeScript](http://www.typescriptlang.org/) development. If you have used before a library like [Moq](https://github.com/Moq/moq4) then the syntax should look familiar, otherwise the examples below should hopefully provide enough information to get you started quickly.\r\n\r\n\r\nFeatures\r\n-------------\r\n* Strongly typed\r\n* Auto complete/intellisense support\r\n* Static and dynamic mocking\r\n* Mock objects, classes (with arguments), constructor functions and interfaces\r\n* Control mock behavior\r\n* Record and replay expectations\r\n* Auto sandbox global objects and types\r\n* Support ECMAScript 5 and 6\r\n* Support node.js and browser\r\n\r\n[![Sauce Test Status](https://saucelabs.com/browser-matrix/florinn.svg)](https://saucelabs.com/u/florinn)\r\n\r\n\r\nInstalling\r\n-------------\r\n\r\n###### Release version\r\n\r\n```\r\nnpm install typemoq\r\n```\r\n\r\nOr add this *NuGet* dependency to your project:\r\n```\r\nPM> Install-Package typemoq \r\n```\r\n\r\nThe distribution directory should contain:\r\n\r\n* *Compiled JavaScript:* `typemoq.js` and its minified version `typemoq-min.js`\r\n* *TypeScript definitions:* `typemoq.d.ts`\r\n\r\n###### Development version\r\n\r\n```\r\nnpm install https://github.com/florinn/typemoq\r\n```\r\n\r\n\r\n##### Node.js\r\n\r\n###### TypeScript 1.6 and later\r\n\r\n```typescript\r\nimport * as TypeMoq from \"typemoq\";\r\n```\r\n\r\n###### TypeScript pre 1.6\r\n\r\n```typescript\r\n/// <reference path=\"./node_modules/typemoq/dist/typemoq.d.ts\" />\r\nTypeMoq = require(\"typemoq\");\r\n```\r\n\r\n\r\n##### Browser\r\n\r\nInclude at the top of your script file:\r\n```typescript\r\n/// <reference path=\"./node_modules/typemoq/dist/typemoq.d.ts\" />\r\nimport * as TypeMoq from \"typemoq\";\r\n```\r\n\r\nTypeMoq requires some dependencies to run, so make sure to include them in your page before `typemoq.js`:\r\n\r\n```html\r\n<script src=\"https://unpkg.com/circular-json/build/circular-json\"></script>\r\n<script src=\"https://unpkg.com/lodash\"></script>\r\n<script src=\"https://unpkg.com/typemoq\"></script>\r\n```\r\n\r\nAlso in your `tsconfig.json` you need to set the module target as `UMD`:\r\n```\r\n\"compilerOptions\": {\r\n    ...\r\n    \"module\": \"UMD\",\r\n    ...\r\n}\r\n```\r\n\r\nAt this point you should have access in your script to a global variable named `TypeMoq`.\r\n\r\n\r\nUsage\r\n-------------\r\n\r\nAfter importing TypeMoq into your project, the following types should be available:\r\n\r\nType | Description\r\n---- | ----\r\n*TypeMoq.Mock* | Used for creating 'regular' mocks (see [Create mocks](#create-mocks) and [Setup mocks](#setup-mocks))\r\n*TypeMoq.MockBehavior* | Used to specify how the mock should act when no expectations are defined (see [Control mock behavior](#control-mock-behavior))\r\n*TypeMoq.It* | Helper for matching arguments (see [Setup mocks](#setup-mocks) and [Verify expectations](#verify-expectations))\r\n*TypeMoq.Times* | Helper for performing verification (see [Verify expectations](#verify-expectations))\r\n*TypeMoq.GlobalMock* | Used to create 'global' mocks corresponding to global objects (see [Create global mocks](#create-global-mocks))\r\n*TypeMoq.GlobalScope* | Used to create an execution context that makes use of any specified 'global' mocks (see [Auto sandbox global mocks](#auto-sandbox-global-mocks))\r\n*TypeMoq.MockException* | Exception thrown internally containing debug info \r\n\r\n\r\n### Create mocks\r\n\r\n#### Static mocks\r\n\r\nStatic mocks can be created either from class types and constructor arguments or from existing objects, including function objects.\r\n\r\n##### Using class types and constructor arguments\r\n\r\n```typescript\r\n(method) TypeMoq.Mock.ofType<T>(targetConstructor?: {\r\n    new (...ctorArgs: any[]): T;\r\n    prototype: Object;\r\n}, behavior?: TypeMoq.MockBehavior, shouldOverrideTarget?: boolean, ...targetConstructorArgs: any[]): TypeMoq.IMock<T>\r\n\r\n(method) TypeMoq.Mock.ofType2<T>(targetConstructor: {\r\n    new (...ctorArgs: any[]): T;\r\n    prototype: Object;\r\n}, targetConstructorArgs: any[], behavior?: TypeMoq.MockBehavior, shouldOverrideTarget?: boolean): TypeMoq.IMock<T>\r\n```\r\n\r\n* *targetConstructor* - target constructor type\r\n* *...targetConstructorArgs* - target constructor args\r\n* *behavior* - mock behavior (see [Control mock behavior](#control-mock-behavior))\r\n* *shouldOverrideTarget* - override target properties (see [Override target properties](#override-target-properties))\r\n\r\n**Note:** During the creation of the static mock, the target object is being instantiated as a regular JavaScript object by executing the target constructor with any provided constructor args\r\n\r\nExamples:\r\n\r\n```typescript\r\ninterface IBar {\r\n  value: string;\r\n  anyValue: any;\r\n}\r\n\r\nclass Bar implements IBar {\r\n  value: string = '';\r\n  anyValue: any = undefined;\r\n}\r\n\r\nclass Foo {\r\n  constructor(private _bar: IBar) { this._bar = _bar || new Bar(); }\r\n  \r\n  get bar(): IBar { return this._bar; }\r\n  do(stringValue: string) { return 'Foo.do:' + stringValue; }\r\n  setBar(value: string) { this._bar.value = value; }\r\n}\r\n\r\nclass GenericFoo<T> {\r\n  private _bar: T;\r\n\r\n  constructor(barCtor?: { new (): T }, public numberValue?: number) {\r\n    this._bar = new barCtor(); \r\n  }\r\n\r\n  get bar(): T { return this._bar; }\r\n  do(stringValue: string) { return 'GenericFoo.do:' + stringValue + ': ' + this._bar.toString(); }\r\n}\r\n\r\n// Using class as constructor parameter\r\nconst mock: TypeMoq.IMock<Bar> = TypeMoq.Mock.ofType(Bar);\r\n\r\n// Using class as constructor parameter and casting result to interface\r\nconst mock: TypeMoq.IMock<IBar> = TypeMoq.Mock.ofType(Bar);\r\n\r\n// Using interface as type variable and class as constructor parameter\r\nconst mock: TypeMoq.IMock<IBar> = TypeMoq.Mock.ofType<IBar>(Bar);\r\n\r\n// Using class as constructor parameter and constructor arguments\r\nconst bar = new Bar();\r\nconst mock: TypeMoq.IMock<Foo> = TypeMoq.Mock.ofType(Foo, TypeMoq.MockBehavior.Loose, bar);\r\n\r\n// Using a generic class as constructor parameter and constructor arguments\r\nconst mock: TypeMoq.IMock<GenericFoo<Bar>> = TypeMoq.Mock.ofType(GenericFoo, TypeMoq.MockBehavior.Loose, Bar, 999);\r\n```\r\n\r\n##### Using existing objects, including function objects\r\n\r\n```typescript\r\n(method) TypeMoq.Mock.ofInstance<T>(\r\n    targetInstance: T, behavior?: TypeMoq.MockBehavior, shouldOverrideTarget?: boolean): TypeMoq.IMock<T>\r\n```\r\n\r\n* *targetInstance* - target object\r\n* *behavior* - mock behavior (see [Control mock behavior](#control-mock-behavior))\r\n* *shouldOverrideTarget* - override target properties (see [Override target properties](#override-target-properties))\r\n\r\n**Note:** To create the static mock, the provided target object is replaced by a deep clone which is accesible through the `.target` property of the resulting mock object\r\n\r\nExamples:\r\n\r\n```typescript\r\nfunction someFunc() {\r\n  return \"someFunc was called\";\r\n}\r\n\r\nfunction someFuncWithArgs(a: any, b: any, c: any) {\r\n  return \"someFuncWithArgs was called\";\r\n}\r\n\r\n// From an existing object\r\nconst bar = new Bar();\r\nconst mock: TypeMoq.IMock<Bar> = TypeMoq.Mock.ofInstance(bar);\r\n\r\n// Or from function objects\r\nconst mock1: TypeMoq.IMock<() => string> = TypeMoq.Mock.ofInstance(someFunc);\r\nconst mock2: TypeMoq.IMock<(a: any, b: any, c: any)=>string> = TypeMoq.Mock.ofInstance(someFuncWithArgs);\r\n```\r\n\r\n#### Dynamic mocks\r\n\r\n**Important:** Dynamic mocking requires the runtime (browser or node.js) to support the `Proxy` global object added in ECMAScript 6. If `Proxy` is not detected, TypeMoq is going to throw a MockException.\r\n\r\nA dynamic mock is created by specifying just a type parameter and some optional args:\r\n\r\n```typescript\r\n(method) TypeMoq.Mock.ofType<T>(targetConstructor?: {\r\n    new (...ctorArgs: any[]): T;\r\n    prototype: Object;\r\n}, behavior?: TypeMoq.MockBehavior, shouldOverrideTarget?: boolean): TypeMoq.IMock<T>\r\n```\r\n\r\n* *targetConstructor* - always `undefined` for dynamic mocks\r\n* *behavior* - mock behavior (see [Control mock behavior](#control-mock-behavior))\r\n* *shouldOverrideTarget* - override target properties (see [Override target properties](#override-target-properties))\r\n\r\n**Note:** While creating the dynamic mock, the target object is **not** instantiated by executing the constructor of the provided type parameter\r\n\r\nThe following type parameters are supported:\r\n\r\n* `Function` (as the type of a [function object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function))\r\n\r\n```typescript\r\n// Using Function as type parameter\r\nconst mock: TypeMoq.IMock<Function> = TypeMoq.Mock.ofType<Function>();\r\n```\r\n\r\n* a class type\r\n\r\n```typescript\r\n// Using the 'instance' side of the class as type parameter\r\nconst mock: TypeMoq.IMock<Bar> = TypeMoq.Mock.ofType<Bar>();\r\n\r\n// Specifying mock behavior\r\nconst mock: TypeMoq.IMock<Foo> = TypeMoq.Mock.ofType<Foo>(undefined, TypeMoq.MockBehavior.Loose);\r\n```\r\n\r\n* a constructor function\r\n\r\n```typescript\r\n// Using the 'static' side of the class as type parameter\r\nconst mock: TypeMoq.IMock<typeof Bar> = TypeMoq.Mock.ofType<typeof Bar>();\r\n```\r\n\r\n* an interface type\r\n\r\n```typescript\r\n// Using an interface as type parameter\r\nconst mock: TypeMoq.IMock<IBar> = TypeMoq.Mock.ofType<IBar>();\r\n```\r\n\r\n\r\nAs opposed to static mocks, dynamic mocks have some limitations:\r\n \r\n* No partial mocking\r\n* No embedded mocks passed as constructor arguments\r\n* Properties return by default a `function` object and not `undefined`\r\n\r\n```typescript\r\ninterface IThing {\r\n  getA(a: string): string;\r\n  getB(b: number): number;\r\n  getC(): boolean;\r\n  valueA: string;\r\n}\r\n\r\nconst mock: TypeMoq.IMock<IThing> = TypeMoq.Mock.ofType<IThing>();\r\n\r\nexpect(mock.object.getA(\"abc\")).to.be.undefined;\r\nexpect(mock.object.getB(123)).to.be.undefined;\r\nexpect(mock.object.getC()).to.be.undefined;\r\nexpect(mock.object.valueA).to.be.a(\"function\");\r\n```\r\n\r\nAs a workaround you may set the property to return `undefined`:\r\n\r\n```typescript\r\nmock.setup(x => x.valueA).returns(() => undefined);\r\n\r\nexpect(mock.object.valueA).to.be.undefined;\r\n```\r\n\r\nThis limitation also impacts the scenario where a mocked object is passed to `Promise.resolve`. To be able to handle such scenario, the mocked object must be set as a thenable (i.e. has a \"then\" method) by returning `undefined` or another value:\r\n\r\n```typescript\r\nmock.setup((x: any) => x.then).returns(() => undefined);\r\n\r\nPromise.resolve(mock.object)\r\n  .then(x => {\r\n    expect(x).eql(mock.object);\r\n  });\r\n```\r\n\r\n\r\n#### Mocks type\r\n\r\nMocks (created in any of the ways listed above) have the type `IMock<T>` and expose a couple important properties:\r\n\r\n* `(property) TypeMoq.IMock<T>.object: T` - the actual mock object (that has the same type T as the class or object being mocked)\r\n* `(property) TypeMoq.IMock<T>.target: T` - the underlying object being mocked\r\n\r\n\r\n### Setup mocks\r\n\r\nMocks allow to match functions, methods and properties and setup return callbacks or exceptions to throw.\r\n\r\n```typescript\r\n(method) TypeMoq.IMock<T>.setup<TResult>(\r\n    expression: (x: T) => TResult): TypeMoq.MethodCallReturn<T, TResult>\r\n```\r\n\r\n`setup` accepts a function (also referred as 'matcher') taking as input argument the type being mocked and as body the value/property/method (with arguments if that's the case) to match.\r\n\r\n##### Parameter matchers\r\n\r\nMatcher | Description\r\n---- | ----\r\n```TypeMoq.It.isValue<T>(x: T)``` | Performs deep comparison against the provided object or basic value\r\n```TypeMoq.It.isObjectWith<T>(x: Object)``` | Performs partial deep comparison against the provided object\r\n```TypeMoq.It.isAny()``` | Matches any type\r\n```TypeMoq.It.isAnyObject<T>(x: Ctor<T>)``` | Matches any object compatible with the provided type\r\n```TypeMoq.It.isAnyString()``` | Matches any string\r\n```TypeMoq.It.isAnyNumber()``` | Matches any number\r\n```TypeMoq.It.is<T>(predicate: IFunc2<T, boolean>)``` | Performs comparison using the provided predicate\r\n\r\nIf no matcher is specified then an implicit matcher is considered that performs strict equality deep comparison, equivalent to `TypeMoq.It.is(x => _.isEqual(x, a))`.\r\n\r\n##### Matching functions\r\n\r\n```typescript\r\n// Match a no args function\r\nconst mock: TypeMoq.IMock<() => string> = TypeMoq.Mock.ofInstance(someFunc);\r\nmock.setup(x => x()).returns(() => \"At vero eos et accusamus\");\r\n\r\n// Match a function with args\r\nconst mock: TypeMoq.IMock<(a: any, b: any, c: any) => string> = TypeMoq.Mock.ofInstance(someFuncWithArgs);\r\nmock.setup(x => x(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns(() => \"At vero eos et accusamus\");\r\n```\r\n\r\n##### Matching methods\r\n\r\n```typescript\r\nclass Doer {\r\n  doVoid(): void { }\r\n  doNumber(n?: number): number { return n || 101; }\r\n  doString(s?: string): string { return s || 'xyz'; }\r\n  doObject(o?: Object): Object { return o || new Object(); }\r\n  doBar(b?: Bar): Bar { return b; }\r\n}\r\n\r\nconst mock = TypeMoq.Mock.ofType(Doer);\r\n\r\n// Match a no args method\r\nmock.setup(x => x.doNumber());\r\n\r\n// Match a method with explicit number value params\r\nmock.setup(x => x.doNumber(TypeMoq.It.isValue(321)));\r\n\r\n// Match a method with implicit number value params\r\nmock.setup(x => x.doNumber(321));\r\n\r\n// Match a method with explicit string value params\r\nmock.setup(x => x.doString(TypeMoq.It.isValue(\"abc\")));\r\n\r\n// Match a method with implicit string value params\r\nmock.setup(x => x.doString(\"abc\"));\r\n\r\n// Match a method with object value params\r\nconst bar = new Bar();\r\nmock.setup(x => x.doObject(TypeMoq.It.isAnyObject(Bar)));\r\n\r\n// Match a method with implicit object value params\r\nconst anObject = {};\r\nmock.setup(x => x(anObject)).returns(() => 123);\r\nexpect(mock.object(anObject)).to.eq(123);\r\n\r\n// Match a method with any string params\r\nmock.setup(x => x.doString(TypeMoq.It.isAnyString()));\r\n\r\n// Match a method with any number params\r\nmock.setup(x => x.doNumber(TypeMoq.It.isAnyNumber()));\r\n\r\n// Match a method with any interface/class params\r\nmock.setup(x => x.doBar(TypeMoq.It.isAnyObject(Bar)));\r\n\r\n// Match a method by a param predicate \r\nconst bar1 = new Bar();\r\nbar1.value = \"Ut enim ad minim veniam\";\r\nconst bar2 = new Bar();\r\nconst mock = TypeMoq.Mock.ofType(Doer);\r\n\r\nmock.setup(x => x.doBar(TypeMoq.It.is((x: Bar) => x.value === \"Ut enim ad minim veniam\"))).returns(() => bar2);\r\n```\r\n\r\nTo be able to match the static methods of some class, you would need to create a dynamic mock of the type of the class itself. E.g.\r\n\r\n```typescript\r\nclass Greeter {\r\n  private static _instance: Greeter | null;\r\n  static instance(): Greeter {\r\n    if (!this._instance) {\r\n      this._instance = new Greeter();\r\n    }\r\n    return this._instance;\r\n  } \r\n    \r\n  greet(): string {\r\n    return 'Hello';\r\n  }\r\n}\r\n\r\nconst greeter = Greeter.instance();\r\nconst mock: TypeMoq.IMock<typeof Greeter> = TypeMoq.Mock.ofType<typeof Greeter>();\r\n\r\nmock.setup(x => x.instance()).returns(() => greeter);\r\n\r\nexpect(mock.object.instance()).to.eq(greeter);\r\n```\r\n\r\n##### Matching properties\r\n\r\n```typescript\r\nclass FooWithPublicGetterAndSetter {\r\n  private _foo: string;\r\n  public get foo(): string { return this._foo; }\r\n  public set foo(value: string) { this._foo = value; }\r\n}\r\n\r\n// Match a property getter\r\nconst mock = TypeMoq.Mock.ofType(FooWithPublicGetterAndSetter);\r\nmock.setup(x => x.foo);\r\n\r\n// Match a property setter\r\nmock.object.foo = \"Lorem ipsum dolor sit amet\";\r\nmock.verify(x => x.foo = TypeMoq.It.isValue(\"Lorem ipsum dolor sit amet\"), Times.atLeastOnce());\r\n```\r\n\r\nTo be able to match a property make sure the property is initialized.\r\nOtherwise the TypeScript compiler will omit the uninitialized property from the emitted JavaScript and hence TypeMoq will throw a MockException with an 'invalid setup expression' message.\r\n\r\n```typescript\r\nclass Baz {\r\n  value: string = '';\r\n  anyValue: any;\r\n}\r\n\r\nconst mock = TypeMoq.Mock.ofType(Baz);\r\nmock.setup(x => x.value);       // OK\r\nmock.setup(x => x.anyValue);    // throws MockException - invalid setup expression\r\n```\r\n\r\n##### Matching objects\r\n\r\n```typescript\r\ninterface Baz {\r\n  bar: string\r\n  jaz: number  \r\n}\r\n\r\nclass FooWithObjectArgMethod {\r\n  private _foo: Object\r\n  public foo(value: Object): void { }\r\n}\r\n\r\nconst mock = TypeMoq.Mock.ofType(FooWithObjectArgMethod);\r\n\r\n// Match object deeply\r\nmock.setup(x => x.foo(TypeMoq.It.isValue({ bar: 'hello', jaz: 42 })));\r\n\r\n// Match object partially\r\nmock.setup(x => x.foo(TypeMoq.It.isObjectWith({ jaz: 42 })));\r\n```\r\n\r\nFor the predicate based matcher, `TypeMoq.It.is<T>(predicate: IFunc2<T, boolean>)`, the argument of the predicate is a deep clone of the target argument, thus for doing object equality comparison, `===` should be replaced by `_.isEqual`.\r\n\r\n```typescript\r\ninterface BeanParams {\r\n  colour: string\r\n}\r\n\r\ninterface Service {\r\n  getBeans(params: BeanParams): string;\r\n}\r\n\r\nconst service = TypeMoq.Mock.ofType<Service>();\r\nconst beanParams: BeanParams = { colour: 'red' };\r\n\r\n// Wrong way of doing strict object comparison\r\nservice.setup(x => x.getBeans(TypeMoq.It.is<BeanParams>(x => x === beanParams))).returns(() => 'success');\r\nexpect(service.object.getBeans(beanParams)).to.not.eq('success');\r\n\r\n// Right way of doing strict object comparison\r\nservice.setup(x => x.getBeans(TypeMoq.It.is<BeanParams>(x => _.isEqual(x, beanParams)))).returns(() => 'success');\r\nservice.setup(x => x.getBeans(beanParams)).returns(() => 'success');  // Short form equivalent to the explicit form above\r\nexpect(service.object.getBeans(beanParams)).to.eq('success');\r\n```\r\n\r\n##### Attaching return callbacks\r\n\r\n```typescript\r\n(method) TypeMoq.IReturns<T, TResult>.returns(\r\n    valueFunction: (...x: any[]) => TResult): TypeMoq.IReturnsResult<T>\r\n```\r\n\r\nThe callback attached to `.returns` has the same signature as the matching function/method.\r\n\r\nAlso the callback gets called with the arguments passed to the matching function/method and it must have the same return type, making possible the following:\r\n\r\n```typescript\r\nmock.setup(x => x.doString(\"abc\")).returns((s: string) => s.toUpperCase());\r\n```\r\n\r\n##### Attaching exceptions to throw\r\n\r\n```typescript\r\n(method) TypeMoq.IThrows.throws<T extends Error>(exception: T): TypeMoq.IThrowsResult\r\n```\r\n\r\nExample:\r\n\r\n```typescript\r\nmock.setup(...).throws(new CustomException());\r\n```\r\n\r\n\r\n### Attach callbacks\r\n\r\n```typescript\r\n(method) TypeMoq.ICallback<T, TResult>.callback(\r\n    action: () => void): TypeMoq.IReturnsThrows<T, TResult>\r\n\r\n(method) TypeMoq.ICallback<T, TResult>.callback(\r\n    action: (x: T) => void): TypeMoq.IReturnsThrows<T, TResult>\r\n```\r\n\r\nAttached callbacks are called before the `.returns` callback or `.throws` get called, and they have similar signature and behavior to `.returns` callbacks.\r\n\r\nExamples:\r\n\r\n```typescript\r\nconst mock = TypeMoq.Mock.ofType(Doer);\r\nlet called1, called2 = false;\r\nlet numberArg: number;\r\n\r\nmock.setup(x => x.doString(TypeMoq.It.isAnyString())).callback(() => called1 = true).returns(s => s.toUpperCase());\r\nmock.setup(x => x.doNumber(TypeMoq.It.isAnyNumber())).callback(n => { numberArg = n; called2 = true; }).returns(n => n + 1);\r\n```\r\n\r\n\r\n### Record and replay\r\n\r\nMocks allow to \"record\" and \"replay\" one or more setups for the same matching function, method or property.\r\n\r\n* If a single setup is recorded then at replay it is always executed:\r\n```typescript\r\nconst mock = TypeMoq.Mock.ofInstance(() => -1);\r\n\r\n// record\r\nmock.setup(x => x()).returns(() => 0);\r\n\r\n// replay\r\nexpect(mock.object()).to.eq(0);\r\nexpect(mock.object()).to.eq(0);\r\nexpect(mock.object()).to.eq(0);\r\n```\r\n\r\n* If more setups are recorded then at replay they are executed in the order of registration:\r\n```typescript\r\nconst mock = TypeMoq.Mock.ofInstance(() => -1);\r\n\r\n// record\r\nmock.setup(x => x()).returns(() => 0);\r\nmock.setup(x => x()).returns(() => 1);\r\nmock.setup(x => x()).returns(() => 2);\r\n\r\n// replay\r\nexpect(mock.object()).to.eq(0);\r\nexpect(mock.object()).to.eq(1);\r\nexpect(mock.object()).to.eq(2);\r\nexpect(mock.object()).to.eq(undefined);\r\n```\r\n\r\nIn the latter case, when there are no more recorded setups left to play, the mock starts returning default values or raises MockException if `MockBehavior.Strict` (see [Control mock behavior](#control-mock-behavior)).\r\n\r\n\r\n### Reset mocks\r\n\r\n```typescript\r\n(method) TypeMoq.IMock<T>.reset(): void\r\n```\r\n\r\nCalling `.reset()` on a mock returns the mock to its initial state by removing any previous setups.\r\n\r\n\r\n### Control mock behavior\r\n\r\n##### Using MockBehavior\r\n\r\nAt mock creation, use the optional `behavior` argument with value:\r\n\r\n* `MockBehavior.Loose` (default) - never throws when no corresponding setup is found and just returns default values\r\n* `MockBehavior.Strict` - raises exceptions for anything that doesn't have a corresponding setup\r\n\r\n```typescript\r\nconst mock = TypeMoq.Mock.ofType(Doer, TypeMoq.MockBehavior.Strict);\r\n```\r\n\r\n##### Partial mocking\r\n\r\n```typescript\r\n(property) TypeMoq.IMock<T>.callBase: boolean\r\n```\r\n\r\nWhen the mock property `callBase` is set to `true`, if there's no overriding setup the mock invokes the object being mocked.\r\n\r\n```typescript\r\nmock.callBase = true;\r\n```\r\n\r\nThe default value of `callBase` is `false`, so by default when there's no overriding setup the mock returns `undefined`.\r\n\r\n\r\n### Override target properties\r\n\r\nAt mock creation, use the optional `shouldOverrideTarget` argument with value:\r\n\r\n* `true` (default) - mock setups are going to be applied to the target object\r\n* `false` - mock setups are **not** going to be applied to the target object\r\n\r\nTo be able to use the target object inside `.returns`, you need to choose **not** to override the target properties:\r\n\r\n```typescript\r\nconst targetInstance = {\r\n    n: 100,\r\n    getValue() {\r\n        return this.n;\r\n    },\r\n    setValue(n) {\r\n        this.n = n;\r\n    }\r\n};\r\nconst mock = TypeMoq.Mock.ofInstance(targetInstance, undefined, false);\r\n\r\nmock.setup(x => x.getValue()).returns(() => mock.target.getValue());\r\n\r\nexpect(mock.object.getValue()).equal(100);\r\n```\r\n\r\n\r\n### Verify expectations\r\n\r\n```typescript\r\n(method) TypeMoq.IVerifies.verifiable(times?: TypeMoq.Times): void\r\n```\r\n\r\nExpectations can be verified either one by one or all at once by marking matchers as verifiable.\r\n\r\n##### Expectations\r\n\r\nExpectation | Description\r\n---- | ----\r\n```TypeMoq.Times.exactly(n: number)``` | Called exactly `n` times\r\n```TypeMoq.Times.never()``` | Never called\r\n```TypeMoq.Times.once()``` | Called once\r\n```TypeMoq.Times.atLeast(n: number)``` | Called at least `n` times\r\n```TypeMoq.Times.atMost(n: number)``` | Called at most `n` times\r\n```TypeMoq.Times.atLeastOnce()``` | Called at least once (default value)\r\n```TypeMoq.Times.atMostOnce()``` | Called at most once\r\n\r\n##### Verify expectations one by one\r\n\r\n```typescript\r\n(method) TypeMoq.IMock<T>.verify<TResult>(\r\n    expression: (x: T) => TResult, times: TypeMoq.Times): void\r\n```\r\n\r\nTo verify an expectation you can use the `verify` method and specify a matching function and an expectation.\r\n\r\nExamples:\r\n\r\n```typescript\r\n// Verify that a no args function was called at least once\r\nconst mock: TypeMoq.IMock<() => string> = TypeMoq.Mock.ofInstance(someFunc);\r\nmock.object();\r\nmock.verify(x => x(), TypeMoq.Times.atLeastOnce());\r\n\r\n// Verify that a function with args was called at least once\r\nconst mock: TypeMoq.IMock<(a: any, b: any, c: any) => string> = TypeMoq.Mock.ofInstance(someFuncWithArgs);\r\nmock.object(1, 2, 3);\r\nmock.verify(x => x(TypeMoq.It.isAnyNumber(), TypeMoq.It.isAnyNumber(), TypeMoq.It.isAnyNumber()), TypeMoq.Times.atLeastOnce());\r\n\r\n// Verify that no args method was called at least once\r\nconst mock = TypeMoq.Mock.ofType(Doer);\r\nmock.object.doVoid();\r\nmock.verify(x => x.doVoid(), TypeMoq.Times.atLeastOnce());\r\n\r\n// Verify that method with params was called at least once\r\nconst mock = TypeMoq.Mock.ofType(Doer);\r\nmock.object.doString(\"Lorem ipsum dolor sit amet\");\r\nmock.verify(x => x.doString(TypeMoq.It.isValue(\"Lorem ipsum dolor sit amet\")), TypeMoq.Times.atLeastOnce());\r\n\r\n// Verify that value getter was called at least once\r\nconst mock = TypeMoq.Mock.ofType(Bar);\r\nmock.object.value;\r\nmock.verify(x => x.value, TypeMoq.Times.atLeastOnce());\r\n\r\n// Verify that value setter was called at least once\r\nconst mock = TypeMoq.Mock.ofType(Bar);\r\nmock.object.value = \"Lorem ipsum dolor sit amet\";\r\nmock.verify(x => x.value = TypeMoq.It.isValue(\"Lorem ipsum dolor sit amet\"), TypeMoq.Times.atLeastOnce());\r\n```\r\n\r\n**Note:**\r\n\r\n* When constructing a mock, it is allowed to pass mock objects as arguments and later verify expectations on them. E.g.: \r\n\r\n```typescript\r\nconst mockBar = TypeMoq.Mock.ofType(Bar);\r\nconst mockFoo = TypeMoq.Mock.ofType(Foo, TypeMoq.MockBehavior.Loose, mockBar.object);\r\nmockFoo.callBase = true;\r\n\r\nmockFoo.object.setBar(\"Lorem ipsum dolor sit amet\");\r\n\r\nmockBar.verify(x => x.value = TypeMoq.It.isValue(\"Lorem ipsum dolor sit amet\"), TypeMoq.Times.atLeastOnce());\r\n```\r\n\r\n* For static mocks, TypeMoq is able to verify any inner calls inside regular functions but not inside lambda ones. E.g.:\r\n\r\n```typescript\r\nclass FooBar {\r\n  register(): void {\r\n    this.canExecute();\r\n  }\r\n\r\n  registerLambda = () => {\r\n    this.canExecute();\r\n  }\r\n\r\n  canExecute(): void {\r\n    console.log(\"FooBar.canExecute() was called\");\r\n  }\r\n}\r\n\r\nconst mock: TypeMoq.IMock<FooBar> = TypeMoq.Mock.ofType(FooBar);\r\nmock.callBase = true;\r\n\r\nmock.object.register();\r\nmock.object.registerLambda(); // Function calls cannot be verified inside a lambda\r\n\r\nmock.verify(x => x.canExecute(), TypeMoq.Times.once());\r\n```\r\n\r\n##### Verify all expectations at once\r\n\r\n```typescript\r\n(method) TypeMoq.IMock<T>.verifyAll(): void\r\n```\r\n\r\nInstead of verifying one expectation at a time, you may specify the expectation at setup time by calling `verifiable(times: TypeMoq.Times)` and then `verifyAll()` to check all expectations.\r\n\r\nThe default value of the `times` parameter is equal to `TypeMoq.Times.once()`.\r\n\r\n```typescript\r\nmock.setup(x => x.doNumber(999)).verifiable(); // implicitly TypeMoq.Times.once()\r\nmock.setup(x => x.doString(TypeMoq.It.isAny())).verifiable(TypeMoq.Times.exactly(2));\r\nmock.setup(x => x.doVoid()).verifiable(TypeMoq.Times.atMostOnce());\r\n\r\nmock.object.doVoid();\r\nmock.object.doString(\"Lorem ipsum dolor sit amet\");\r\nmock.object.doString(\"Ut enim ad minim veniam\");\r\nmock.object.doNumber(999);\r\n\r\nmock.verifyAll();\r\n```\r\n\r\nWhen mock behavior is `TypeMoq.MockBehavior.Strict`, every call to `.setup()` automatically calls `.verifiable()` behind the scenes, as the default.\r\n\r\n```typescript\r\nconst mock = TypeMoq.Mock.ofType(Doer, TypeMoq.MockBehavior.Strict);\r\n\r\nmock.setup(x => x.doNumber(999)); // implicitly TypeMoq.Times.once()\r\nmock.setup(x => x.doVoid()).verifiable(TypeMoq.Times.atMostOnce());\r\n\r\nmock.object.doVoid();\r\nmock.object.doNumber(999);\r\n\r\nmock.verifyAll();\r\n```\r\n\r\n##### Verify expectation invocation order\r\n\r\nExpectation invocation order | Description\r\n---- | ----\r\n```TypeMoq.ExpectedCallType.InAnyOrder``` | Only call count considered (default value) \r\n```TypeMoq.ExpectedCallType.InSequence``` | Both call count and order considered\r\n\r\n```typescript\r\nconst mock = TypeMoq.Mock.ofInstance((x: number) => { });\r\n\r\nmock.setup(x => x(1)).verifiable(TypeMoq.Times.once(), TypeMoq.ExpectedCallType.InSequence);\r\nmock.setup(x => x(2)).verifiable(TypeMoq.Times.once(), TypeMoq.ExpectedCallType.InSequence);\r\n\r\nmock.object(2);\r\nmock.object(1);\r\n\r\nmock.verifyAll();  // it should throw MockException\r\n```\r\n\r\n\r\n### Create global mocks\r\n\r\n#### Static global mocks\r\n\r\nStatic global mocks are created by specifying a class type or an existing object, similar to regular static mocks.\r\n\r\nYou may also specify a container object for the type/object being mocked.\r\n\r\nFor browsers the top global object is the `window` object, which is the default `container` value in `TypeMoq.GlobalMock`.\r\nFor node.js the top global object is the `global` object.\r\n\r\n##### Using class types\r\n\r\n```typescript\r\n(method) TypeMoq.GlobalMock.ofType<T>(targetConstructor: {\r\n    new (): T;\r\n    prototype: Object;\r\n}, container?: Object, behavior?: TypeMoq.MockBehavior): TypeMoq.IGlobalMock<T>\r\n```\r\n\r\nDue to browser security limitations, global mocks created by specifying class type cannot have constructor arguments.\r\n\r\nExamples:\r\n\r\n```typescript\r\n// global scope\r\n\r\ninterface IGlobalBar {\r\n  value: string;\r\n}\r\n\r\nclass GlobalBar implements IGlobalBar {\r\n  value: string = '';\r\n}\r\n\r\n// Create an instance using class as ctor parameter\r\nconst mock: TypeMoq.IGlobalMock<GlobalBar> = TypeMoq.GlobalMock.ofType(GlobalBar, global);\r\n\r\n// Create an instance using class as ctor parameter and casting result to interface\r\nconst mock: TypeMoq.IGlobalMock<IGlobalBar> = TypeMoq.GlobalMock.ofType(GlobalBar, global);\r\n\r\n// Create an instance using interface as type variable and class as ctor parameter\r\nconst mock: TypeMoq.IGlobalMock<IGlobalBar> = TypeMoq.GlobalMock.ofType<IGlobalBar>(GlobalBar, global);\r\n\r\n// Create an instance of 'XmlHttpRequest' global type\r\nconst mock = TypeMoq.GlobalMock.ofType(XMLHttpRequest, global);\r\n```\r\n\r\n##### Using existing objects, including function objects\r\n\r\n```typescript\r\n(method) TypeMoq.GlobalMock.ofInstance<T>(\r\n    targetInstance: T, globalName?: string, container?: Object, behavior?: TypeMoq.MockBehavior): TypeMoq.IGlobalMock<T>\r\n```\r\n\r\nWhen creating mock instances out of global objects (such as `window.localStorage`), you should provide the name of the global object (*\"localStorage\"* in this case) as the second parameter.\r\n\r\nExamples:\r\n\r\n```typescript\r\n// Create an instance using class as ctor parameter and ctor args\r\nconst bar = new Bar();\r\nconst foo = new Foo(bar);\r\nconst mock: TypeMoq.IGlobalMock<Foo> = TypeMoq.GlobalMock.ofInstance(foo);\r\n\r\n// Create an instance using a generic class as ctor parameter and ctor args\r\nconst foo = new GenericFoo(Bar);\r\nconst mock: TypeMoq.IGlobalMock<GenericFoo<Bar>> = TypeMoq.GlobalMock.ofInstance(foo);\r\n\r\n// Create an instance from an existing object\r\nconst bar = new GlobalBar();\r\nconst mock: TypeMoq.IGlobalMock<GlobalBar> = TypeMoq.GlobalMock.ofInstance(bar);\r\n\r\n// Create an instance from a function object\r\nconst mock1: TypeMoq.IGlobalMock<() => string> = TypeMoq.GlobalMock.ofInstance(someGlobalFunc);\r\nconst mock2: TypeMoq.IGlobalMock<(a: any, b: any, c: any) => string> = TypeMoq.GlobalMock.ofInstance(someGlobalFuncWithArgs);\r\n\r\n// Create an instance from 'window.localStorage' global object\r\nconst mock = TypeMoq.GlobalMock.ofInstance(localStorage, \"localStorage\");\r\n```\r\n\r\n#### Dynamic global mocks\r\n\r\n```typescript\r\n(method) TypeMoq.GlobalMock.ofType2<T>(\r\n    globalName: string, container?: Object, behavior?: TypeMoq.MockBehavior): TypeMoq.IGlobalMock<T>\r\n```\r\n\r\nDynamic global mocks are created by specifying a type parameter and the name of the global object as the first constructor argument.\r\n\r\n```typescript\r\n// Create an instance using a class as type parameter\r\nconst mock: TypeMoq.IGlobalMock<GlobalBar> = TypeMoq.GlobalMock.ofType2<GlobalBar>(\"GlobalBar\", global);\r\n\r\n// Create an instance using an interface as type parameter\r\nconst mock: TypeMoq.IGlobalMock<IGlobalBar> = TypeMoq.GlobalMock.ofType2<IGlobalBar>(\"IGlobalBar\", global);\r\n\r\n// Create an instance of 'XmlHttpRequest' global type\r\nconst mock = TypeMoq.GlobalMock.ofType2<XMLHttpRequest>(\"XMLHttpRequest\", global);\r\n```\r\n\r\nCompared to static global mocks, dynamic global mocks suffer from the same limitations as regular dynamic mocks.\r\n\r\n\r\n### Auto sandbox global mocks\r\n\r\n```typescript\r\n(method) TypeMoq.GlobalScope.using(\r\n    ...args: TypeMoq.IGlobalMock<any>[]): TypeMoq.IUsingResult\r\n\r\n(method) TypeMoq.IUsingResult.with(action: () => void): void\r\n```\r\n\r\nReplacing and restoring global class types and objects is done automagically by combining global mocks with global scopes.\r\n\r\nExamples:\r\n\r\n```typescript\r\n// global scope\r\n\r\nfunction someGlobalFunc() {\r\n  return \"someGlobalFunc was called\";\r\n}\r\n\r\nfunction someGlobalFuncWithArgs(a: any, b: any, c: any) {\r\n  return \"someGlobalFuncWithArgs was called\";\r\n}\r\n\r\n// Global no args function is auto sandboxed\r\nconst mock = TypeMoq.GlobalMock.ofInstance(someGlobalFunc);\r\nTypeMoq.GlobalScope.using(mock).with(() => {\r\n    someGlobalFunc();\r\n    someGlobalFunc();\r\n});\r\n\r\n// Global function with args is auto sandboxed\r\nconst mock = TypeMoq.GlobalMock.ofInstance(someGlobalFuncWithArgs);\r\nTypeMoq.GlobalScope.using(mock).with(() => {\r\n    someGlobalFuncWithArgs(1,2,3);\r\n    someGlobalFuncWithArgs(\"1\",\"2\",\"3\");\r\n    someGlobalFuncWithArgs(1, 2, 3);\r\n);\r\n\r\n// Global object is auto sandboxed\r\nconst mock = TypeMoq.GlobalMock.ofType(GlobalBar);\r\nTypeMoq.GlobalScope.using(mock).with(() => {\r\n    const bar1 = new GlobalBar();\r\n    bar1.value;\r\n    bar1.value;\r\n});\r\n\r\n// 'window.XmlHttpRequest' global object is auto sandboxed\r\nconst mock = TypeMoq.GlobalMock.ofType(XMLHttpRequest);\r\nTypeMoq.GlobalScope.using(mock).with(() => {\r\n    const xhr1 = new XMLHttpRequest();\r\n    xhr1.open(\"GET\", \"http://www.typescriptlang.org\", true);\r\n    xhr1.send();\r\n    mock.verify(x => x.send(), TypeMoq.Times.exactly(1));\r\n});\r\nconst xhr2 = new XMLHttpRequest();\r\nxhr2.open(\"GET\", \"http://www.typescriptlang.org\", true);\r\nxhr2.send();\r\nmock.verify(x => x.send(), TypeMoq.Times.exactly(1));\r\n\r\n// 'window.localStorage' global object is auto sandboxed\r\nconst mock = TypeMoq.GlobalMock.ofInstance(localStorage, \"localStorage\");\r\nmock.setup(x => x.getItem(TypeMoq.It.isAnyString())).returns((key: string) => \"[]\");\r\nTypeMoq.GlobalScope.using(mock).with(() => {\r\n    expect(localStorage.getItem(\"xyz\")).to.eq(\"[]\");\r\n});\r\nlocalStorage.setItem(\"xyz\", \"Lorem ipsum dolor sit amet\");\r\nexpect(localStorage.getItem(\"xyz\")).to.eq(\"Lorem ipsum dolor sit amet\");\r\n```\r\n\r\n**Note:** \r\nInside the scope of a TypeMoq.GlobalScope, when constructing objects from global functions/class types which are being replaced by mocks, the constructor always returns the mocked object (of corresponding type) passed in as argument to the `TypeMoq.GlobalScope.using` function\r\n\r\n\r\n## License\r\n\r\n[MIT](https://github.com/florinn/typemoq/blob/master/LICENSE)\r\n","versions":{"0.0.4":{"name":"typemoq","version":"0.0.4","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"typemoq.js","repository":{"type":"git","url":"git@github.com:florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","typescript","javascript"],"dependencies":{"underscore":"^1.7.0"},"devDependencies":{"chai":"^1.10.0","del":"^0.1.3","event-stream":"^3.1.7","gulp":"^3.6.0","gulp-add-src":"^0.2.0","gulp-cache":"^0.1.1","gulp-concat":"^2.4.3","gulp-concat-sourcemap":"^1.3.1","gulp-filter":"^0.4.1","gulp-if":"^1.2.5","gulp-jshint":"^1.5.3","gulp-karma":"0.0.4","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-size":"^0.3.0","gulp-sourcemaps":"^1.2.8","gulp-typescript":"^2.3.0","gulp-uglify":"^0.2.1","gulp-watch":"^1.2.0","jshint-stylish":"^0.2.0","karma":"^0.12.28","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^0.1.5","karma-mocha":"^0.1.9","karma-phantomjs-launcher":"^0.1.4","main-bower-files":"^2.4.0","mocha":"^2.0.1","run-sequence":"^1.0.2"},"engines":{"node":">=0.10.0"},"homepage":"https://github.com/florinn/typemoq","_id":"typemoq@0.0.4","scripts":{},"_shasum":"dbb0859797aff700d523e804ce4c8314f922e796","_from":".","_npmVersion":"2.1.5","_nodeVersion":"0.10.32","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"dist":{"shasum":"dbb0859797aff700d523e804ce4c8314f922e796","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-0.0.4.tgz","integrity":"sha512-kNPjfwIsfXexI8jxYw3RB6qEuFkjHzY3k5AaUaeNonTlEMon6srXobTBtCgVQotw00th7RtstON5CDIy1XzDAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGUxrv/8evS9irgVThJQJV5EMc7nasJrn9D6Nj56v+QHAiEArHmqkiw4Lum4BwOcLatX+tiRqca1PcQNNiVWRgLBXWI="}]}},"0.0.5":{"name":"typemoq","version":"0.0.5","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"typemoq.js","repository":{"type":"git","url":"git@github.com:florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"dependencies":{"underscore":"^1.7.0"},"devDependencies":{"chai":"^1.10.0","del":"^0.1.3","event-stream":"^3.1.7","gulp":"^3.6.0","gulp-add-src":"^0.2.0","gulp-cache":"^0.1.1","gulp-concat":"^2.4.3","gulp-concat-sourcemap":"^1.3.1","gulp-filter":"^0.4.1","gulp-if":"^1.2.5","gulp-jshint":"^1.5.3","gulp-karma":"0.0.4","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-size":"^0.3.0","gulp-sourcemaps":"^1.2.8","gulp-typescript":"^2.3.0","gulp-uglify":"^0.2.1","gulp-watch":"^1.2.0","jshint-stylish":"^0.2.0","karma":"^0.12.28","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^0.1.5","karma-mocha":"^0.1.9","karma-phantomjs-launcher":"^0.1.4","main-bower-files":"^2.4.0","mocha":"^2.0.1","run-sequence":"^1.0.2"},"engines":{"node":">=0.10.0"},"homepage":"https://github.com/florinn/typemoq","_id":"typemoq@0.0.5","scripts":{},"_shasum":"fafd23b9c98a2cbf0b657f1425cc5d49f30a22b5","_from":".","_npmVersion":"2.1.5","_nodeVersion":"0.10.32","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"dist":{"shasum":"fafd23b9c98a2cbf0b657f1425cc5d49f30a22b5","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-0.0.5.tgz","integrity":"sha512-ARzBjaJj+BblWyb2bUq+jtxAiGRWAcYTCE9diEi0BNQwnQDrIh0vknO+hixJnzKUOAaCeGVNNFZi4vjyAECpHQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAT/QdRle5XUO3kSeCqJndtdlZu9wlHr4Pis3wJupGMgIhAK5EfyZ0Auji29Mx1ORaX/q7oWmr1KEr4ZEuTNWyebvI"}]}},"0.0.6":{"name":"typemoq","version":"0.0.6","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"typemoq.js","repository":{"type":"git","url":"git@github.com:florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"dependencies":{"underscore":"^1.7.0"},"devDependencies":{"chai":"^1.10.0","del":"^0.1.3","event-stream":"^3.1.7","gulp":"^3.6.0","gulp-add-src":"^0.2.0","gulp-cache":"^0.1.1","gulp-concat":"^2.4.3","gulp-concat-sourcemap":"^1.3.1","gulp-filter":"^0.4.1","gulp-if":"^1.2.5","gulp-jshint":"^1.5.3","gulp-karma":"0.0.4","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-size":"^0.3.0","gulp-sourcemaps":"^1.2.8","gulp-typescript":"^2.3.0","gulp-uglify":"^0.2.1","gulp-watch":"^1.2.0","jshint-stylish":"^0.2.0","karma":"^0.12.28","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^0.1.5","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","main-bower-files":"^2.4.0","mocha":"^2.0.1","run-sequence":"^1.0.2"},"engines":{"node":">=0.10.0"},"homepage":"https://github.com/florinn/typemoq","_id":"typemoq@0.0.6","scripts":{},"_shasum":"e0d668bd69253ce74148e5133604ecceac3f9056","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"dist":{"shasum":"e0d668bd69253ce74148e5133604ecceac3f9056","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-0.0.6.tgz","integrity":"sha512-URwP/jNsH8v+8rl5fx2xCrKtlYWWlWNH1kdF0MkCqkcpOQf8XwXHpWixKl2xJPMa0kZJh8piry6O0Jdztazyww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICKzUwIuSjkqG9DaYHDw9VMfHxJbiLvJ1VKd5vMcwZLfAiBPPtHFsJJBRkiOvzh08F3ZXRu0LMmdpZ7+1b1DNn+IXA=="}]}},"0.1.0":{"name":"typemoq","version":"0.1.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"typemoq.js","typings":"typemoq.node.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"dependencies":{"underscore":"^1.7.0"},"devDependencies":{"chai":"^1.10.0","del":"^0.1.3","event-stream":"^3.1.7","gulp":"^3.6.0","gulp-add-src":"^0.2.0","gulp-cache":"^0.1.1","gulp-concat":"^2.4.3","gulp-concat-sourcemap":"^1.3.1","gulp-delete-lines":"^0.0.7","gulp-filter":"^0.4.1","gulp-if":"^1.2.5","gulp-jshint":"^1.5.3","gulp-karma":"0.0.4","gulp-load-plugins":"^0.5.0","gulp-mocha":"^2.2.0","gulp-rename":"^1.2.0","gulp-size":"^0.3.0","gulp-sourcemaps":"^1.2.8","gulp-typescript":"^2.3.0","gulp-uglify":"^0.2.1","gulp-watch":"^1.2.0","jshint-stylish":"^0.2.0","karma":"^0.12.28","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^0.1.5","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","main-bower-files":"^2.4.0","mocha":"^2.0.1","run-sequence":"^1.0.2"},"engines":{"node":">=0.10.0"},"homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@0.1.0","scripts":{},"_shasum":"c4f337de9f94a35414ee1778b9e0bf8d92d77587","_from":".","_npmVersion":"2.15.1","_nodeVersion":"4.4.4","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"c4f337de9f94a35414ee1778b9e0bf8d92d77587","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-0.1.0.tgz","integrity":"sha512-DfqsuSoOT48VjKR2ltsHr+/pvPFteiHXd7JzaJCw4OIBRaMbQx1jZosd+SEMFOkz/OC9XfkoL8TXe8OZn0lD3g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAshBKpwcvFVO+gCWp/wTtS+7ii7mG6fs5+sIB8A7LYlAiBml8iAu7eWACZJACq73C0Ip8Lfp9sKhgAYm29aGKH7dQ=="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-0.1.0.tgz_1464287036781_0.38497842103242874"}},"0.1.1":{"name":"typemoq","version":"0.1.1","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"typemoq.js","typings":"typemoq.node.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"dependencies":{"underscore":"^1.7.0"},"devDependencies":{"chai":"^1.10.0","del":"^0.1.3","event-stream":"^3.1.7","gulp":"^3.6.0","gulp-add-src":"^0.2.0","gulp-cache":"^0.1.1","gulp-concat":"^2.4.3","gulp-concat-sourcemap":"^1.3.1","gulp-delete-lines":"^0.0.7","gulp-filter":"^0.4.1","gulp-if":"^1.2.5","gulp-jshint":"^1.5.3","gulp-karma":"0.0.4","gulp-load-plugins":"^0.5.0","gulp-mocha":"^2.2.0","gulp-rename":"^1.2.0","gulp-size":"^0.3.0","gulp-sourcemaps":"^1.2.8","gulp-typescript":"^2.3.0","gulp-uglify":"^0.2.1","gulp-watch":"^1.2.0","jshint-stylish":"^0.2.0","karma":"^0.12.28","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^0.1.5","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","main-bower-files":"^2.4.0","mocha":"^2.0.1","run-sequence":"^1.0.2"},"engines":{"node":">=0.10.0"},"homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@0.1.1","scripts":{},"_shasum":"901cf3bdec0f2a40a61ff5b18a797539e5a8c458","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"901cf3bdec0f2a40a61ff5b18a797539e5a8c458","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-0.1.1.tgz","integrity":"sha512-Ch4hsTB301zxHFrnKsnCggDIqD4afHGLxF+CnDwVMwx7l4ni5+ZZ9KF79nUGyYyDSHcYcliR1KYIJQtKLe4qSg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEy9dI7SyoL7y3A1o+IqdFsPpJbx6DIFgl3bhkFJZCDVAiEAhopJdtYwGbqKttOpfhGhuVk2eDxn5snBz1pcFCXuIUY="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-0.1.1.tgz_1465217038664_0.28709572763182223"}},"0.2.0":{"name":"typemoq","version":"0.2.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"typemoq.js","typings":"typemoq.node.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"dependencies":{"underscore":"^1.7.0"},"devDependencies":{"chai":"^1.10.0","del":"^0.1.3","event-stream":"^3.1.7","gulp":"^3.6.0","gulp-add-src":"^0.2.0","gulp-cache":"^0.1.1","gulp-concat":"^2.4.3","gulp-concat-sourcemap":"^1.3.1","gulp-delete-lines":"^0.0.7","gulp-filter":"^0.4.1","gulp-if":"^1.2.5","gulp-jshint":"^1.5.3","gulp-karma":"0.0.4","gulp-load-plugins":"^0.5.0","gulp-mocha":"^2.2.0","gulp-rename":"^1.2.0","gulp-size":"^0.3.0","gulp-sourcemaps":"^1.2.8","gulp-typescript":"^2.3.0","gulp-uglify":"^0.2.1","gulp-watch":"^1.2.0","jshint-stylish":"^0.2.0","karma":"^0.12.28","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^0.1.5","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","main-bower-files":"^2.4.0","mocha":"^2.0.1","run-sequence":"^1.0.2"},"engines":{"node":">=0.10.0"},"homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@0.2.0","scripts":{},"_shasum":"15c270a6cf3fe0d03e34b1c9f18359dbe0ec99de","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"15c270a6cf3fe0d03e34b1c9f18359dbe0ec99de","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-0.2.0.tgz","integrity":"sha512-7zTQPoD52/ItyLeeaE6veCrIl9d8L0e8QuCmqhA5j/tU1mc4PNw0+LII8V5c0F165pmG2Mu7daC+//3o8nyEug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdld+G98AM8jTb9EjslSBMDZZRqWdBNOHfHJnOmXwRHAIgBmFMu2hqqNNV6E1aMj0j+/ThDOaXwivVYj8tPzHWWOU="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/typemoq-0.2.0.tgz_1465738279823_0.9157218507025391"}},"0.3.1":{"name":"typemoq","version":"0.3.1","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"typemoq.js","typings":"typemoq.node.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"dependencies":{"underscore":"^1.7.0"},"devDependencies":{"chai":"^1.10.0","del":"^0.1.3","event-stream":"^3.1.7","gulp":"^3.6.0","gulp-add-src":"^0.2.0","gulp-cache":"^0.1.1","gulp-concat":"^2.4.3","gulp-concat-sourcemap":"^1.3.1","gulp-delete-lines":"^0.0.7","gulp-filter":"^0.4.1","gulp-if":"^1.2.5","gulp-jshint":"^1.5.3","gulp-karma":"0.0.4","gulp-load-plugins":"^0.5.0","gulp-mocha":"^2.2.0","gulp-rename":"^1.2.0","gulp-size":"^0.3.0","gulp-sourcemaps":"^1.2.8","gulp-typescript":"^2.3.0","gulp-uglify":"^0.2.1","gulp-watch":"^1.2.0","jshint-stylish":"^0.2.0","karma":"^0.12.28","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^0.1.5","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","main-bower-files":"^2.4.0","mocha":"^2.0.1","run-sequence":"^1.0.2"},"engines":{"node":">=0.10.0"},"homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@0.3.1","scripts":{},"_shasum":"3c4d988c46af53c4fde4341a619465a65f22d1e8","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"3c4d988c46af53c4fde4341a619465a65f22d1e8","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-0.3.1.tgz","integrity":"sha512-huKkM5vv7B0CKyAVtzBdirvMjTM0iLmdZoTGJrvXLTyQzOgo9aemIICccFrUHceSKk9PjFxV3vxAgw9IfYg+Fw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUDkQyRs0QE95GjzB8mGdRkanR7gm4f8ZssDrpfjaWuwIhAOpJWgVqlZuyOUOjhyoBdzXwlnCOnLvXxwInYmg9Bx5M"}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-0.3.1.tgz_1468783039078_0.6913055039476603"}},"0.3.2":{"name":"typemoq","version":"0.3.2","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"typemoq.js","typings":"typemoq.node.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"dependencies":{"underscore":"^1.7.0"},"devDependencies":{"chai":"^1.10.0","del":"^0.1.3","event-stream":"^3.1.7","gulp":"^3.6.0","gulp-add-src":"^0.2.0","gulp-cache":"^0.1.1","gulp-concat":"^2.4.3","gulp-concat-sourcemap":"^1.3.1","gulp-delete-lines":"^0.0.7","gulp-filter":"^0.4.1","gulp-if":"^1.2.5","gulp-jshint":"^1.5.3","gulp-karma":"0.0.4","gulp-load-plugins":"^0.5.0","gulp-mocha":"^2.2.0","gulp-rename":"^1.2.0","gulp-size":"^0.3.0","gulp-sourcemaps":"^1.2.8","gulp-typescript":"^2.3.0","gulp-uglify":"^0.2.1","gulp-watch":"^1.2.0","jshint-stylish":"^0.2.0","karma":"^0.12.28","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^0.1.5","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","main-bower-files":"^2.4.0","mocha":"^2.0.1","run-sequence":"^1.0.2"},"engines":{"node":">=0.10.0"},"homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@0.3.2","scripts":{},"_shasum":"0a4460e6608dabd34226b1067c9c517f20078159","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"0a4460e6608dabd34226b1067c9c517f20078159","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-0.3.2.tgz","integrity":"sha512-FRs5zp4tWiyJvAxcPTOLta04n3isdY6hmd+3sTIY0FlOnPY2PYCcj0nLlCiakaV1RSm/sOCdW1jh95EBq5JZAw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8teEsqw0ckT6KhyxHUsmAfvOsqohcLiclFLg2Ab6m/wIhAKlQ08PxUW28zJ5KZNmCosd87gXbb8tOGrpXs75OpJ+H"}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/typemoq-0.3.2.tgz_1469205992981_0.37193081504665315"}},"0.3.3":{"name":"typemoq","version":"0.3.3","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"typemoq.js","typings":"typemoq.node.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"dependencies":{"underscore":"^1.7.0"},"devDependencies":{"chai":"^1.10.0","del":"^0.1.3","event-stream":"^3.1.7","gulp":"^3.6.0","gulp-add-src":"^0.2.0","gulp-cache":"^0.1.1","gulp-concat":"^2.4.3","gulp-concat-sourcemap":"^1.3.1","gulp-delete-lines":"^0.0.7","gulp-filter":"^0.4.1","gulp-if":"^1.2.5","gulp-jshint":"^1.5.3","gulp-karma":"0.0.4","gulp-load-plugins":"^0.5.0","gulp-mocha":"^2.2.0","gulp-rename":"^1.2.0","gulp-size":"^0.3.0","gulp-sourcemaps":"^1.2.8","gulp-typescript":"^2.3.0","gulp-uglify":"^0.2.1","gulp-watch":"^1.2.0","jshint-stylish":"^0.2.0","karma":"^0.12.28","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^0.1.5","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","main-bower-files":"^2.4.0","mocha":"^2.0.1","run-sequence":"^1.0.2"},"engines":{"node":">=0.10.0"},"homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@0.3.3","scripts":{},"_shasum":"c063a2767d2966670e325f4bb1cbba5d5bb06cd7","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"c063a2767d2966670e325f4bb1cbba5d5bb06cd7","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-0.3.3.tgz","integrity":"sha512-XdyTxHRVhaLR/eKiDLYNkMHC3CU+ovaXAU/uuOUhAJOUrhBXUE9T9WR2EwEmEuuw+AwAfXaRMPuvxDYD6G5ytA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCT8LV71Za8oRGeM1+ZoBXJ1WrO4rBkVWHY8Jshv0oUAgIhAJP8D5sNTtqkIPQnfzps1rBi4pF7oGl/AbsXE3XT6OHh"}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/typemoq-0.3.3.tgz_1472381882749_0.6713126136455685"}},"1.0.0":{"name":"typemoq","version":"1.0.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp\""},"dependencies":{"@types/lodash":"^4.14.37","@types/node":"^6.0.45","lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.32","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.6.1","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.0.8"},"engines":{"node":"^6.0.45"},"gitHead":"39bbf4e0489a4a29a7b06670d4b9c0cb78a53ddd","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.0.0","_shasum":"d34b7d1ecb927ffc60ade8c7cb4d08fe5a108124","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"d34b7d1ecb927ffc60ade8c7cb4d08fe5a108124","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.0.0.tgz","integrity":"sha512-GGf982agPB7XdAXAlIgZvrYPdrQOilS0lhV3u3hT8SbY2lBMdqDswZcdSBFQ+IkUo/nb/QrhY3+8fMIM123CbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDhvnqRMA5b90N/mirxmoM5GqpEK3zpzpZsizBBIc2cLAiEAvorLL6wBkILDIUDHzDUO80whbU5FfhmACgK6CKSsjhA="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.0.0.tgz_1479998883643_0.6726687669288367"}},"1.0.1":{"name":"typemoq","version":"1.0.1","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp\""},"dependencies":{"@types/lodash":"^4.14.37","@types/node":"^6.0.45","lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.32","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.6.1","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.0.8"},"engines":{"node":"^6.0.45"},"gitHead":"fa5f8d5c5f3fc39ba2352ecadbbc23798ec8bb85","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.0.1","_shasum":"4172ddccb7e14820df650c75dee7b976f285d8c9","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"4172ddccb7e14820df650c75dee7b976f285d8c9","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.0.1.tgz","integrity":"sha512-xA6iP7t3bGdYxquVa3RdN/yBktbKmS36VVVa2oYSKNesU3qipqxh8Km17XSIYvLHsP/PhTwh8aKnQHzByrdY+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJXMBvH8Zbp+ZKmdZdmbL2C3bL7Ro+VwWQDmq5xFMt3AIhAIsVZjdX6RlETKyOcRlZzmufXvixeMMvlGju0KNZZKg9"}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/typemoq-1.0.1.tgz_1480081574215_0.7987746621947736"}},"1.0.2":{"name":"typemoq","version":"1.0.2","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp\""},"dependencies":{"@types/lodash":"^4.14.37","@types/node":"^6.0.45","lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.32","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.6.1","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.0.8"},"engines":{"node":"^6.0.45"},"gitHead":"e773349785675f7a9a9ab4f1e5bf07a28709db70","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.0.2","_shasum":"a87e903752b980a930815cf682bbf59cf1262b7c","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"a87e903752b980a930815cf682bbf59cf1262b7c","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.0.2.tgz","integrity":"sha512-1mjZQG7dBO2RozAy9XQe4j6RzR6veSBTUKMXdpWw3MpsL2kfyWpJtzhG+Hrz+t3Jf0DM6EZRY9cWqdX4nFvjvg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIACB/OLS8Nt+xMaB33Z3/9K0OjphEdOE/ugKQ7VwcLvqAiEA/rc8vJJhWAXu8zlGr7W02UD6rkt9vu8PJpPjehVrnW8="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.0.2.tgz_1480321714403_0.7323173168115318"}},"1.0.3":{"name":"typemoq","version":"1.0.3","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp\""},"dependencies":{"@types/lodash":"^4.14.37","@types/node":"^6.0.45","lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.32","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.6.1","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.0.8"},"engines":{"node":">=6.0.0"},"gitHead":"8198890233c6913083c1c12eda6fbed366dba2b4","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.0.3","_shasum":"ff257a4382a43170f684afafc49951fa6527a488","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"ff257a4382a43170f684afafc49951fa6527a488","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.0.3.tgz","integrity":"sha512-ktIYh/jxMaCFfNfPrNCHuhINOZUFxl6oi1wxOuCgnxujuysnag8OrgAXRN36QWfmGp18X2T+SCKN6i+RiKq8qg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG4ldL+oMVwpH/JLKLTA2POMuKa4G/tfO0g7N13RR85IAiEAgjlobOyZtX8BJl0Lq8bGMIW30YOApUGPBC5I9Okq/KU="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.0.3.tgz_1480765473333_0.3858823785558343"}},"1.1.0":{"name":"typemoq","version":"1.1.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"@types/lodash":"^4.14.37","@types/node":"^6.0.45","lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.32","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.6.1","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"b3b6db243c374b2bc0636ac6ea594c13285e47dc","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.1.0","_shasum":"144e16e783631723987c795c2477ca9e0d7ed3b6","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"144e16e783631723987c795c2477ca9e0d7ed3b6","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.1.0.tgz","integrity":"sha512-fnqW1V+Wf0+wJIgJKlbxNAoZSvbxZGwcYkoSTMweIb9GX0hyuD4MArovVaQ3bAxiCzwzrnidjpbtbmr7+BYekw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf9dCdr3mcTHcst0qXM3BtDrVPQegC4rRUScgp0ElCxgIgaQyvvLSWRuuEYZ/Q/ecXpXdOk2ovuXjmfd+fIS/m18g="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/typemoq-1.1.0.tgz_1483448160181_0.22766375937499106"}},"1.2.0":{"name":"typemoq","version":"1.2.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"@types/lodash":"^4.14.37","lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.6.1","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"2e7bb90cb1a78ccda65bbe7e0ccc36507855340e","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.2.0","_shasum":"c66425096cbf5dba6adedf7069f750120619c060","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"c66425096cbf5dba6adedf7069f750120619c060","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.2.0.tgz","integrity":"sha512-xfMvcEXqoh6m738cFIAJnLXFOXqeQAWWtrcjnlcjUiMjFZkW7Gii+M4gncoLkOqIpzf4LoU3K8c1WCNl2fhyEA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC5VQ/mDdb8yJndCHewFW57nfqRE/zTfxU8i1H4ohV8cAiAGOOJ8cuxwa6fGTHg+diha/W+MnxTp+vStwYsS2TlqlQ=="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.2.0.tgz_1486472046948_0.9012611522339284"}},"1.2.1":{"name":"typemoq","version":"1.2.1","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/lodash":"^4.14.37","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.6.1","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"238ae7dd2c2022a43217fb373c42f6c59eafe0df","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.2.1","_shasum":"ca52d127114e67a03c06690a3543bdc8c685c6c3","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"ca52d127114e67a03c06690a3543bdc8c685c6c3","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.2.1.tgz","integrity":"sha512-Pi1EhvYYIUrclxQfV6pL9iyJgKkBx9LYwwKKHVsF4RjJA4v+u2kELr7ymm+Mb+ckEswrvq2IT0G0ILn7GW/CEA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAgy0FPNzjE6ECYg/N1O/PkAdutDA16BpBMAuDNKVz6sAiEAxx4AzlpKPYpS5Iaa99bm0BHuRlROVZM0mHq8h2v4kMY="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.2.1.tgz_1488293154944_0.12556250533089042"}},"1.3.0":{"name":"typemoq","version":"1.3.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/lodash":"^4.14.37","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.7.2","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"3e55443b769a36b9f23b79b63183d96d325f7155","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.3.0","_shasum":"eb9beab8f357b3b4e31407f02761d129d2895084","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"eb9beab8f357b3b4e31407f02761d129d2895084","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.3.0.tgz","integrity":"sha512-Tq0WS2OQqsJB71qzNkk2G+qqUo1zpJrLCmVsbzgABMe2AiQ1WwyDwCP0EcivZ1ww6te96UJ+4CtGoAxnRL1qjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHquW2+o64vUIpVoasG62yu8xb8jcDtOtNSEXRODlk/eAiEA8uY9aN/gO8WL7alyQXdyCanRfkphhU7eSENLLpsOzwI="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.3.0.tgz_1489047554132_0.14594079600647092"}},"1.3.1":{"name":"typemoq","version":"1.3.1","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/lodash":"^4.14.37","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.7.2","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"1a370145f8850b2480efac5b74cb7c689f49e2ad","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.3.1","_shasum":"90734d8559eab7ea8ff106c0b9ce5fdd8dcdb1b6","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"90734d8559eab7ea8ff106c0b9ce5fdd8dcdb1b6","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.3.1.tgz","integrity":"sha512-QXBay46QhS6N62edJgaITBcatAzmNClbNki6j89Wyo9Q+7yMVWQPddR9OWqDy4+WPedtLiNYwONw/vEgmSzBkQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIALBeXqg0DxIKqOd2+xf3SILLKHN3HSZ1jy8O5t6y0AVAiEAxI/tcbO/sPMB7IexZNpQqEYtDlI7O4NGV7IqpRRLKp4="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.3.1.tgz_1489054209027_0.16687435377389193"}},"1.4.0":{"name":"typemoq","version":"1.4.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/lodash":"^4.14.37","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.7.2","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"605a77d726a192dfe958f61a7b18508f86dd4f3f","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.4.0","_shasum":"b06c7c7426af8ac997930a4bd1dd4cc2046521da","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"b06c7c7426af8ac997930a4bd1dd4cc2046521da","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.4.0.tgz","integrity":"sha512-ANWxl89y5uWDqBhKY6p2oGZi7sPpk9XXwdCLMXO/y0S990SHCG9a/9aZAW4ZCjFsMeYZhD7uS6isF0FNBkZOaA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICJg5Q2UxdIrp5TpZHzgHgaCviAhy2Dlv2cDb/sdl94cAiBx1UOSUPcwIRxxgLqsk/JumKOzsPBi5Lve68wjnrurjA=="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.4.0.tgz_1489946766783_0.7710347776301205"}},"1.4.1":{"name":"typemoq","version":"1.4.1","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/lodash":"^4.14.37","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.7.2","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"fd0545eb7ff7fea61eca0f883a2d3018fd82a0d1","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.4.1","_shasum":"e63ca4899e6f60362f1865a5a2408b4363141c88","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"e63ca4899e6f60362f1865a5a2408b4363141c88","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.4.1.tgz","integrity":"sha512-dS1aBXlGhOQhrmfW60VlO7W+mY20nA9jm+TkYUEWm/r7LBbylKxJg+JnQNwyP/+vOL44AnUDV0ipQSTTsK/Wew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHE9TtkhFjOOyybhRrD2Qv+U72WlMTemtvI49JJgVi1tAiA6b48yY8aib7Tmio1yBquONm8dJrOVbylDvr/O2GDjdw=="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/typemoq-1.4.1.tgz_1490273527840_0.4129185539204627"}},"1.4.2":{"name":"typemoq","version":"1.4.2","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/lodash":"^4.14.37","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.7.2","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"09441839fb2c9883cfe27453cb1c29d515f10db2","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.4.2","_shasum":"9244917042b8b51377b8c013ddf89274a6836784","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"9244917042b8b51377b8c013ddf89274a6836784","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.4.2.tgz","integrity":"sha512-SC6UfT0e2T+MMh+2qMBYg3W8afl4EJq+SjPi7KR2KeCEZ6NOp1o887Tqr+6q9wUX07LX9owSis2vV2yCgFtlyA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMQ/IVMirO6WUlxI8KOjvCaGw11aDwishfNVzQE1YyGwIgA9NjJo1gdhVicd3WPFrHSaThXniIAtUja0a1jdFdf0o="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/typemoq-1.4.2.tgz_1492685018957_0.6499748884234577"}},"1.5.0":{"name":"typemoq","version":"1.5.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/lodash":"^4.14.37","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.7.2","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"bebaaa20836fe140d9a81f2401e56a1a4d7ecb78","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.5.0","_shasum":"bb81ef8bf41e9d8dd65dd7e5ce4eab8d6085bf46","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"bb81ef8bf41e9d8dd65dd7e5ce4eab8d6085bf46","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.5.0.tgz","integrity":"sha512-ECr7i6lO/eGmtvDN4tYw4OtB3LiwSWl3waRBIav739b0fvaAH850jjmcWq6MLae2grxKh0kYivAY7BiHeUrAtA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGjFSG8ryC4ciyKYsijrvP/hvOPcShj3zBeXya1aNYGiAiB7hFMNiJsc6QUqTSk2E3t9Vc95qkJnuGg+gGhQswdcYw=="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.5.0.tgz_1493104380702_0.286096099531278"}},"1.6.0":{"name":"typemoq","version":"1.6.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/lodash":"^4.14.37","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.7.2","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^0.2.10","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"6ded169435519943f888dd6ad2dfe93a9c2a8c73","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.6.0","_shasum":"22d40f3926cf479b5b3d24a5a4d2fbf752dff9a2","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"22d40f3926cf479b5b3d24a5a4d2fbf752dff9a2","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.6.0.tgz","integrity":"sha512-RR4466JJKw8qj4GWHpTddNCxBe6Gn1MVPSD2v+I1N6Xs+eJ4hfwYvM3LEd37CT91cUbbwqFo/vskPcg9r1o5Pg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDg2NMK5uubLeyntpDX2fH9VRCO/fB3xfhFA3hpWTlZDAIgNYzmV4yG+fp9y5vb9iudh1ngZFjitMn2TnqYIFte6io="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typemoq-1.6.0.tgz_1494503930295_0.6253717707004398"}},"1.7.0":{"name":"typemoq","version":"1.7.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","library","sandbox","typescript","javascript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"circular-json":"^0.3.1","lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"^3.4.34","@types/circular-json":"^0.1.30","@types/lodash":"^4.14.37","@types/mocha":"^2.2.32","@types/node":"^6.0.45","chai":"^3.5.0","del":"^0.1.3","dts-bundle":"^0.7.2","gulp":"^3.6.0","gulp-concat":"^2.4.3","gulp-conventional-changelog":"^1.1.0","gulp-load-plugins":"^0.5.0","gulp-rename":"^1.2.0","gulp-replace":"^0.5.4","gulp-rollup":"^2.5.1","gulp-size":"^0.3.0","gulp-sourcemaps":"^2.2.0","gulp-spawn-mocha":"^3.1.0","gulp-typescript":"^3.1.1","gulp-uglify":"^0.2.1","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^0.1.7","karma-firefox-launcher":"^0.1.4","karma-ie-launcher":"^1.0.0","karma-mocha":"^0.1.9","karma-sauce-launcher":"^1.1.0","merge2":"^1.0.2","mocha":"^3.1.2","run-sequence":"^1.0.2","typescript":"^2.1.4"},"engines":{"node":">=6.0.0"},"gitHead":"deb932b5fe07f94e9c17692d5c6ae323d3e2f6ca","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.7.0","_shasum":"4b4ad735792295ce6e9b6ba32c516a038af3999b","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"shasum":"4b4ad735792295ce6e9b6ba32c516a038af3999b","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.7.0.tgz","integrity":"sha512-ObIhvCAa3diZQYod4YmXMvkbJCnviYkky6Rv67NZpM8wUpWP+AKy+wFzH7658kGI1IeZjaTHx+gVwH8CRcYyfw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG4uNljDN8rM8nMbZ6Rftq8LfauXqX+cX1JOyKV2/KlnAiEAtnaZz7+DV0XOm/5arWOVhtTatAyTouGosMshyi+e9d4="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typemoq-1.7.0.tgz_1496083037913_0.957112121861428"}},"1.8.0":{"name":"typemoq","version":"1.8.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","TDD","testing","library","sandbox","typescript"],"scripts":{"gulp":"gulp","postinstall":"postinstall-build dist \"npm run gulp build\""},"dependencies":{"circular-json":"^0.3.1","lodash":"^4.16.4","postinstall-build":"^2.1.3"},"devDependencies":{"@types/chai":"3.4.34","@types/circular-json":"^0.1.30","@types/lodash":"^4.14.37","@types/mocha":"2.2.32","@types/node":"^6.0.45","chai":"3.5.0","del":"0.1.3","dts-bundle":"0.7.2","gulp":"^3.9.1","gulp-concat":"2.4.3","gulp-conventional-changelog":"1.1.0","gulp-load-plugins":"0.5.0","gulp-rename":"1.2.0","gulp-replace":"0.5.4","gulp-rollup":"^2.13.0","gulp-size":"0.3.0","gulp-sourcemaps":"^2.6.0","gulp-spawn-mocha":"3.1.0","gulp-typescript":"^3.1.7","gulp-uglify":"0.2.1","karma":"1.3.0","karma-chai":"0.1.0","karma-chrome-launcher":"0.1.7","karma-firefox-launcher":"0.1.4","karma-ie-launcher":"1.0.0","karma-mocha":"0.1.9","karma-sauce-launcher":"1.1.0","merge2":"1.0.2","mocha":"3.1.2","run-sequence":"1.0.2","typescript":"^2.3.4"},"engines":{"node":">=6.0.0"},"gitHead":"9cc7a3017516a0356c89766e41fd8698c08bf85c","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@1.8.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"integrity":"sha512-oLB1ozDHDy8udKQnlLmo3SA8sU+ZV+xGKJ6gIcHmfYuCdJ4g0j0YfGyZquFUrv+R6vGbb3r61hUIM3mJWtBNEw==","shasum":"fa9bc4f6bbfa97a955d4a7d577dcb578301ef5cf","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-1.8.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEkncWaVY4cVXqx5mk8i2EmEUXVzj/Atsx9MBvRTm91cAiEAjFEkWLmwFUZmL8KO2XknxHfBrP4qjqAkpQY5fJiaOIQ="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typemoq-1.8.0.tgz_1500621612082_0.9132740055210888"}},"2.0.0":{"name":"typemoq","version":"2.0.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","TDD","testing","library","sandbox","typescript"],"scripts":{"build":"gulp build","postinstall":"postinstall-build dist"},"dependencies":{"circular-json":"^0.3.1","lodash":"^4.16.4","postinstall-build":"^5.0.1"},"devDependencies":{"@types/chai":"3.4.34","@types/circular-json":"^0.1.30","@types/lodash":"^4.14.37","@types/mocha":"2.2.32","@types/node":"^6.0.45","chai":"3.5.0","del":"0.1.3","dts-bundle":"0.7.2","gulp":"^3.9.1","gulp-concat":"2.4.3","gulp-conventional-changelog":"1.1.0","gulp-load-plugins":"0.5.0","gulp-rename":"1.2.0","gulp-replace":"0.5.4","gulp-rollup":"^2.14.0","gulp-size":"0.3.0","gulp-sourcemaps":"^2.6.0","gulp-spawn-mocha":"3.1.0","gulp-typescript":"^3.1.7","gulp-uglify":"0.2.1","karma":"1.3.0","karma-chai":"0.1.0","karma-chrome-launcher":"0.1.7","karma-firefox-launcher":"0.1.4","karma-ie-launcher":"1.0.0","karma-mocha":"0.1.9","karma-sauce-launcher":"1.1.0","merge2":"1.0.2","mocha":"3.1.2","run-sequence":"1.0.2","typescript":"^2.3.4"},"engines":{"node":">=6.0.0"},"gitHead":"87ae6501f850cb6380c3400454a9118c7fc5376f","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@2.0.0","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"integrity":"sha512-RNeb1BXA2VTLmML+4yWAzKMJAyqT6yWGQdRhvIvSheHWH1ehdWddOTz/4iRagp3JJxAGanKESU5uxzzz4j7nIA==","shasum":"600eeeb36061f5f851d9f322df4a3dbb067bba20","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-2.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCulQM0DKkpaMgZQxlDWKlZVbmSqDwlfTtELS9SU6gMxwIhAPQQaAQDhjiEBUa6Yb2rMJgHGPVKQMO2GWn9Lvx2rpGj"}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typemoq-2.0.0.tgz_1502179709529_0.16791030229069293"}},"2.0.1":{"name":"typemoq","version":"2.0.1","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","TDD","testing","library","sandbox","typescript"],"scripts":{"build":"gulp build","postinstall":"postinstall-build dist"},"dependencies":{"circular-json":"^0.3.1","lodash":"^4.16.4","postinstall-build":"^5.0.1"},"devDependencies":{"@types/chai":"3.4.34","@types/circular-json":"^0.1.30","@types/lodash":"^4.14.37","@types/mocha":"2.2.32","@types/node":"^6.0.45","chai":"3.5.0","del":"0.1.3","dts-bundle":"0.7.2","gulp":"^3.9.1","gulp-concat":"2.4.3","gulp-conventional-changelog":"1.1.0","gulp-load-plugins":"0.5.0","gulp-rename":"1.2.0","gulp-replace":"0.5.4","gulp-rollup":"^2.14.0","gulp-size":"0.3.0","gulp-sourcemaps":"^2.6.0","gulp-spawn-mocha":"3.1.0","gulp-typescript":"^3.1.7","gulp-uglify":"0.2.1","karma":"1.3.0","karma-chai":"0.1.0","karma-chrome-launcher":"0.1.7","karma-firefox-launcher":"0.1.4","karma-ie-launcher":"1.0.0","karma-mocha":"0.1.9","karma-sauce-launcher":"1.1.0","merge2":"1.0.2","mocha":"3.1.2","run-sequence":"1.0.2","typescript":"^2.3.4"},"engines":{"node":">=6.0.0"},"gitHead":"5b46b011c38f18c0d5cceaf68f3dd57ed4b57fad","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@2.0.1","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"integrity":"sha512-6bkF0pOWta7ehwI/FIxs0aSpClgmrG1D4IV4KxjwtbKygCYabcNVEE7Z/jai3XpcjUsRzQWoPf5p3A9iZjG8eA==","shasum":"fa305f4643f6735996a23d990dcdb49acfbe62c8","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-2.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsjJp+2n46eennKPqTlbDuK+Lxn1xpTy40dzNUXZuZ+wIhAMNOosIHDfTVZ43iyCw15AzRkEy43ZjDSUpCARWmXg0k"}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typemoq-2.0.1.tgz_1502388125838_0.5085985288023949"}},"2.1.0":{"name":"typemoq","version":"2.1.0","description":"A simple mocking library for TypeScript","author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"license":"MIT","main":"dist/typemoq.js","typings":"dist/typemoq.d.ts","files":["dist","src","test","gulpfile.js","karma.conf.js"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"keywords":["mock","stub","fake","spy","TDD","testing","library","sandbox","typescript"],"scripts":{"build":"gulp build","postinstall":"postinstall-build dist"},"dependencies":{"circular-json":"^0.3.1","lodash":"^4.17.4","postinstall-build":"^5.0.1"},"devDependencies":{"@types/chai":"3.4.34","@types/circular-json":"^0.1.30","@types/lodash":"^4.14.79","@types/mocha":"2.2.32","@types/node":"^6.0.45","chai":"3.5.0","del":"0.1.3","dts-bundle":"0.7.2","gulp":"^3.9.1","gulp-concat":"2.4.3","gulp-conventional-changelog":"1.1.0","gulp-load-plugins":"0.5.0","gulp-rename":"1.2.0","gulp-replace":"0.5.4","gulp-rollup":"^2.14.0","gulp-size":"0.3.0","gulp-sourcemaps":"^2.6.0","gulp-spawn-mocha":"3.1.0","gulp-typescript":"^3.1.7","gulp-uglify":"0.2.1","karma":"1.3.0","karma-chai":"0.1.0","karma-chrome-launcher":"0.1.7","karma-edge-launcher":"0.4.2","karma-firefox-launcher":"0.1.4","karma-ie-launcher":"1.0.0","karma-mocha":"0.1.9","karma-sauce-launcher":"1.1.0","merge2":"1.0.2","mocha":"3.1.2","run-sequence":"1.0.2","typescript":"^2.5.2"},"engines":{"node":">=6.0.0"},"gitHead":"b7ca662e6672f72119aea24907f561b7cb587ae4","homepage":"https://github.com/florinn/typemoq#readme","_id":"typemoq@2.1.0","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"florinn","email":"florin.nitoi@gmail.com"},"dist":{"integrity":"sha512-DtRNLb7x8yCTv/KHlwes+NI+aGb4Vl1iPC63Hhtcvk1DpxSAZzKWQv0RQFY0jX2Uqj0SDBNl8Na4e6MV6TNDgw==","shasum":"4452ce360d92cf2a1a180f0c29de2803f87af1e8","tarball":"https://registry.npmjs.org/typemoq/-/typemoq-2.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE88wS+EeQZppbsl0JCdPS4SlHGPrI0VlzV6+W0lgz4EAiEAmHAdysPfm8hE6aEJpp26odds4CGAg0MjGoMLFWe4h4w="}]},"maintainers":[{"name":"florinn","email":"florin.nitoi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typemoq-2.1.0.tgz_1509430531347_0.0820746929384768"}}},"homepage":"https://github.com/florinn/typemoq#readme","keywords":["mock","stub","fake","spy","TDD","testing","library","sandbox","typescript"],"repository":{"type":"git","url":"git+ssh://git@github.com/florinn/typemoq.git"},"author":{"name":"Florin Nitoi","email":"florin.nitoi@gmail.com"},"bugs":{"url":"https://github.com/florinn/typemoq/issues"},"license":"MIT","readmeFilename":"README.md"}