12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- var Map = require('./es6.map');
- var $export = require('./_export');
- var shared = require('./_shared')('metadata');
- var store = shared.store || (shared.store = new (require('./es6.weak-map'))());
- var getOrCreateMetadataMap = function (target, targetKey, create) {
- var targetMetadata = store.get(target);
- if (!targetMetadata) {
- if (!create) return undefined;
- store.set(target, targetMetadata = new Map());
- }
- var keyMetadata = targetMetadata.get(targetKey);
- if (!keyMetadata) {
- if (!create) return undefined;
- targetMetadata.set(targetKey, keyMetadata = new Map());
- } return keyMetadata;
- };
- var ordinaryHasOwnMetadata = function (MetadataKey, O, P) {
- var metadataMap = getOrCreateMetadataMap(O, P, false);
- return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
- };
- var ordinaryGetOwnMetadata = function (MetadataKey, O, P) {
- var metadataMap = getOrCreateMetadataMap(O, P, false);
- return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
- };
- var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {
- getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
- };
- var ordinaryOwnMetadataKeys = function (target, targetKey) {
- var metadataMap = getOrCreateMetadataMap(target, targetKey, false);
- var keys = [];
- if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });
- return keys;
- };
- var toMetaKey = function (it) {
- return it === undefined || typeof it == 'symbol' ? it : String(it);
- };
- var exp = function (O) {
- $export($export.S, 'Reflect', O);
- };
- module.exports = {
- store: store,
- map: getOrCreateMetadataMap,
- has: ordinaryHasOwnMetadata,
- get: ordinaryGetOwnMetadata,
- set: ordinaryDefineOwnMetadata,
- keys: ordinaryOwnMetadataKeys,
- key: toMetaKey,
- exp: exp
- };
|