npm-convert.js
function convertPropertyNamesAndValues (context, pkg, map, root, waiting) {
	if(!map) {
		return map;
	}
	var clone = {}, val, name;
	for(var property in map ) {
		val = map[property];
		name = convertName(context, pkg, map, root, property, waiting); 
		val = typeof val === "object"
			? convertPropertyNamesAndValues(context, pkg, val, root, waiting)
			: convertName(context, pkg, map, root, val, waiting);
		if(typeof name !== 'undefined' && typeof val !== 'undefined') {
			clone[name] = val;
		}
	}
	return clone;
}
function convertPropertyNamesAndValues (context, pkg, map, root, waiting) {
	if(!map) {
		return map;
	}
	var clone = {}, val, name;
	for(var property in map ) {
		val = map[property];
		name = convertName(context, pkg, map, root, property, waiting); 
		val = typeof val === "object"
			? convertPropertyNamesAndValues(context, pkg, val, root, waiting)
			: convertName(context, pkg, map, root, val, waiting);
		if(typeof name !== 'undefined' && typeof val !== 'undefined') {
			clone[name] = val;
		}
	}
	return clone;
}
function convertPropertyNamesAndValues ( context , pkg , map , root , waiting ) { if ( ! map ) { return map ; } var clone = { } , val , name ; for ( var property in map ) { val = map [ property ] ; name = convertName ( context , pkg , map , root , property , waiting ) ; val = typeof val === "object" ? convertPropertyNamesAndValues ( context , pkg , val , root , waiting ) : convertName ( context , pkg , map , root , val , waiting ) ; if ( typeof name !== 'undefined' && typeof val !== 'undefined' ) { clone [ name ] = val ; } } return clone ; }
converts both property name and value
converts both property name and value