Comparing version
@@ -0,1 +1,8 @@ | ||
export function camelize<T extends Record<string, any>>( | ||
source: T, | ||
depth?: boolean | number | ||
): SnakeCaseKeys<T>; | ||
export function camelize_str(source: string): string; | ||
export function clone<T>(target: T): T; | ||
@@ -72,5 +79,5 @@ export function compare(el1: unknown, el2: unknown): boolean; | ||
source: T, | ||
convert?: boolean | number | ||
depth?: boolean | number | ||
): SnakeCaseKeys<T>; | ||
export function snake_case_str(source: string): string; |
@@ -11,2 +11,25 @@ function _typeof(o) { | ||
function camelize(source) { | ||
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; | ||
var target = {}; | ||
if (is_object_literal(source)) { | ||
var d = typeof depth === "number" && depth > 0 ? depth - 1 : depth; | ||
for (var _i = 0, _Object$keys = Object.keys(source); _i < _Object$keys.length; _i++) { | ||
var key = _Object$keys[_i]; | ||
var value = source[key]; | ||
if (depth) { | ||
key = camelize_str(key); | ||
} | ||
target[key] = camelize(value, d); | ||
} | ||
} else { | ||
target = source; | ||
} | ||
return target; | ||
} | ||
function camelize_str(str) { | ||
return str.replace(/[_.-](\w|$)/g, function (_, x) { | ||
return x.toUpperCase(); | ||
}); | ||
} | ||
function compare(el1, el2) { | ||
@@ -38,4 +61,4 @@ if (is_object_literal(el1)) { | ||
} | ||
for (var _i = 0; _i < el1.length; _i++) { | ||
if (!compare(el1[_i], el2[_i])) { | ||
for (var _i2 = 0; _i2 < el1.length; _i2++) { | ||
if (!compare(el1[_i2], el2[_i2])) { | ||
return false; | ||
@@ -87,4 +110,4 @@ } | ||
} | ||
for (var _i2 = 0, _Object$keys = Object.keys(source); _i2 < _Object$keys.length; _i2++) { | ||
var name = _Object$keys[_i2]; | ||
for (var _i3 = 0, _Object$keys2 = Object.keys(source); _i3 < _Object$keys2.length; _i3++) { | ||
var name = _Object$keys2[_i3]; | ||
if (/__proto__|prototype/.test(name)) { | ||
@@ -112,13 +135,13 @@ // See | ||
function snake_case(source) { | ||
var convert = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; | ||
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; | ||
var target = {}; | ||
if (is_object_literal(source)) { | ||
var u = typeof convert === "number" && convert > 0 ? convert - 1 : convert; | ||
for (var _i3 = 0, _Object$keys2 = Object.keys(source); _i3 < _Object$keys2.length; _i3++) { | ||
var name = _Object$keys2[_i3]; | ||
var src = source[name]; | ||
if (convert) { | ||
name = snake_case_str(name); | ||
var d = typeof depth === "number" && depth > 0 ? depth - 1 : depth; | ||
for (var _i4 = 0, _Object$keys3 = Object.keys(source); _i4 < _Object$keys3.length; _i4++) { | ||
var key = _Object$keys3[_i4]; | ||
var value = source[key]; | ||
if (depth) { | ||
key = snake_case_str(key); | ||
} | ||
target[name] = snake_case(src, u); | ||
target[key] = snake_case(value, d); | ||
} | ||
@@ -134,2 +157,2 @@ } else { | ||
export { clone, compare, is_object, is_object_literal, merge, mutate, snake_case, snake_case_str }; | ||
export { camelize, camelize_str, clone, compare, is_object, is_object_literal, merge, mutate, snake_case, snake_case_str }; |
@@ -17,2 +17,25 @@ (function (global, factory) { | ||
function camelize(source) { | ||
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; | ||
var target = {}; | ||
if (is_object_literal(source)) { | ||
var d = typeof depth === "number" && depth > 0 ? depth - 1 : depth; | ||
for (var _i = 0, _Object$keys = Object.keys(source); _i < _Object$keys.length; _i++) { | ||
var key = _Object$keys[_i]; | ||
var value = source[key]; | ||
if (depth) { | ||
key = camelize_str(key); | ||
} | ||
target[key] = camelize(value, d); | ||
} | ||
} else { | ||
target = source; | ||
} | ||
return target; | ||
} | ||
function camelize_str(str) { | ||
return str.replace(/[_.-](\w|$)/g, function (_, x) { | ||
return x.toUpperCase(); | ||
}); | ||
} | ||
function compare(el1, el2) { | ||
@@ -44,4 +67,4 @@ if (is_object_literal(el1)) { | ||
} | ||
for (var _i = 0; _i < el1.length; _i++) { | ||
if (!compare(el1[_i], el2[_i])) { | ||
for (var _i2 = 0; _i2 < el1.length; _i2++) { | ||
if (!compare(el1[_i2], el2[_i2])) { | ||
return false; | ||
@@ -93,4 +116,4 @@ } | ||
} | ||
for (var _i2 = 0, _Object$keys = Object.keys(source); _i2 < _Object$keys.length; _i2++) { | ||
var name = _Object$keys[_i2]; | ||
for (var _i3 = 0, _Object$keys2 = Object.keys(source); _i3 < _Object$keys2.length; _i3++) { | ||
var name = _Object$keys2[_i3]; | ||
if (/__proto__|prototype/.test(name)) { | ||
@@ -118,13 +141,13 @@ // See | ||
function snake_case(source) { | ||
var convert = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; | ||
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; | ||
var target = {}; | ||
if (is_object_literal(source)) { | ||
var u = typeof convert === "number" && convert > 0 ? convert - 1 : convert; | ||
for (var _i3 = 0, _Object$keys2 = Object.keys(source); _i3 < _Object$keys2.length; _i3++) { | ||
var name = _Object$keys2[_i3]; | ||
var src = source[name]; | ||
if (convert) { | ||
name = snake_case_str(name); | ||
var d = typeof depth === "number" && depth > 0 ? depth - 1 : depth; | ||
for (var _i4 = 0, _Object$keys3 = Object.keys(source); _i4 < _Object$keys3.length; _i4++) { | ||
var key = _Object$keys3[_i4]; | ||
var value = source[key]; | ||
if (depth) { | ||
key = snake_case_str(key); | ||
} | ||
target[name] = snake_case(src, u); | ||
target[key] = snake_case(value, d); | ||
} | ||
@@ -140,2 +163,4 @@ } else { | ||
exports.camelize = camelize; | ||
exports.camelize_str = camelize_str; | ||
exports.clone = clone; | ||
@@ -142,0 +167,0 @@ exports.compare = compare; |
@@ -0,1 +1,8 @@ | ||
export function camelize<T extends Record<string, any>>( | ||
source: T, | ||
depth?: boolean | number | ||
): SnakeCaseKeys<T>; | ||
export function camelize_str(source: string): string; | ||
export function clone<T>(target: T): T; | ||
@@ -72,5 +79,5 @@ export function compare(el1: unknown, el2: unknown): boolean; | ||
source: T, | ||
convert?: boolean | number | ||
depth?: boolean | number | ||
): SnakeCaseKeys<T>; | ||
export function snake_case_str(source: string): string; |
@@ -0,1 +1,22 @@ | ||
export function camelize(source, depth = true) { | ||
let target = {}; | ||
if (is_object_literal(source)) { | ||
const d = typeof depth === "number" && depth > 0 ? depth - 1 : depth; | ||
for (let key of Object.keys(source)) { | ||
const value = source[key]; | ||
if (depth) { | ||
key = camelize_str(key); | ||
} | ||
target[key] = camelize(value, d); | ||
} | ||
} else { | ||
target = source; | ||
} | ||
return target; | ||
} | ||
export function camelize_str(str) { | ||
return str.replace(/[_.-](\w|$)/g, (_, x) => x.toUpperCase()); | ||
} | ||
export function compare(el1, el2) { | ||
@@ -102,13 +123,12 @@ if (is_object_literal(el1)) { | ||
export function snake_case(source, convert = true) { | ||
export function snake_case(source, depth = true) { | ||
let target = {}; | ||
if (is_object_literal(source)) { | ||
const u = | ||
typeof convert === "number" && convert > 0 ? convert - 1 : convert; | ||
for (let name of Object.keys(source)) { | ||
let src = source[name]; | ||
if (convert) { | ||
name = snake_case_str(name); | ||
const d = typeof depth === "number" && depth > 0 ? depth - 1 : depth; | ||
for (let key of Object.keys(source)) { | ||
let value = source[key]; | ||
if (depth) { | ||
key = snake_case_str(key); | ||
} | ||
target[name] = snake_case(src, u); | ||
target[key] = snake_case(value, d); | ||
} | ||
@@ -115,0 +135,0 @@ } else { |
{ | ||
"name": "mixme", | ||
"description": "A library for recursively merging JavaScript objects", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"author": "David Worms <david@adaltas.com> (https://www.adaltas.com)", | ||
@@ -6,0 +6,0 @@ "contributors": [ |
@@ -17,2 +17,24 @@ | ||
### Function `camelize(object)` | ||
Clone a object and convert its properties into snake case. | ||
```js | ||
import { snake_case } from "mixme" | ||
snake_case({aA: "1", bB: cC: "2"}) | ||
// Return {a_a: "1", b_b: c_c: "2"} | ||
``` | ||
### Function `camelize_str(str)` | ||
Convert a camel case string to snake case, used internally by `snake_case`. | ||
```js | ||
import { snake_case_str } from "mixme" | ||
snake_case("myValue") | ||
// Return "my_value" | ||
``` | ||
### Function `compare(item_1, item_2)` | ||
@@ -19,0 +41,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
33197
12.39%753
15.49%186
13.41%