diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 5e77368..1eabcda 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -282,7 +282,7 @@ Schema.prototype.pattern = function pattern(regexp) { } Schema.prototype.simplify = function simplify(this: Schema, value) { - if (deepEqual(value, this.meta.default)) return null + if (deepEqual(value, this.meta.default, this.type === 'dict')) return null if (isNullable(value)) return value if (this.type === 'object' || this.type === 'dict') { const result: Dict = {} @@ -291,6 +291,7 @@ Schema.prototype.simplify = function simplify(this: Schema, value) { const item = schema?.simplify(value[key]) if (this.type === 'dict' || !isNullable(item)) result[key] = item } + if (deepEqual(result, this.meta.default, this.type === 'dict')) return null return result } else if (this.type === 'array' || this.type === 'tuple') { const result: any[] = [] diff --git a/packages/core/tests/simplify.spec.ts b/packages/core/tests/simplify.spec.ts index 3b840f6..4d391e5 100644 --- a/packages/core/tests/simplify.spec.ts +++ b/packages/core/tests/simplify.spec.ts @@ -19,7 +19,7 @@ describe('Simplify', () => { expect(schema.simplify(null)).to.deep.equal(null) expect(schema.simplify({ a: 'a', b: 1 })).to.deep.equal({ b: 1 }) - expect(schema.simplify({ c: {} })).to.deep.equal({}) + expect(schema.simplify({ c: { d: true } })).to.deep.equal({}) expect(schema.simplify({ c: { d: false } })).to.deep.equal({ c: { d: false } }) }) })