Skip to content

Commit

Permalink
Merge pull request #38 from mobxjs/feature/create-factory-typings
Browse files Browse the repository at this point in the history
feat: advanced createFactory definition
  • Loading branch information
mattiamanzati committed Feb 15, 2017
2 parents 5e2d5d0 + 3d50c2d commit d9e7b58
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"concurrently": "^3.1.0",
"coveralls": "^2.11.4",
"documentation": "^4.0.0-beta9",
"mobx": "^3.0.0",
"mobx": "^3.1.0",
"nyc": "^10.0.0",
"tape": "^4.6.0",
"tslint": "^3.15.1",
Expand All @@ -46,7 +46,7 @@
"remotedev": "^0.2.2"
},
"peerDependencies": {
"mobx": "^3.0.0-rc.1"
"mobx": "^3.1.0"
},
"keywords": [
"mobx",
Expand Down
8 changes: 5 additions & 3 deletions src/types/object.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {action, isAction, extendShallowObservable, observable, IObjectChange, IObjectWillChange} from "mobx"
import {action, isAction, extendShallowObservable, observable, IObjectChange, IObjectWillChange, IAction} from "mobx"
import {nothing, invariant, isSerializable, fail, registerEventHandler, IDisposer, identity, extend, isPrimitive, hasOwnProperty, addReadOnlyProp, isPlainObject} from "../utils"
import {Node, maybeNode, getNode, valueToSnapshot, getRelativePath, hasNode} from "../core/node"
import {IFactory, isFactory, getFactory, IModel} from "../core/factories"
Expand Down Expand Up @@ -172,8 +172,10 @@ export class ObjectType extends ComplexType {
}
}

export function createModelFactory<S extends Object, T extends S>(baseModel: T): IFactory<S, T>
export function createModelFactory<S extends Object, T extends S>(name: string, baseModel: T): IFactory<S, T>
export type IBaseModelDefinition<S extends Object, T> = {[K in keyof T]: IFactory<any, T[K]> | T[K] & IAction | T[K]}

export function createModelFactory<S extends Object, T extends S>(baseModel: IBaseModelDefinition<S, T>): IFactory<S, T>
export function createModelFactory<S extends Object, T extends S>(name: string, baseModel: IBaseModelDefinition<S, T>): IFactory<S, T>
export function createModelFactory(arg1, arg2?) {
let name = typeof arg1 === "string" ? arg1 : "unnamed-object-factory"
let baseModel: Object = typeof arg1 === "string" ? arg2 : arg1
Expand Down

0 comments on commit d9e7b58

Please sign in to comment.