Skip to content

Commit f1781af

Browse files
committed
fix: propagate options in recursions
1 parent 0336090 commit f1781af

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

src/transformKeysToSnake.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ const snakeCase = require('./snakeCase')
77
* Transform object keys to snake case
88
* e.g. { fooBar: 1 } => { foo_bar: 1 }
99
* @param {Object} obj
10+
* @param {Object} [opts]
11+
* @param {boolean} [opts.recursive]
1012
* @returns {Object}
1113
*/
12-
const transformKeysToSnake = (obj, { recursive } = {}) => {
14+
const transformKeysToSnake = (obj, opts) => {
1315
if (Array.isArray(obj)) {
14-
return obj.map(item => transformKeysToSnake(item))
16+
return obj.map(item => transformKeysToSnake(item, opts))
1517
}
1618

1719
if (!isPlainObject(obj)) {
@@ -21,7 +23,7 @@ const transformKeysToSnake = (obj, { recursive } = {}) => {
2123
return Object.fromEntries(
2224
Object.entries(obj).map(([k, v]) => [
2325
snakeCase(k),
24-
recursive ? transformKeysToSnake(v) : v
26+
opts?.recursive ? transformKeysToSnake(v, opts) : v
2527
])
2628
)
2729
}

test/transformKeystoSnake.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const assert = require('assert')
66
const { transformKeysToSnake } = require('../index')
77
const { itEach } = require('mocha-it-each')
88

9-
describe.only('transformKeysToSnake', () => {
9+
describe('transformKeysToSnake', () => {
1010
describe('non recursive (default)', () => {
1111
itEach('should return input when it is not an object', [new Date(), null, false], (input) => {
1212
assert.equal(transformKeysToSnake(input), input)
@@ -61,6 +61,9 @@ describe.only('transformKeysToSnake', () => {
6161
nestedProp: {
6262
first_name: 'john',
6363
lastName: 'doe',
64+
level2: {
65+
fooBar: 'x'
66+
},
6467
tags: ['keepCamel']
6568
},
6669
someObjs: [
@@ -73,6 +76,9 @@ describe.only('transformKeysToSnake', () => {
7376
nested_prop: {
7477
first_name: 'john',
7578
last_name: 'doe',
79+
level2: {
80+
foo_bar: 'x'
81+
},
7682
tags: ['keepCamel']
7783
},
7884
some_objs: [

0 commit comments

Comments
 (0)