@@ -29,6 +29,8 @@ export interface JsonOptions {
29
29
// Custom json filter for vite
30
30
const jsonExtRE = / \. j s o n (?: $ | \? ) (? ! c o m m o n j s - (?: p r o x y | e x t e r n a l ) ) /
31
31
32
+ const jsonObjRE = / ^ \s * \{ /
33
+
32
34
const jsonLangs = `\\.(?:json|json5)(?:$|\\?)`
33
35
const jsonLangRE = new RegExp ( jsonLangs )
34
36
export const isJSONRequest = ( request : string ) : boolean =>
@@ -49,28 +51,26 @@ export function jsonPlugin(
49
51
50
52
try {
51
53
if ( options . stringify !== false ) {
52
- if ( options . namedExports ) {
54
+ if ( options . namedExports && jsonObjRE . test ( json ) ) {
53
55
const parsed = JSON . parse ( json )
54
- if ( typeof parsed === 'object' && parsed != null ) {
55
- const keys = Object . keys ( parsed )
56
-
57
- let code = ''
58
- let defaultObjectCode = '{\n'
59
- for ( const key of keys ) {
60
- if ( key === makeLegalIdentifier ( key ) ) {
61
- code += `export const ${ key } = ${ serializeValue ( parsed [ key ] ) } ;\n`
62
- defaultObjectCode += ` ${ key } ,\n`
63
- } else {
64
- defaultObjectCode += ` ${ JSON . stringify ( key ) } : ${ serializeValue ( parsed [ key ] ) } ,\n`
65
- }
56
+ const keys = Object . keys ( parsed )
57
+
58
+ let code = ''
59
+ let defaultObjectCode = '{\n'
60
+ for ( const key of keys ) {
61
+ if ( key === makeLegalIdentifier ( key ) ) {
62
+ code += `export const ${ key } = ${ serializeValue ( parsed [ key ] ) } ;\n`
63
+ defaultObjectCode += ` ${ key } ,\n`
64
+ } else {
65
+ defaultObjectCode += ` ${ JSON . stringify ( key ) } : ${ serializeValue ( parsed [ key ] ) } ,\n`
66
66
}
67
- defaultObjectCode += '}'
67
+ }
68
+ defaultObjectCode += '}'
68
69
69
- code += `export default ${ defaultObjectCode } ;\n`
70
- return {
71
- code,
72
- map : { mappings : '' } ,
73
- }
70
+ code += `export default ${ defaultObjectCode } ;\n`
71
+ return {
72
+ code,
73
+ map : { mappings : '' } ,
74
74
}
75
75
}
76
76
0 commit comments