Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Ahmet Turan Koçak
Kayip Esya Sitesi yeni
Commits
3a84cbd5
Commit
3a84cbd5
authored
Dec 14, 2022
by
Ahmet Turan Koçak
Browse files
Initial commit
parents
Changes
1000
Show whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
1000 of 1000+
files are displayed.
Plain diff
Email patch
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/Call.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
callBound
=
require
(
'
call-bind/callBound
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
IsArray
=
require
(
'
./IsArray
'
);
var
$apply
=
GetIntrinsic
(
'
%Reflect.apply%
'
,
true
)
||
callBound
(
'
%Function.prototype.apply%
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-call
module
.
exports
=
function
Call
(
F
,
V
)
{
var
argumentsList
=
arguments
.
length
>
2
?
arguments
[
2
]
:
[];
if
(
!
IsArray
(
argumentsList
))
{
throw
new
$TypeError
(
'
Assertion failed: optional `argumentsList`, if provided, must be a List
'
);
}
return
$apply
(
F
,
V
,
argumentsList
);
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/CanonicalNumericIndexString.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
SameValue
=
require
(
'
./SameValue
'
);
var
ToNumber
=
require
(
'
./ToNumber
'
);
var
ToString
=
require
(
'
./ToString
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring
module
.
exports
=
function
CanonicalNumericIndexString
(
argument
)
{
if
(
Type
(
argument
)
!==
'
String
'
)
{
throw
new
$TypeError
(
'
Assertion failed: `argument` must be a String
'
);
}
if
(
argument
===
'
-0
'
)
{
return
-
0
;
}
var
n
=
ToNumber
(
argument
);
if
(
SameValue
(
ToString
(
n
),
argument
))
{
return
n
;
}
return
void
0
;
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/CharacterRange.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
callBound
=
require
(
'
call-bind/callBound
'
);
var
$fromCharCode
=
GetIntrinsic
(
'
%String.fromCharCode%
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
$charCodeAt
=
callBound
(
'
%String.prototype.charCodeAt%
'
);
var
$push
=
callBound
(
'
%Array.prototype.push%
'
);
module
.
exports
=
function
CharacterRange
(
A
,
B
)
{
if
(
A
.
length
!==
1
||
B
.
length
!==
1
)
{
throw
new
$TypeError
(
'
Assertion failed: CharSets A and B contain exactly one character
'
);
}
var
a
=
A
[
0
];
var
b
=
B
[
0
];
var
i
=
$charCodeAt
(
a
,
0
);
var
j
=
$charCodeAt
(
b
,
0
);
if
(
!
(
i
<=
j
))
{
throw
new
$TypeError
(
'
Assertion failed: i is not <= j
'
);
}
var
arr
=
[];
for
(
var
k
=
i
;
k
<=
j
;
k
+=
1
)
{
$push
(
arr
,
$fromCharCode
(
k
));
}
return
arr
;
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/CompletePropertyDescriptor.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
has
=
require
(
'
has
'
);
var
assertRecord
=
require
(
'
../helpers/assertRecord
'
);
var
IsDataDescriptor
=
require
(
'
./IsDataDescriptor
'
);
var
IsGenericDescriptor
=
require
(
'
./IsGenericDescriptor
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor
module
.
exports
=
function
CompletePropertyDescriptor
(
Desc
)
{
/* eslint no-param-reassign: 0 */
assertRecord
(
Type
,
'
Property Descriptor
'
,
'
Desc
'
,
Desc
);
if
(
IsGenericDescriptor
(
Desc
)
||
IsDataDescriptor
(
Desc
))
{
if
(
!
has
(
Desc
,
'
[[Value]]
'
))
{
Desc
[
'
[[Value]]
'
]
=
void
0
;
}
if
(
!
has
(
Desc
,
'
[[Writable]]
'
))
{
Desc
[
'
[[Writable]]
'
]
=
false
;
}
}
else
{
if
(
!
has
(
Desc
,
'
[[Get]]
'
))
{
Desc
[
'
[[Get]]
'
]
=
void
0
;
}
if
(
!
has
(
Desc
,
'
[[Set]]
'
))
{
Desc
[
'
[[Set]]
'
]
=
void
0
;
}
}
if
(
!
has
(
Desc
,
'
[[Enumerable]]
'
))
{
Desc
[
'
[[Enumerable]]
'
]
=
false
;
}
if
(
!
has
(
Desc
,
'
[[Configurable]]
'
))
{
Desc
[
'
[[Configurable]]
'
]
=
false
;
}
return
Desc
;
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/CreateDataProperty.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
DefineOwnProperty
=
require
(
'
../helpers/DefineOwnProperty
'
);
var
FromPropertyDescriptor
=
require
(
'
./FromPropertyDescriptor
'
);
var
OrdinaryGetOwnProperty
=
require
(
'
./OrdinaryGetOwnProperty
'
);
var
IsDataDescriptor
=
require
(
'
./IsDataDescriptor
'
);
var
IsExtensible
=
require
(
'
./IsExtensible
'
);
var
IsPropertyKey
=
require
(
'
./IsPropertyKey
'
);
var
SameValue
=
require
(
'
./SameValue
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-createdataproperty
module
.
exports
=
function
CreateDataProperty
(
O
,
P
,
V
)
{
if
(
Type
(
O
)
!==
'
Object
'
)
{
throw
new
$TypeError
(
'
Assertion failed: Type(O) is not Object
'
);
}
if
(
!
IsPropertyKey
(
P
))
{
throw
new
$TypeError
(
'
Assertion failed: IsPropertyKey(P) is not true
'
);
}
var
oldDesc
=
OrdinaryGetOwnProperty
(
O
,
P
);
var
extensible
=
!
oldDesc
||
IsExtensible
(
O
);
var
nonConfigurable
=
oldDesc
&&
!
oldDesc
[
'
[[Configurable]]
'
];
if
(
nonConfigurable
||
!
extensible
)
{
return
false
;
}
return
DefineOwnProperty
(
IsDataDescriptor
,
SameValue
,
FromPropertyDescriptor
,
O
,
P
,
{
'
[[Configurable]]
'
:
true
,
'
[[Enumerable]]
'
:
true
,
'
[[Value]]
'
:
V
,
'
[[Writable]]
'
:
true
}
);
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/CreateDataPropertyOrThrow.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
CreateDataProperty
=
require
(
'
./CreateDataProperty
'
);
var
IsPropertyKey
=
require
(
'
./IsPropertyKey
'
);
var
Type
=
require
(
'
./Type
'
);
// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow
module
.
exports
=
function
CreateDataPropertyOrThrow
(
O
,
P
,
V
)
{
if
(
Type
(
O
)
!==
'
Object
'
)
{
throw
new
$TypeError
(
'
Assertion failed: Type(O) is not Object
'
);
}
if
(
!
IsPropertyKey
(
P
))
{
throw
new
$TypeError
(
'
Assertion failed: IsPropertyKey(P) is not true
'
);
}
var
success
=
CreateDataProperty
(
O
,
P
,
V
);
if
(
!
success
)
{
throw
new
$TypeError
(
'
unable to create data property
'
);
}
return
success
;
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/CreateHTML.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
callBound
=
require
(
'
call-bind/callBound
'
);
var
$replace
=
callBound
(
'
String.prototype.replace
'
);
var
RequireObjectCoercible
=
require
(
'
./RequireObjectCoercible
'
);
var
ToString
=
require
(
'
./ToString
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-createhtml
module
.
exports
=
function
CreateHTML
(
string
,
tag
,
attribute
,
value
)
{
if
(
Type
(
tag
)
!==
'
String
'
||
Type
(
attribute
)
!==
'
String
'
)
{
throw
new
$TypeError
(
'
Assertion failed: `tag` and `attribute` must be strings
'
);
}
var
str
=
RequireObjectCoercible
(
string
);
var
S
=
ToString
(
str
);
var
p1
=
'
<
'
+
tag
;
if
(
attribute
!==
''
)
{
var
V
=
ToString
(
value
);
var
escapedV
=
$replace
(
V
,
/
\x
22/g
,
'
"
'
);
p1
+=
'
\
x20
'
+
attribute
+
'
\
x3D
\
x22
'
+
escapedV
+
'
\
x22
'
;
}
return
p1
+
'
>
'
+
S
+
'
</
'
+
tag
+
'
>
'
;
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/CreateIterResultObject.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject
module
.
exports
=
function
CreateIterResultObject
(
value
,
done
)
{
if
(
Type
(
done
)
!==
'
Boolean
'
)
{
throw
new
$TypeError
(
'
Assertion failed: Type(done) is not Boolean
'
);
}
return
{
value
:
value
,
done
:
done
};
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/CreateListFromArrayLike.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
callBound
=
require
(
'
call-bind/callBound
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
$indexOf
=
callBound
(
'
Array.prototype.indexOf
'
,
true
)
||
callBound
(
'
String.prototype.indexOf
'
);
var
$push
=
callBound
(
'
Array.prototype.push
'
);
var
Get
=
require
(
'
./Get
'
);
var
IsArray
=
require
(
'
./IsArray
'
);
var
ToLength
=
require
(
'
./ToLength
'
);
var
ToString
=
require
(
'
./ToString
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike
module
.
exports
=
function
CreateListFromArrayLike
(
obj
)
{
var
elementTypes
=
arguments
.
length
>
1
?
arguments
[
1
]
:
[
'
Undefined
'
,
'
Null
'
,
'
Boolean
'
,
'
String
'
,
'
Symbol
'
,
'
Number
'
,
'
Object
'
];
if
(
Type
(
obj
)
!==
'
Object
'
)
{
throw
new
$TypeError
(
'
Assertion failed: `obj` must be an Object
'
);
}
if
(
!
IsArray
(
elementTypes
))
{
throw
new
$TypeError
(
'
Assertion failed: `elementTypes`, if provided, must be an array
'
);
}
var
len
=
ToLength
(
Get
(
obj
,
'
length
'
));
var
list
=
[];
var
index
=
0
;
while
(
index
<
len
)
{
var
indexName
=
ToString
(
index
);
var
next
=
Get
(
obj
,
indexName
);
var
nextType
=
Type
(
next
);
if
(
$indexOf
(
elementTypes
,
nextType
)
<
0
)
{
throw
new
$TypeError
(
'
item type
'
+
nextType
+
'
is not a valid elementType
'
);
}
$push
(
list
,
next
);
index
+=
1
;
}
return
list
;
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/CreateMethodProperty.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
DefineOwnProperty
=
require
(
'
../helpers/DefineOwnProperty
'
);
var
FromPropertyDescriptor
=
require
(
'
./FromPropertyDescriptor
'
);
var
IsDataDescriptor
=
require
(
'
./IsDataDescriptor
'
);
var
IsPropertyKey
=
require
(
'
./IsPropertyKey
'
);
var
SameValue
=
require
(
'
./SameValue
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-createmethodproperty
module
.
exports
=
function
CreateMethodProperty
(
O
,
P
,
V
)
{
if
(
Type
(
O
)
!==
'
Object
'
)
{
throw
new
$TypeError
(
'
Assertion failed: Type(O) is not Object
'
);
}
if
(
!
IsPropertyKey
(
P
))
{
throw
new
$TypeError
(
'
Assertion failed: IsPropertyKey(P) is not true
'
);
}
var
newDesc
=
{
'
[[Configurable]]
'
:
true
,
'
[[Enumerable]]
'
:
false
,
'
[[Value]]
'
:
V
,
'
[[Writable]]
'
:
true
};
return
DefineOwnProperty
(
IsDataDescriptor
,
SameValue
,
FromPropertyDescriptor
,
O
,
P
,
newDesc
);
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/DateFromTime.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$EvalError
=
GetIntrinsic
(
'
%EvalError%
'
);
var
DayWithinYear
=
require
(
'
./DayWithinYear
'
);
var
InLeapYear
=
require
(
'
./InLeapYear
'
);
var
MonthFromTime
=
require
(
'
./MonthFromTime
'
);
// https://262.ecma-international.org/5.1/#sec-15.9.1.5
module
.
exports
=
function
DateFromTime
(
t
)
{
var
m
=
MonthFromTime
(
t
);
var
d
=
DayWithinYear
(
t
);
if
(
m
===
0
)
{
return
d
+
1
;
}
if
(
m
===
1
)
{
return
d
-
30
;
}
var
leap
=
InLeapYear
(
t
);
if
(
m
===
2
)
{
return
d
-
58
-
leap
;
}
if
(
m
===
3
)
{
return
d
-
89
-
leap
;
}
if
(
m
===
4
)
{
return
d
-
119
-
leap
;
}
if
(
m
===
5
)
{
return
d
-
150
-
leap
;
}
if
(
m
===
6
)
{
return
d
-
180
-
leap
;
}
if
(
m
===
7
)
{
return
d
-
211
-
leap
;
}
if
(
m
===
8
)
{
return
d
-
242
-
leap
;
}
if
(
m
===
9
)
{
return
d
-
272
-
leap
;
}
if
(
m
===
10
)
{
return
d
-
303
-
leap
;
}
if
(
m
===
11
)
{
return
d
-
333
-
leap
;
}
throw
new
$EvalError
(
'
Assertion failed: MonthFromTime returned an impossible value:
'
+
m
);
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/Day.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
floor
=
require
(
'
./floor
'
);
var
msPerDay
=
require
(
'
../helpers/timeConstants
'
).
msPerDay
;
// https://262.ecma-international.org/5.1/#sec-15.9.1.2
module
.
exports
=
function
Day
(
t
)
{
return
floor
(
t
/
msPerDay
);
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/DayFromYear.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
floor
=
require
(
'
./floor
'
);
// https://262.ecma-international.org/5.1/#sec-15.9.1.3
module
.
exports
=
function
DayFromYear
(
y
)
{
return
(
365
*
(
y
-
1970
))
+
floor
((
y
-
1969
)
/
4
)
-
floor
((
y
-
1901
)
/
100
)
+
floor
((
y
-
1601
)
/
400
);
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/DayWithinYear.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
Day
=
require
(
'
./Day
'
);
var
DayFromYear
=
require
(
'
./DayFromYear
'
);
var
YearFromTime
=
require
(
'
./YearFromTime
'
);
// https://262.ecma-international.org/5.1/#sec-15.9.1.4
module
.
exports
=
function
DayWithinYear
(
t
)
{
return
Day
(
t
)
-
DayFromYear
(
YearFromTime
(
t
));
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/DaysInYear.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
modulo
=
require
(
'
./modulo
'
);
// https://262.ecma-international.org/5.1/#sec-15.9.1.3
module
.
exports
=
function
DaysInYear
(
y
)
{
if
(
modulo
(
y
,
4
)
!==
0
)
{
return
365
;
}
if
(
modulo
(
y
,
100
)
!==
0
)
{
return
366
;
}
if
(
modulo
(
y
,
400
)
!==
0
)
{
return
365
;
}
return
366
;
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/DefinePropertyOrThrow.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
isPropertyDescriptor
=
require
(
'
../helpers/isPropertyDescriptor
'
);
var
DefineOwnProperty
=
require
(
'
../helpers/DefineOwnProperty
'
);
var
FromPropertyDescriptor
=
require
(
'
./FromPropertyDescriptor
'
);
var
IsAccessorDescriptor
=
require
(
'
./IsAccessorDescriptor
'
);
var
IsDataDescriptor
=
require
(
'
./IsDataDescriptor
'
);
var
IsPropertyKey
=
require
(
'
./IsPropertyKey
'
);
var
SameValue
=
require
(
'
./SameValue
'
);
var
ToPropertyDescriptor
=
require
(
'
./ToPropertyDescriptor
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow
module
.
exports
=
function
DefinePropertyOrThrow
(
O
,
P
,
desc
)
{
if
(
Type
(
O
)
!==
'
Object
'
)
{
throw
new
$TypeError
(
'
Assertion failed: Type(O) is not Object
'
);
}
if
(
!
IsPropertyKey
(
P
))
{
throw
new
$TypeError
(
'
Assertion failed: IsPropertyKey(P) is not true
'
);
}
var
Desc
=
isPropertyDescriptor
({
Type
:
Type
,
IsDataDescriptor
:
IsDataDescriptor
,
IsAccessorDescriptor
:
IsAccessorDescriptor
},
desc
)
?
desc
:
ToPropertyDescriptor
(
desc
);
if
(
!
isPropertyDescriptor
({
Type
:
Type
,
IsDataDescriptor
:
IsDataDescriptor
,
IsAccessorDescriptor
:
IsAccessorDescriptor
},
Desc
))
{
throw
new
$TypeError
(
'
Assertion failed: Desc is not a valid Property Descriptor
'
);
}
return
DefineOwnProperty
(
IsDataDescriptor
,
SameValue
,
FromPropertyDescriptor
,
O
,
P
,
Desc
);
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/DeletePropertyOrThrow.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
IsPropertyKey
=
require
(
'
./IsPropertyKey
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow
module
.
exports
=
function
DeletePropertyOrThrow
(
O
,
P
)
{
if
(
Type
(
O
)
!==
'
Object
'
)
{
throw
new
$TypeError
(
'
Assertion failed: Type(O) is not Object
'
);
}
if
(
!
IsPropertyKey
(
P
))
{
throw
new
$TypeError
(
'
Assertion failed: IsPropertyKey(P) is not true
'
);
}
// eslint-disable-next-line no-param-reassign
var
success
=
delete
O
[
P
];
if
(
!
success
)
{
throw
new
$TypeError
(
'
Attempt to delete property failed.
'
);
}
return
success
;
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/EnumerableOwnNames.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$TypeError
=
GetIntrinsic
(
'
%TypeError%
'
);
var
keys
=
require
(
'
object-keys
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-enumerableownnames
module
.
exports
=
function
EnumerableOwnNames
(
O
)
{
if
(
Type
(
O
)
!==
'
Object
'
)
{
throw
new
$TypeError
(
'
Assertion failed: Type(O) is not Object
'
);
}
return
keys
(
O
);
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2016/abs.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
GetIntrinsic
=
require
(
'
get-intrinsic
'
);
var
$abs
=
GetIntrinsic
(
'
%Math.abs%
'
);
// http://262.ecma-international.org/5.1/#sec-5.2
module
.
exports
=
function
abs
(
x
)
{
return
$abs
(
x
);
};
javascript/node_modules/.staging/es-abstract-a73d3b42/2017/AbstractEqualityComparison.js
0 → 100644
View file @
3a84cbd5
'
use strict
'
;
var
ToNumber
=
require
(
'
./ToNumber
'
);
var
ToPrimitive
=
require
(
'
./ToPrimitive
'
);
var
Type
=
require
(
'
./Type
'
);
// https://ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison
module
.
exports
=
function
AbstractEqualityComparison
(
x
,
y
)
{
var
xType
=
Type
(
x
);
var
yType
=
Type
(
y
);
if
(
xType
===
yType
)
{
return
x
===
y
;
// ES6+ specified this shortcut anyways.
}
if
(
x
==
null
&&
y
==
null
)
{
return
true
;
}
if
(
xType
===
'
Number
'
&&
yType
===
'
String
'
)
{
return
AbstractEqualityComparison
(
x
,
ToNumber
(
y
));
}
if
(
xType
===
'
String
'
&&
yType
===
'
Number
'
)
{
return
AbstractEqualityComparison
(
ToNumber
(
x
),
y
);
}
if
(
xType
===
'
Boolean
'
)
{
return
AbstractEqualityComparison
(
ToNumber
(
x
),
y
);
}
if
(
yType
===
'
Boolean
'
)
{
return
AbstractEqualityComparison
(
x
,
ToNumber
(
y
));
}
if
((
xType
===
'
String
'
||
xType
===
'
Number
'
||
xType
===
'
Symbol
'
)
&&
yType
===
'
Object
'
)
{
return
AbstractEqualityComparison
(
x
,
ToPrimitive
(
y
));
}
if
(
xType
===
'
Object
'
&&
(
yType
===
'
String
'
||
yType
===
'
Number
'
||
yType
===
'
Symbol
'
))
{
return
AbstractEqualityComparison
(
ToPrimitive
(
x
),
y
);
}
return
false
;
};
Prev
1
…
44
45
46
47
48
49
50
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment