Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9312719
es.json.stringify.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
es.json.stringify.js
View Options
var
$
=
require
(
'../internals/export'
);
var
getBuiltIn
=
require
(
'../internals/get-built-in'
);
var
apply
=
require
(
'../internals/function-apply'
);
var
call
=
require
(
'../internals/function-call'
);
var
uncurryThis
=
require
(
'../internals/function-uncurry-this'
);
var
fails
=
require
(
'../internals/fails'
);
var
isArray
=
require
(
'../internals/is-array'
);
var
isCallable
=
require
(
'../internals/is-callable'
);
var
isObject
=
require
(
'../internals/is-object'
);
var
isSymbol
=
require
(
'../internals/is-symbol'
);
var
arraySlice
=
require
(
'../internals/array-slice'
);
var
NATIVE_SYMBOL
=
require
(
'../internals/native-symbol'
);
var
$stringify
=
getBuiltIn
(
'JSON'
,
'stringify'
);
var
exec
=
uncurryThis
(
/./
.
exec
);
var
charAt
=
uncurryThis
(
''
.
charAt
);
var
charCodeAt
=
uncurryThis
(
''
.
charCodeAt
);
var
replace
=
uncurryThis
(
''
.
replace
);
var
numberToString
=
uncurryThis
(
1.0
.
toString
);
var
tester
=
/[\uD800-\uDFFF]/g
;
var
low
=
/^[\uD800-\uDBFF]$/
;
var
hi
=
/^[\uDC00-\uDFFF]$/
;
var
WRONG_SYMBOLS_CONVERSION
=
!
NATIVE_SYMBOL
||
fails
(
function
()
{
var
symbol
=
getBuiltIn
(
'Symbol'
)();
// MS Edge converts symbol values to JSON as {}
return
$stringify
([
symbol
])
!=
'[null]'
// WebKit converts symbol values to JSON as null
||
$stringify
({
a
:
symbol
})
!=
'{}'
// V8 throws on boxed symbols
||
$stringify
(
Object
(
symbol
))
!=
'{}'
;
});
// https://github.com/tc39/proposal-well-formed-stringify
var
ILL_FORMED_UNICODE
=
fails
(
function
()
{
return
$stringify
(
'\uDF06\uD834'
)
!==
'"\\udf06\\ud834"'
||
$stringify
(
'\uDEAD'
)
!==
'"\\udead"'
;
});
var
stringifyWithSymbolsFix
=
function
(
it
,
replacer
)
{
var
args
=
arraySlice
(
arguments
);
var
$replacer
=
replacer
;
if
(
!
isObject
(
replacer
)
&&
it
===
undefined
||
isSymbol
(
it
))
return
;
// IE8 returns string on undefined
if
(
!
isArray
(
replacer
))
replacer
=
function
(
key
,
value
)
{
if
(
isCallable
(
$replacer
))
value
=
call
(
$replacer
,
this
,
key
,
value
);
if
(
!
isSymbol
(
value
))
return
value
;
};
args
[
1
]
=
replacer
;
return
apply
(
$stringify
,
null
,
args
);
};
var
fixIllFormed
=
function
(
match
,
offset
,
string
)
{
var
prev
=
charAt
(
string
,
offset
-
1
);
var
next
=
charAt
(
string
,
offset
+
1
);
if
((
exec
(
low
,
match
)
&&
!
exec
(
hi
,
next
))
||
(
exec
(
hi
,
match
)
&&
!
exec
(
low
,
prev
)))
{
return
'\\u'
+
numberToString
(
charCodeAt
(
match
,
0
),
16
);
}
return
match
;
};
if
(
$stringify
)
{
// `JSON.stringify` method
// https://tc39.es/ecma262/#sec-json.stringify
$
({
target
:
'JSON'
,
stat
:
true
,
arity
:
3
,
forced
:
WRONG_SYMBOLS_CONVERSION
||
ILL_FORMED_UNICODE
},
{
// eslint-disable-next-line no-unused-vars -- required for `.length`
stringify
:
function
stringify
(
it
,
replacer
,
space
)
{
var
args
=
arraySlice
(
arguments
);
var
result
=
apply
(
WRONG_SYMBOLS_CONVERSION
?
stringifyWithSymbolsFix
:
$stringify
,
null
,
args
);
return
ILL_FORMED_UNICODE
&&
typeof
result
==
'string'
?
replace
(
result
,
tester
,
fixIllFormed
)
:
result
;
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jul 3, 11:05 AM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3348674
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment