diff options
Diffstat (limited to 'node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js')
| -rw-r--r-- | node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js b/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js new file mode 100644 index 0000000..d4b5615 --- /dev/null +++ b/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js @@ -0,0 +1,33 @@ +var $ = require('../internals/export'); +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +var Set = require('../modules/es.set'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var iterate = require('../internals/iterate'); + +var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; +var toMetadataKey = ReflectMetadataModule.toKey; + +var from = function (iter) { + var result = []; + iterate(iter, result.push, { that: result }); + return result; +}; + +var ordinaryMetadataKeys = function (O, P) { + var oKeys = ordinaryOwnMetadataKeys(O, P); + var parent = getPrototypeOf(O); + if (parent === null) return oKeys; + var pKeys = ordinaryMetadataKeys(parent, P); + return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; +}; + +// `Reflect.getMetadataKeys` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + getMetadataKeys: function getMetadataKeys(target /* , targetKey */) { + var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); + return ordinaryMetadataKeys(anObject(target), targetKey); + } +}); |
