Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/es-abstract/2016/GetOwnPropertyKeys.js')
-rw-r--r--node_modules/es-abstract/2016/GetOwnPropertyKeys.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/node_modules/es-abstract/2016/GetOwnPropertyKeys.js b/node_modules/es-abstract/2016/GetOwnPropertyKeys.js
new file mode 100644
index 000000000..8d7e5eee5
--- /dev/null
+++ b/node_modules/es-abstract/2016/GetOwnPropertyKeys.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('../GetIntrinsic');
+
+var hasSymbols = require('has-symbols')();
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%');
+var keys = require('object-keys');
+
+var esType = require('./Type');
+
+// https://www.ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys
+
+module.exports = function GetOwnPropertyKeys(O, Type) {
+ if (esType(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (Type === 'Symbol') {
+ return $gOPS ? $gOPS(O) : [];
+ }
+ if (Type === 'String') {
+ if (!$gOPN) {
+ return keys(O);
+ }
+ return $gOPN(O);
+ }
+ throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`');
+};