Added Dot-object typings

This commit is contained in:
nkovacic
2016-06-29 12:37:17 +02:00
parent 43449c604f
commit 858c0021ff
2 changed files with 226 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
/// <reference path='dot-object.d.ts' />
var obj = {
'first_name': 'John',
'last_name': 'Doe'
};
dot.move('first_name', 'contact.firstname', obj);
dot.move('last_name', 'contact.lastname', obj);
var src = {
name: 'John',
stuff: {
phone: {
brand: 'iphone',
version: 6
}
}
};
var tgt = {name: 'Brandon'};
dot.copy('stuff.phone', 'wanna.haves.phone', src, tgt);
dot.transfer('stuff.phone', 'wanna.haves.phone', src, tgt);
var row = {
'id': 2,
'contact.name.first': 'John',
'contact.name.last': 'Doe',
'contact.email': 'example@gmail.com',
'contact.info.about.me': 'classified',
'devices[0]': 'mobile',
'devices[1]': 'laptop',
'some.other.things.0': 'this',
'some.other.things.1': 'that'
};
dot.object(row);
dot.str('this.is.my.string', 'value', tgt);
var newObj = {
some: {
nested: {
value: 'Hi there!'
}
}
};
var val = dot.pick('some.nested.value', newObj);
console.log(val);
// Pick & Remove the value
val = dot.pick('some.nested.value', newObj, true);
// shorthand
val = dot.remove('some.nested.value', newObj);
// or use the alias `del`
val = dot.del('some.nested.value', newObj);
var dot = new dot('=>');

162
dot-object/dot-object.d.ts vendored Normal file
View File

@@ -0,0 +1,162 @@
// Type definitions for Dot-Object v1.4.1
// Project: https://github.com/rhalff/dot-object
// Definitions by: Niko Kovačič <https://github.com/nkovacic>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
declare namespace DotObject {
interface Dot {
new(separator: string): Dot;
/**
*
* Copy a property from one object to another object.
*
* If the source path does not exist (undefined)
* the property on the other object will not be set.
*
* @param {String} source
* @param {String} target
* @param {Object} obj1
* @param {Object} obj2
* @param {Function|Array} mods
* @param {Boolean} merge
*/
copy(source: string, target: string, obj1: any, obj2: any, mods?: Function | Array<Function>, merge?: boolean): void;
/**
*
* Convert object to dotted-key/value pair
*
* Usage:
*
* var tgt = dot.dot(obj)
*
* or
*
* var tgt = {}
* dot.dot(obj, tgt)
*
* @param {Object} obj source object
* @param {Object} tgt target object
*/
dot(obj: any, tgt: any): void
/**
*
* Remove value from an object using dot notation.
*
* @param {String} path
* @param {Object} obj
* @return {Mixed} The removed value
*/
del(path: string, obj: any): any;
/**
*
* Move a property from one place to the other.
*
* If the source path does not exist (undefined)
* the target property will not be set.
*
* @param {String} source
* @param {String} target
* @param {Object} obj
* @param {Function|Array} mods
* @param {Boolean} merge
*/
move(source: string, target: string, obj: any, mods?: Function | Array<Function>, merge?: boolean): void;
/**
*
* Converts an object with dotted-key/value pairs to it's expanded version
*
* Optionally transformed by a set of modifiers.
*
* Usage:
*
* var row = {
* 'nr': 200,
* 'doc.name': ' My Document '
* }
*
* var mods = {
* 'doc.name': [_s.trim, _s.underscored]
* }
*
* dot.object(row, mods)
*
* @param {Object} obj
* @param {Object} mods
*/
object(obj: any, mods?: Function | Array<Function>): void;
/**
*
* Pick a value from an object using dot notation.
*
* Optionally remove the value
*
* @param {String} path
* @param {Object} obj
* @param {Boolean} remove
*/
pick(path: string, obj: any, remove?: boolean): void;
/**
*
* Remove value from an object using dot notation.
*
* @param {String} path
* @param {Object} obj
* @return {Mixed} The removed value
*/
remove(path: string, obj: any): any;
/**
* @param {String} path dotted path
* @param {String} v value to be set
* @param {Object} obj object to be modified
* @param {Function|Array} mods optional modifier
*/
str(path: string, v: any, obj: Object, mods?: Function | Array<Function>): void;
/**
*
* Transfer a property from one object to another object.
*
* If the source path does not exist (undefined)
* the property on the other object will not be set.
*
* @param {String} source
* @param {String} target
* @param {Object} obj1
* @param {Object} obj2
* @param {Function|Array} mods
* @param {Boolean} merge
*/
transfer(source: string, target: string, obj1: any, obj2: any, mods?: Function | Array<Function>, merge?: boolean): void;
/**
*
* Transform an object
*
* Usage:
*
* var obj = {
* "id": 1,
* "some": {
* "thing": "else"
* }
* }
*
* var transform = {
* "id": "nr",
* "some.thing": "name"
* }
*
* var tgt = dot.transform(transform, obj)
*
* @param {Object} recipe Transform recipe
* @param {Object} obj Object to be transformed
* @param {Array} mods modifiers for the target
*/
transform(recipe: any, obj: any, mods?: Function | Array<Function>): void;
}
}
declare var dot: DotObject.Dot;
declare module 'dot-object' {
export = dot;
}