Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9342251
internal-metadata.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
internal-metadata.js
View Options
var
$
=
require
(
'../internals/export'
);
var
uncurryThis
=
require
(
'../internals/function-uncurry-this'
);
var
hiddenKeys
=
require
(
'../internals/hidden-keys'
);
var
isObject
=
require
(
'../internals/is-object'
);
var
hasOwn
=
require
(
'../internals/has-own-property'
);
var
defineProperty
=
require
(
'../internals/object-define-property'
).
f
;
var
getOwnPropertyNamesModule
=
require
(
'../internals/object-get-own-property-names'
);
var
getOwnPropertyNamesExternalModule
=
require
(
'../internals/object-get-own-property-names-external'
);
var
isExtensible
=
require
(
'../internals/object-is-extensible'
);
var
uid
=
require
(
'../internals/uid'
);
var
FREEZING
=
require
(
'../internals/freezing'
);
var
REQUIRED
=
false
;
var
METADATA
=
uid
(
'meta'
);
var
id
=
0
;
var
setMetadata
=
function
(
it
)
{
defineProperty
(
it
,
METADATA
,
{
value
:
{
objectID
:
'O'
+
id
++
,
// object ID
weakData
:
{}
// weak collections IDs
}
});
};
var
fastKey
=
function
(
it
,
create
)
{
// return a primitive with prefix
if
(
!
isObject
(
it
))
return
typeof
it
==
'symbol'
?
it
:
(
typeof
it
==
'string'
?
'S'
:
'P'
)
+
it
;
if
(
!
hasOwn
(
it
,
METADATA
))
{
// can't set metadata to uncaught frozen object
if
(
!
isExtensible
(
it
))
return
'F'
;
// not necessary to add metadata
if
(
!
create
)
return
'E'
;
// add missing metadata
setMetadata
(
it
);
// return object ID
}
return
it
[
METADATA
].
objectID
;
};
var
getWeakData
=
function
(
it
,
create
)
{
if
(
!
hasOwn
(
it
,
METADATA
))
{
// can't set metadata to uncaught frozen object
if
(
!
isExtensible
(
it
))
return
true
;
// not necessary to add metadata
if
(
!
create
)
return
false
;
// add missing metadata
setMetadata
(
it
);
// return the store of weak collections IDs
}
return
it
[
METADATA
].
weakData
;
};
// add metadata on freeze-family methods calling
var
onFreeze
=
function
(
it
)
{
if
(
FREEZING
&&
REQUIRED
&&
isExtensible
(
it
)
&&
!
hasOwn
(
it
,
METADATA
))
setMetadata
(
it
);
return
it
;
};
var
enable
=
function
()
{
meta
.
enable
=
function
()
{
/* empty */
};
REQUIRED
=
true
;
var
getOwnPropertyNames
=
getOwnPropertyNamesModule
.
f
;
var
splice
=
uncurryThis
([].
splice
);
var
test
=
{};
test
[
METADATA
]
=
1
;
// prevent exposing of metadata key
if
(
getOwnPropertyNames
(
test
).
length
)
{
getOwnPropertyNamesModule
.
f
=
function
(
it
)
{
var
result
=
getOwnPropertyNames
(
it
);
for
(
var
i
=
0
,
length
=
result
.
length
;
i
<
length
;
i
++
)
{
if
(
result
[
i
]
===
METADATA
)
{
splice
(
result
,
i
,
1
);
break
;
}
}
return
result
;
};
$
({
target
:
'Object'
,
stat
:
true
,
forced
:
true
},
{
getOwnPropertyNames
:
getOwnPropertyNamesExternalModule
.
f
});
}
};
var
meta
=
module
.
exports
=
{
enable
:
enable
,
fastKey
:
fastKey
,
getWeakData
:
getWeakData
,
onFreeze
:
onFreeze
};
hiddenKeys
[
METADATA
]
=
true
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jul 4, 12:35 PM (2 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3399757
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment