fast-json-stringify 5.9.2 → 5.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/index.js +5 -0
- package/package.json +1 -1
- package/test/toJSON.test.js +33 -4
- package/test/typesArray.test.js +3 -2
package/README.md
CHANGED
|
@@ -590,6 +590,8 @@ Otherwise, instead of raising an error, null values will be coerced as follows:
|
|
|
590
590
|
- `number` -> `0`
|
|
591
591
|
- `string` -> `""`
|
|
592
592
|
- `boolean` -> `false`
|
|
593
|
+
- `object` -> `{}`
|
|
594
|
+
- `array` -> `[]`
|
|
593
595
|
|
|
594
596
|
<a name="largearrays"></a>
|
|
595
597
|
#### Large Arrays
|
package/index.js
CHANGED
|
@@ -560,10 +560,13 @@ function buildObject (context, location) {
|
|
|
560
560
|
let functionCode = `
|
|
561
561
|
`
|
|
562
562
|
|
|
563
|
+
const nullable = schema.nullable === true
|
|
563
564
|
functionCode += `
|
|
564
565
|
// ${schemaRef}
|
|
565
566
|
function ${functionName} (input) {
|
|
566
567
|
const obj = ${toJSON('input')}
|
|
568
|
+
${!nullable ? 'if (obj === null) return \'{}\'' : ''}
|
|
569
|
+
|
|
567
570
|
${buildInnerObject(context, location)}
|
|
568
571
|
}
|
|
569
572
|
`
|
|
@@ -601,7 +604,9 @@ function buildArray (context, location) {
|
|
|
601
604
|
// ${schemaRef}
|
|
602
605
|
`
|
|
603
606
|
|
|
607
|
+
const nullable = schema.nullable === true
|
|
604
608
|
functionCode += `
|
|
609
|
+
${!nullable ? 'if (obj === null) return \'[]\'' : ''}
|
|
605
610
|
if (!Array.isArray(obj)) {
|
|
606
611
|
throw new TypeError(\`The value of '${schemaRef}' does not match schema definition.\`)
|
|
607
612
|
}
|
package/package.json
CHANGED
package/test/toJSON.test.js
CHANGED
|
@@ -127,7 +127,7 @@ test('not fail on null sub-object declared nullable', (t) => {
|
|
|
127
127
|
t.equal('{"product":null}', stringify(object))
|
|
128
128
|
})
|
|
129
129
|
|
|
130
|
-
test('
|
|
130
|
+
test('on non nullable null sub-object it should coerce to {}', (t) => {
|
|
131
131
|
t.plan(1)
|
|
132
132
|
|
|
133
133
|
const stringify = build({
|
|
@@ -148,10 +148,12 @@ test('throw an error on non nullable null sub-object', (t) => {
|
|
|
148
148
|
const object = {
|
|
149
149
|
product: null
|
|
150
150
|
}
|
|
151
|
-
|
|
151
|
+
|
|
152
|
+
const result = stringify(object)
|
|
153
|
+
t.equal(result, JSON.stringify({ product: {} }))
|
|
152
154
|
})
|
|
153
155
|
|
|
154
|
-
test('
|
|
156
|
+
test('on non nullable null object it should coerce to {}', (t) => {
|
|
155
157
|
t.plan(1)
|
|
156
158
|
|
|
157
159
|
const stringify = build({
|
|
@@ -170,5 +172,32 @@ test('throw an error on non nullable null object', (t) => {
|
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
174
|
})
|
|
173
|
-
|
|
175
|
+
|
|
176
|
+
const result = stringify(null)
|
|
177
|
+
t.equal(result, '{}')
|
|
178
|
+
})
|
|
179
|
+
|
|
180
|
+
test('on non-nullable null object it should skip rendering, skipping required fields checks', (t) => {
|
|
181
|
+
t.plan(1)
|
|
182
|
+
|
|
183
|
+
const stringify = build({
|
|
184
|
+
title: 'simple object',
|
|
185
|
+
nullable: false,
|
|
186
|
+
type: 'object',
|
|
187
|
+
properties: {
|
|
188
|
+
product: {
|
|
189
|
+
nullable: false,
|
|
190
|
+
type: 'object',
|
|
191
|
+
properties: {
|
|
192
|
+
name: {
|
|
193
|
+
type: 'string'
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
required: ['product']
|
|
199
|
+
})
|
|
200
|
+
|
|
201
|
+
const result = stringify(null)
|
|
202
|
+
t.equal(result, '{}')
|
|
174
203
|
})
|
package/test/typesArray.test.js
CHANGED
|
@@ -467,7 +467,7 @@ test('class instance that is simultaneously a string and a json', (t) => {
|
|
|
467
467
|
t.equal(valueObj, '{"simultaneously":{"foo":"hello"}}')
|
|
468
468
|
})
|
|
469
469
|
|
|
470
|
-
test('should throw an error when type is array and object is null', (t) => {
|
|
470
|
+
test('should not throw an error when type is array and object is null, it should instead coerce to []', (t) => {
|
|
471
471
|
t.plan(1)
|
|
472
472
|
const schema = {
|
|
473
473
|
type: 'object',
|
|
@@ -482,7 +482,8 @@ test('should throw an error when type is array and object is null', (t) => {
|
|
|
482
482
|
}
|
|
483
483
|
|
|
484
484
|
const stringify = build(schema)
|
|
485
|
-
|
|
485
|
+
const result = stringify({ arr: null })
|
|
486
|
+
t.equal(result, JSON.stringify({ arr: [] }))
|
|
486
487
|
})
|
|
487
488
|
|
|
488
489
|
test('should throw an error when type is array and object is not an array', (t) => {
|