diff --git a/package.json b/package.json index d36d4f8..a783acb 100755 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.4.2", "description": "Immutability helpers with fast reads and acceptable writes", "main": "lib/timm.js", + "types": "lib/timm.d.ts", "dependencies": {}, "devDependencies": { "ava": "0.16.0", @@ -48,7 +49,7 @@ "testCovProd": "cross-env NODE_ENV=production nyc ava && mv .nyc_output/* .nyc_tmp/", "testCovMin": "cross-env TEST_MINIFIED_LIB=1 nyc ava && mv .nyc_output/* .nyc_tmp/", "testCovReport": "cp .nyc_tmp/* .nyc_output/ && nyc report --reporter=html --reporter=lcov", - "compile": "rm -rf ./lib && mkdir lib && babel -o lib/timm.js src/timm.js && cp src/api.js.flow lib/timm.js.flow", + "compile": "rm -rf ./lib && mkdir lib && babel -o lib/timm.js src/timm.js && cp src/api.js.flow lib/timm.js.flow && cp src/timm.d.ts lib/timm.d.ts", "docs": "extract-docs --template docs/README_TEMPLATE.md --output README.md", "uglify": "cross-env NODE_ENV=production envify lib/timm.js | uglifyjs - -o lib/timm.min.js --mangle --compress --comments \"/^!/\"", "build": "yarn lint && yarn flow && yarn compile && yarn uglify && yarn testCovFull && yarn docs && yarn xxl", diff --git a/src/timm.d.ts b/src/timm.d.ts new file mode 100644 index 0000000..a388b4e --- /dev/null +++ b/src/timm.d.ts @@ -0,0 +1,72 @@ +declare module 'timm' { + type ArrayOrObject = Array | Object; + type Key = number | string; + + export function clone (obj: T): T + export function addLast (array: Array, val: Array | T): Array + export function addFirst (array: Array, val: Array | T): Array + export function removeLast (array: Array): Array + export function removeFirst (array: Array): Array + export function insert( + array: Array, + idx: number, + val: Array | T + ): Array + export function removeAt (array: Array, idx: number): Array + export function replaceAt( + array: Array, + idx: number, + newItem: T + ): Array + export function getIn(obj: ?ArrayOrObject, path: Array): any + export function set (obj: ?T, key: Key, val: any): T + export function setIn (obj: T, path: Array, val: any): T + export function update ( + obj: T, + key: Key, + fnUpdate: (prevValue: any) => any + ): T + export function updateIn ( + obj: T, + path: Array, + fnUpdate: (prevValue: any) => any + ): T + export function merge( + a: Object, + b?: Object, + c?: Object, + d?: Object, + e?: Object, + f?: Object, + ...rest: Array + ): Object + export function mergeDeep( + a: Object, + b?: Object, + c?: Object, + d?: Object, + e?: Object, + f?: Object, + ...rest: Array + ): Object + export function mergeIn ( + a: T, + path: Array, + b?: Object, + c?: Object, + d?: Object, + e?: Object, + f?: Object, + ...rest: Array + ): T + export function omit(obj: Object, attrs: Array | string): Object + export function addDefaults( + a: Object, + b?: Object, + c?: Object, + d?: Object, + e?: Object, + f?: Object, + ...rest: Array + ): Object +}