Skip to content

Commit 3d72b03

Browse files
authored
Clone schema just once (#3)
1 parent 02b7a62 commit 3d72b03

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ var defaultResolvers = {
386386
return returnObject
387387
},
388388
oneOf(compacted, paths, mergeSchemas) {
389-
var combinations = getAnyOfCombinations(cloneDeep(compacted))
389+
var combinations = getAnyOfCombinations(compacted)
390390
var result = tryMergeSchemaGroups(combinations, mergeSchemas)
391391
var unique = uniqWith(result, compare)
392392

@@ -452,8 +452,10 @@ function merger(rootSchema, options, totalSchemas) {
452452
$refResolver: default$RefResolver
453453
})
454454

455+
rootSchema = cloneDeep(rootSchema)
456+
455457
function mergeSchemas(schemas, base, parents) {
456-
schemas = cloneDeep(schemas.filter(notUndefined))
458+
schemas = schemas.filter(notUndefined)
457459
parents = parents || []
458460
var merged = isPlainObject(base)
459461
? base

test/specs/index.spec.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@ var expect = chai.expect
88
var ajv = new Ajv()
99

1010
function merger(schema, options) {
11+
var schemaClone = _.cloneDeep(schema)
1112
var result = mergerModule(schema, options)
1213
try {
1314
if (!ajv.validateSchema(result)) {
1415
throw new Error('Schema returned by resolver isn\'t valid.')
1516
}
17+
18+
expect(schema).to.eql(schemaClone)
1619
return result
1720
} catch (e) {
1821
if (!/stack/i.test(e.message)) {

0 commit comments

Comments
 (0)