aboutsummaryrefslogtreecommitdiff
path: root/node_modules/object.getownpropertydescriptors
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/object.getownpropertydescriptors')
-rw-r--r--node_modules/object.getownpropertydescriptors/.editorconfig13
-rw-r--r--node_modules/object.getownpropertydescriptors/.eslintrc10
-rw-r--r--node_modules/object.getownpropertydescriptors/.jscs.json176
-rw-r--r--node_modules/object.getownpropertydescriptors/.npmignore28
-rw-r--r--node_modules/object.getownpropertydescriptors/.travis.yml96
-rw-r--r--node_modules/object.getownpropertydescriptors/CHANGELOG.md51
-rw-r--r--node_modules/object.getownpropertydescriptors/LICENSE22
-rw-r--r--node_modules/object.getownpropertydescriptors/Makefile61
-rw-r--r--node_modules/object.getownpropertydescriptors/README.md99
-rw-r--r--node_modules/object.getownpropertydescriptors/implementation.js44
-rw-r--r--node_modules/object.getownpropertydescriptors/index.js15
-rw-r--r--node_modules/object.getownpropertydescriptors/package.json77
-rw-r--r--node_modules/object.getownpropertydescriptors/polyfill.js7
-rw-r--r--node_modules/object.getownpropertydescriptors/shim.js14
-rw-r--r--node_modules/object.getownpropertydescriptors/test/.eslintrc8
-rw-r--r--node_modules/object.getownpropertydescriptors/test/index.js17
-rw-r--r--node_modules/object.getownpropertydescriptors/test/shimmed.js35
-rw-r--r--node_modules/object.getownpropertydescriptors/test/tests.js127
18 files changed, 900 insertions, 0 deletions
diff --git a/node_modules/object.getownpropertydescriptors/.editorconfig b/node_modules/object.getownpropertydescriptors/.editorconfig
new file mode 100644
index 00000000..eaa21416
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/.editorconfig
@@ -0,0 +1,13 @@
+root = true
+
+[*]
+indent_style = tab;
+insert_final_newline = true;
+quote_type = auto;
+space_after_anonymous_functions = true;
+space_after_control_statements = true;
+spaces_around_operators = true;
+trim_trailing_whitespace = true;
+spaces_in_brackets = false;
+end_of_line = lf;
+
diff --git a/node_modules/object.getownpropertydescriptors/.eslintrc b/node_modules/object.getownpropertydescriptors/.eslintrc
new file mode 100644
index 00000000..97ada312
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/.eslintrc
@@ -0,0 +1,10 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "id-length": [2, { "min": 1, "max": 30 }],
+ "new-cap": [2, { "capIsNewExceptions": ["IsCallable", "RequireObjectCoercible", "ToObject"] }]
+ }
+}
diff --git a/node_modules/object.getownpropertydescriptors/.jscs.json b/node_modules/object.getownpropertydescriptors/.jscs.json
new file mode 100644
index 00000000..3d099c4b
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/.jscs.json
@@ -0,0 +1,176 @@
+{
+ "es3": true,
+
+ "additionalRules": [],
+
+ "requireSemicolons": true,
+
+ "disallowMultipleSpaces": true,
+
+ "disallowIdentifierNames": [],
+
+ "requireCurlyBraces": {
+ "allExcept": [],
+ "keywords": ["if", "else", "for", "while", "do", "try", "catch"]
+ },
+
+ "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"],
+
+ "disallowSpaceAfterKeywords": [],
+
+ "disallowSpaceBeforeComma": true,
+ "disallowSpaceAfterComma": false,
+ "disallowSpaceBeforeSemicolon": true,
+
+ "disallowNodeTypes": [
+ "DebuggerStatement",
+ "ForInStatement",
+ "LabeledStatement",
+ "SwitchCase",
+ "SwitchStatement",
+ "WithStatement"
+ ],
+
+ "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] },
+
+ "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true },
+ "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
+ "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
+ "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
+ "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
+
+ "requireSpaceBetweenArguments": true,
+
+ "disallowSpacesInsideParentheses": true,
+
+ "disallowSpacesInsideArrayBrackets": true,
+
+ "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] },
+
+ "disallowSpaceAfterObjectKeys": true,
+
+ "requireCommaBeforeLineBreak": true,
+
+ "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
+ "requireSpaceAfterPrefixUnaryOperators": [],
+
+ "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
+ "requireSpaceBeforePostfixUnaryOperators": [],
+
+ "disallowSpaceBeforeBinaryOperators": [],
+ "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
+
+ "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
+ "disallowSpaceAfterBinaryOperators": [],
+
+ "disallowImplicitTypeConversion": ["binary", "string"],
+
+ "disallowKeywords": ["with", "eval"],
+
+ "requireKeywordsOnNewLine": [],
+ "disallowKeywordsOnNewLine": ["else"],
+
+ "requireLineFeedAtFileEnd": true,
+
+ "disallowTrailingWhitespace": true,
+
+ "disallowTrailingComma": true,
+
+ "excludeFiles": ["node_modules/**", "vendor/**"],
+
+ "disallowMultipleLineStrings": true,
+
+ "requireDotNotation": { "allExcept": ["keywords"] },
+
+ "requireParenthesesAroundIIFE": true,
+
+ "validateLineBreaks": "LF",
+
+ "validateQuoteMarks": {
+ "escape": true,
+ "mark": "'"
+ },
+
+ "disallowOperatorBeforeLineBreak": [],
+
+ "requireSpaceBeforeKeywords": [
+ "do",
+ "for",
+ "if",
+ "else",
+ "switch",
+ "case",
+ "try",
+ "catch",
+ "finally",
+ "while",
+ "with",
+ "return"
+ ],
+
+ "validateAlignedFunctionParameters": {
+ "lineBreakAfterOpeningBraces": true,
+ "lineBreakBeforeClosingBraces": true
+ },
+
+ "requirePaddingNewLinesBeforeExport": true,
+
+ "validateNewlineAfterArrayElements": {
+ "maximum": 1
+ },
+
+ "requirePaddingNewLinesAfterUseStrict": true,
+
+ "disallowArrowFunctions": true,
+
+ "disallowMultiLineTernary": true,
+
+ "validateOrderInObjectKeys": "asc-insensitive",
+
+ "disallowIdenticalDestructuringNames": true,
+
+ "disallowNestedTernaries": { "maxLevel": 1 },
+
+ "requireSpaceAfterComma": { "allExcept": ["trailing"] },
+ "requireAlignedMultilineParams": false,
+
+ "requireSpacesInGenerator": {
+ "afterStar": true
+ },
+
+ "disallowSpacesInGenerator": {
+ "beforeStar": true
+ },
+
+ "disallowVar": false,
+
+ "requireArrayDestructuring": false,
+
+ "requireEnhancedObjectLiterals": false,
+
+ "requireObjectDestructuring": false,
+
+ "requireEarlyReturn": false,
+
+ "requireCapitalizedConstructorsNew": {
+ "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"]
+ },
+
+ "requireImportAlphabetized": false,
+
+ "requireSpaceBeforeObjectValues": true,
+ "requireSpaceBeforeDestructuredValues": true,
+
+ "disallowSpacesInsideTemplateStringPlaceholders": true,
+
+ "disallowArrayDestructuringReturn": false,
+
+ "requireNewlineBeforeSingleStatementsInIf": false,
+
+ "disallowUnusedVariables": true,
+
+ "requireSpacesInsideImportedObjectBraces": true,
+
+ "requireUseStrict": true
+}
+
diff --git a/node_modules/object.getownpropertydescriptors/.npmignore b/node_modules/object.getownpropertydescriptors/.npmignore
new file mode 100644
index 00000000..59d842ba
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/.npmignore
@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+# Commenting this out is preferred by some people, see
+# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
+node_modules
+
+# Users Environment Variables
+.lock-wscript
diff --git a/node_modules/object.getownpropertydescriptors/.travis.yml b/node_modules/object.getownpropertydescriptors/.travis.yml
new file mode 100644
index 00000000..54ec28b3
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/.travis.yml
@@ -0,0 +1,96 @@
+language: node_js
+node_js:
+ - "6.2"
+ - "6.1"
+ - "6.0"
+ - "5.12"
+ - "5.11"
+ - "5.10"
+ - "5.9"
+ - "5.8"
+ - "5.7"
+ - "5.6"
+ - "5.5"
+ - "5.4"
+ - "5.3"
+ - "5.2"
+ - "5.1"
+ - "5.0"
+ - "4.4"
+ - "4.3"
+ - "4.2"
+ - "4.1"
+ - "4.0"
+ - "iojs-v3.3"
+ - "iojs-v3.2"
+ - "iojs-v3.1"
+ - "iojs-v3.0"
+ - "iojs-v2.5"
+ - "iojs-v2.4"
+ - "iojs-v2.3"
+ - "iojs-v2.2"
+ - "iojs-v2.1"
+ - "iojs-v2.0"
+ - "iojs-v1.8"
+ - "iojs-v1.7"
+ - "iojs-v1.6"
+ - "iojs-v1.5"
+ - "iojs-v1.4"
+ - "iojs-v1.3"
+ - "iojs-v1.2"
+ - "iojs-v1.1"
+ - "iojs-v1.0"
+ - "0.12"
+ - "0.11"
+ - "0.10"
+ - "0.9"
+ - "0.8"
+ - "0.6"
+ - "0.4"
+before_install:
+ - 'if [ "${TRAVIS_NODE_VERSION}" != "0.9" ]; then case "$(npm --version)" in 1.*) npm install -g npm@1.4.28 ;; 2.*) npm install -g npm@2 ;; esac ; fi'
+ - 'if [ "${TRAVIS_NODE_VERSION}" != "0.6" ] && [ "${TRAVIS_NODE_VERSION}" != "0.9" ]; then npm install -g npm; fi'
+script:
+ - 'if [ "${TRAVIS_NODE_VERSION}" != "4.4" ]; then npm run tests-only ; else npm test ; fi'
+sudo: false
+matrix:
+ fast_finish: true
+ allow_failures:
+ - node_js: "6.1"
+ - node_js: "6.0"
+ - node_js: "5.11"
+ - node_js: "5.10"
+ - node_js: "5.9"
+ - node_js: "5.8"
+ - node_js: "5.7"
+ - node_js: "5.6"
+ - node_js: "5.5"
+ - node_js: "5.4"
+ - node_js: "5.3"
+ - node_js: "5.2"
+ - node_js: "5.1"
+ - node_js: "5.0"
+ - node_js: "4.3"
+ - node_js: "4.2"
+ - node_js: "4.1"
+ - node_js: "4.0"
+ - node_js: "iojs-v3.2"
+ - node_js: "iojs-v3.1"
+ - node_js: "iojs-v3.0"
+ - node_js: "iojs-v2.4"
+ - node_js: "iojs-v2.3"
+ - node_js: "iojs-v2.2"
+ - node_js: "iojs-v2.1"
+ - node_js: "iojs-v2.0"
+ - node_js: "iojs-v1.7"
+ - node_js: "iojs-v1.6"
+ - node_js: "iojs-v1.5"
+ - node_js: "iojs-v1.4"
+ - node_js: "iojs-v1.3"
+ - node_js: "iojs-v1.2"
+ - node_js: "iojs-v1.1"
+ - node_js: "iojs-v1.0"
+ - node_js: "0.11"
+ - node_js: "0.9"
+ - node_js: "0.6"
+ - node_js: "0.4"
diff --git a/node_modules/object.getownpropertydescriptors/CHANGELOG.md b/node_modules/object.getownpropertydescriptors/CHANGELOG.md
new file mode 100644
index 00000000..d7c2d150
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/CHANGELOG.md
@@ -0,0 +1,51 @@
+2.0.3 / 2016-07-26
+=================
+ * [Fix] Update implementation to not return `undefined` descriptors
+ * [Deps] update `es-abstract`
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `jscs`, `nsp`, `tape`, `semver`
+ * [Dev Deps] remove unused eccheck script + dep
+ * [Tests] up to `node` `v6.3`, `v5.12`, `v4.4`
+ * [Tests] use pretest/posttest for linting/security
+ * Update to stage 4
+
+2.0.2 / 2016-01-27
+=================
+ * [Fix] ensure that `Object.getOwnPropertyDescriptors` does not fail when `Object.prototype` has a poisoned setter (#1, #2)
+
+2.0.1 / 2016-01-27
+=================
+ * [Deps] move `@es-shims/api` to dev deps
+
+2.0.0 / 2016-01-27
+=================
+ * [Breaking] implement the es-shims API
+ * [Deps] update `define-properties`, `es-abstract`
+ * [Dev Deps] update `tape`, `jscs`, `nsp`, `eslint`, `@ljharb/eslint-config`, `semver`
+ * [Tests] fix npm upgrades in older nodes
+ * [Tests] up to `node` `v5.5`
+ * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG
+
+1.0.4 / 2015-07-20
+=================
+ * [Tests] Test on `io.js` `v2.4`
+ * [Deps, Dev Deps] Update `define-properties`, `tape`, `eslint`, `semver`
+
+1.0.3 / 2015-06-28
+=================
+ * Increase robustness by caching `Array#{concat, reduce}`
+ * [Deps] Update `define_properties`
+ * [Dev Deps] Update `eslint`, `semver`, `nsp`
+ * [Tests] Test up to `io.js` `v2.3`
+
+1.0.2 / 2015-05-23
+=================
+ * Update `es-abstract`, `tape`, `eslint`, `jscs`, `semver`, `covert`
+ * Test up to `io.js` `v2.0`
+
+1.0.1 / 2015-03-20
+=================
+ * Update `es-abstract`, `editorconfig-tools`, `nsp`, `eslint`, `semver`, `replace`
+
+1.0.0 / 2015-02-17
+=================
+ * v1.0.0
diff --git a/node_modules/object.getownpropertydescriptors/LICENSE b/node_modules/object.getownpropertydescriptors/LICENSE
new file mode 100644
index 00000000..b43df444
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/node_modules/object.getownpropertydescriptors/Makefile b/node_modules/object.getownpropertydescriptors/Makefile
new file mode 100644
index 00000000..b9e4fe1a
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/Makefile
@@ -0,0 +1,61 @@
+# Since we rely on paths relative to the makefile location, abort if make isn't being run from there.
+$(if $(findstring /,$(MAKEFILE_LIST)),$(error Please only invoke this makefile from the directory it resides in))
+
+ # The files that need updating when incrementing the version number.
+VERSIONED_FILES := *.js *.json README*
+
+
+# Add the local npm packages' bin folder to the PATH, so that `make` can find them, when invoked directly.
+# Note that rather than using `$(npm bin)` the 'node_modules/.bin' path component is hard-coded, so that invocation works even from an environment
+# where npm is (temporarily) unavailable due to having deactivated an nvm instance loaded into the calling shell in order to avoid interference with tests.
+export PATH := $(shell printf '%s' "$$PWD/node_modules/.bin:$$PATH")
+UTILS := semver
+# Make sure that all required utilities can be located.
+UTIL_CHECK := $(or $(shell PATH="$(PATH)" which $(UTILS) >/dev/null && echo 'ok'),$(error Did you forget to run `npm install` after cloning the repo? At least one of the required supporting utilities not found: $(UTILS)))
+
+# Default target (by virtue of being the first non '.'-prefixed in the file).
+.PHONY: _no-target-specified
+_no-target-specified:
+ $(error Please specify the target to make - `make list` shows targets. Alternatively, use `npm test` to run the default tests; `npm run` shows all tests)
+
+# Lists all targets defined in this makefile.
+.PHONY: list
+list:
+ @$(MAKE) -pRrn : -f $(MAKEFILE_LIST) 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | command grep -v -e '^[^[:alnum:]]' -e '^$@$$command ' | sort
+
+# All-tests target: invokes the specified test suites for ALL shells defined in $(SHELLS).
+.PHONY: test
+test:
+ @npm test
+
+.PHONY: _ensure-tag
+_ensure-tag:
+ifndef TAG
+ $(error Please invoke with `make TAG=<new-version> release`, where <new-version> is either an increment specifier (patch, minor, major, prepatch, preminor, premajor, prerelease), or an explicit major.minor.patch version number)
+endif
+
+CHANGELOG_ERROR = $(error No CHANGELOG specified)
+.PHONY: _ensure-changelog
+_ensure-changelog:
+ @ (git status -sb --porcelain | command grep -E '^( M|[MA] ) CHANGELOG.md' > /dev/null) || (echo no CHANGELOG.md specified && exit 2)
+
+# Ensures that the git workspace is clean.
+.PHONY: _ensure-clean
+_ensure-clean:
+ @[ -z "$$((git status --porcelain --untracked-files=no || echo err) | command grep -v 'CHANGELOG.md')" ] || { echo "Workspace is not clean; please commit changes first." >&2; exit 2; }
+
+# Makes a release; invoke with `make TAG=<versionOrIncrementSpec> release`.
+.PHONY: release
+release: _ensure-tag _ensure-changelog _ensure-clean
+ @old_ver=`git describe --abbrev=0 --tags --match 'v[0-9]*.[0-9]*.[0-9]*'` || { echo "Failed to determine current version." >&2; exit 1; }; old_ver=$${old_ver#v}; \
+ new_ver=`echo "$(TAG)" | sed 's/^v//'`; new_ver=$${new_ver:-patch}; \
+ if printf "$$new_ver" | command grep -q '^[0-9]'; then \
+ semver "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be major.minor.patch' >&2; exit 2; }; \
+ semver -r "> $$old_ver" "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be HIGHER than current one.' >&2; exit 2; } \
+ else \
+ new_ver=`semver -i "$$new_ver" "$$old_ver"` || { echo 'Invalid version-increment specifier: $(TAG)' >&2; exit 2; } \
+ fi; \
+ printf "=== Bumping version **$$old_ver** to **$$new_ver** before committing and tagging:\n=== TYPE 'proceed' TO PROCEED, anything else to abort: " && read response && [ "$$response" = 'proceed' ] || { echo 'Aborted.' >&2; exit 2; }; \
+ replace "$$old_ver" "$$new_ver" -- $(VERSIONED_FILES) && \
+ git commit -m "v$$new_ver" $(VERSIONED_FILES) CHANGELOG.md && \
+ git tag -a -m "v$$new_ver" "v$$new_ver"
diff --git a/node_modules/object.getownpropertydescriptors/README.md b/node_modules/object.getownpropertydescriptors/README.md
new file mode 100644
index 00000000..0fc6c185
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/README.md
@@ -0,0 +1,99 @@
+#object.getownpropertydescriptors <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![Build Status][travis-svg]][travis-url]
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+[![browser support][testling-svg]][testling-url]
+
+An ES2017 spec-compliant shim for `Object.getOwnPropertyDescriptors` that works in ES5.
+Invoke its "shim" method to shim `Object.getOwnPropertyDescriptors` if it is unavailable, and if `Object.getOwnPropertyDescriptor` is available.
+
+This package implements the [es-shim API](https://github.com/es-shims/api) interface. It works in an ES3-supported environment and complies with the [spec](https://github.com/tc39/ecma262/pull/582).
+
+## Example
+
+```js
+var getDescriptors = require('object.getownpropertydescriptors');
+var assert = require('assert');
+var obj = { normal: Infinity };
+var enumDescriptor = {
+ enumerable: false,
+ writable: false,
+ configurable: true,
+ value: true
+};
+var writableDescriptor = {
+ enumerable: true,
+ writable: true,
+ configurable: true,
+ value: 42
+};
+var symbol = Symbol();
+var symDescriptor = {
+ enumerable: true,
+ writable: true,
+ configurable: false,
+ value: [symbol]
+};
+
+Object.defineProperty(obj, 'enumerable', enumDescriptor);
+Object.defineProperty(obj, 'writable', writableDescriptor);
+Object.defineProperty(obj, 'symbol', symDescriptor);
+
+var descriptors = getDescriptors(obj);
+
+assert.deepEqual(descriptors, {
+ normal: {
+ enumerable: true,
+ writable: true,
+ configurable: true,
+ value: Infinity
+ },
+ enumerable: enumDescriptor,
+ writable: writableDescriptor,
+ symbol: symDescriptor
+});
+```
+
+```js
+var getDescriptors = require('object.getownpropertydescriptors');
+var assert = require('assert');
+/* when Object.getOwnPropertyDescriptors is not present */
+delete Object.getOwnPropertyDescriptors;
+var shimmedDescriptors = getDescriptors.shim();
+assert.equal(shimmedDescriptors, getDescriptors);
+assert.deepEqual(shimmedDescriptors(obj), getDescriptors(obj));
+```
+
+```js
+var getDescriptors = require('object.getownpropertydescriptors');
+var assert = require('assert');
+/* when Object.getOwnPropertyDescriptors is present */
+var shimmedDescriptors = getDescriptors.shim();
+assert.notEqual(shimmedDescriptors, getDescriptors);
+assert.deepEqual(shimmedDescriptors(obj), getDescriptors(obj));
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/object.getownpropertydescriptors
+[npm-version-svg]: http://versionbadg.es/ljharb/object.getownpropertydescriptors.svg
+[travis-svg]: https://travis-ci.org/ljharb/object.getownpropertydescriptors.svg
+[travis-url]: https://travis-ci.org/ljharb/object.getownpropertydescriptors
+[deps-svg]: https://david-dm.org/ljharb/object.getownpropertydescriptors.svg
+[deps-url]: https://david-dm.org/ljharb/object.getownpropertydescriptors
+[dev-deps-svg]: https://david-dm.org/ljharb/object.getownpropertydescriptors/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/object.getownpropertydescriptors#info=devDependencies
+[testling-svg]: https://ci.testling.com/ljharb/object.getownpropertydescriptors.png
+[testling-url]: https://ci.testling.com/ljharb/object.getownpropertydescriptors
+[npm-badge-png]: https://nodei.co/npm/object.getownpropertydescriptors.png?downloads=true&stars=true
+[license-image]: http://img.shields.io/npm/l/object.getownpropertydescriptors.svg
+[license-url]: LICENSE
+[downloads-image]: http://img.shields.io/npm/dm/object.getownpropertydescriptors.svg
+[downloads-url]: http://npm-stat.com/charts.html?package=object.getownpropertydescriptors
diff --git a/node_modules/object.getownpropertydescriptors/implementation.js b/node_modules/object.getownpropertydescriptors/implementation.js
new file mode 100644
index 00000000..784c22c9
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/implementation.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var ES = require('es-abstract/es7');
+
+var defineProperty = Object.defineProperty;
+var getDescriptor = Object.getOwnPropertyDescriptor;
+var getOwnNames = Object.getOwnPropertyNames;
+var getSymbols = Object.getOwnPropertySymbols;
+var concat = Function.call.bind(Array.prototype.concat);
+var reduce = Function.call.bind(Array.prototype.reduce);
+var getAll = getSymbols ? function (obj) {
+ return concat(getOwnNames(obj), getSymbols(obj));
+} : getOwnNames;
+
+var isES5 = ES.IsCallable(getDescriptor) && ES.IsCallable(getOwnNames);
+
+var safePut = function put(obj, prop, val) { // eslint-disable-line max-params
+ if (defineProperty && prop in obj) {
+ defineProperty(obj, prop, {
+ configurable: true,
+ enumerable: true,
+ value: val,
+ writable: true
+ });
+ } else {
+ obj[prop] = val;
+ }
+};
+
+module.exports = function getOwnPropertyDescriptors(value) {
+ ES.RequireObjectCoercible(value);
+ if (!isES5) {
+ throw new TypeError('getOwnPropertyDescriptors requires Object.getOwnPropertyDescriptor');
+ }
+
+ var O = ES.ToObject(value);
+ return reduce(getAll(O), function (acc, key) {
+ var descriptor = getDescriptor(O, key);
+ if (typeof descriptor !== 'undefined') {
+ safePut(acc, key, descriptor);
+ }
+ return acc;
+ }, {});
+};
diff --git a/node_modules/object.getownpropertydescriptors/index.js b/node_modules/object.getownpropertydescriptors/index.js
new file mode 100644
index 00000000..bf2aec5d
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/index.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var define = require('define-properties');
+
+var implementation = require('./implementation');
+var getPolyfill = require('./polyfill');
+var shim = require('./shim');
+
+define(implementation, {
+ getPolyfill: getPolyfill,
+ implementation: implementation,
+ shim: shim
+});
+
+module.exports = implementation;
diff --git a/node_modules/object.getownpropertydescriptors/package.json b/node_modules/object.getownpropertydescriptors/package.json
new file mode 100644
index 00000000..13e201e7
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/package.json
@@ -0,0 +1,77 @@
+{
+ "name": "object.getownpropertydescriptors",
+ "version": "2.0.3",
+ "author": "Jordan Harband",
+ "description": "ES2017 spec-compliant shim for `Object.getOwnPropertyDescriptors` that works in ES5.",
+ "license": "MIT",
+ "main": "index.js",
+ "scripts": {
+ "pretest": "npm run --silent lint && es-shim-api",
+ "test": "npm run --silent tests-only",
+ "posttest": "npm run --silent security",
+ "tests-only": "npm run --silent test:shimmed && npm run --silent test:module",
+ "test:shimmed": "node test/shimmed.js",
+ "test:module": "node test/index.js",
+ "coverage": "covert test/*.js",
+ "coverage:quiet": "covert test/*.js --quiet",
+ "lint": "npm run --silent jscs && npm run --silent eslint",
+ "jscs": "jscs test/*.js *.js",
+ "eslint": "eslint test/*.js *.js",
+ "security": "nsp check"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/ljharb/object.getownpropertydescriptors.git"
+ },
+ "keywords": [
+ "Object.getOwnPropertyDescriptors",
+ "descriptor",
+ "property descriptor",
+ "ES8",
+ "ES2017",
+ "shim",
+ "polyfill",
+ "getOwnPropertyDescriptor",
+ "es-shim API"
+ ],
+ "dependencies": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.5.1"
+ },
+ "devDependencies": {
+ "tape": "^4.6.0",
+ "covert": "^1.1.0",
+ "jscs": "^3.0.7",
+ "nsp": "^2.6.1",
+ "eslint": "^3.1.1",
+ "@ljharb/eslint-config": "^6.0.0",
+ "semver": "^5.3.0",
+ "replace": "^0.3.0",
+ "@es-shims/api": "^1.2.0"
+ },
+ "testling": {
+ "files": [
+ "test/index.js",
+ "test/shimmed.js"
+ ],
+ "browsers": [
+ "iexplore/9.0..latest",
+ "firefox/4.0..6.0",
+ "firefox/15.0..latest",
+ "firefox/nightly",
+ "chrome/5.0..10.0",
+ "chrome/20.0..latest",
+ "chrome/canary",
+ "opera/12.0..latest",
+ "opera/next",
+ "safari/5.0..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+}
+
diff --git a/node_modules/object.getownpropertydescriptors/polyfill.js b/node_modules/object.getownpropertydescriptors/polyfill.js
new file mode 100644
index 00000000..0424acfb
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/polyfill.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var implementation = require('./implementation');
+
+module.exports = function getPolyfill() {
+ return typeof Object.getOwnPropertyDescriptors === 'function' ? Object.getOwnPropertyDescriptors : implementation;
+};
diff --git a/node_modules/object.getownpropertydescriptors/shim.js b/node_modules/object.getownpropertydescriptors/shim.js
new file mode 100644
index 00000000..799c7d3c
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/shim.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var getPolyfill = require('./polyfill');
+var define = require('define-properties');
+
+module.exports = function shimGetOwnPropertyDescriptors() {
+ var polyfill = getPolyfill();
+ define(
+ Object,
+ { getOwnPropertyDescriptors: polyfill },
+ { getOwnPropertyDescriptors: function () { return Object.getOwnPropertyDescriptors !== polyfill; } }
+ );
+ return polyfill;
+};
diff --git a/node_modules/object.getownpropertydescriptors/test/.eslintrc b/node_modules/object.getownpropertydescriptors/test/.eslintrc
new file mode 100644
index 00000000..e9ca9795
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/test/.eslintrc
@@ -0,0 +1,8 @@
+{
+ "rules": {
+ "max-nested-callbacks": [2, 3],
+ "max-statements": [2, 15],
+ "max-statements-per-line": [2, { "max": 2 }],
+ "no-invalid-this": [1]
+ }
+}
diff --git a/node_modules/object.getownpropertydescriptors/test/index.js b/node_modules/object.getownpropertydescriptors/test/index.js
new file mode 100644
index 00000000..618a2050
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/test/index.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var getDescriptors = require('../');
+var test = require('tape');
+var runTests = require('./tests');
+
+test('as a function', function (t) {
+ t.test('bad object/this value', function (st) {
+ st.throws(function () { return getDescriptors(undefined); }, TypeError, 'undefined is not an object');
+ st.throws(function () { return getDescriptors(null); }, TypeError, 'null is not an object');
+ st.end();
+ });
+
+ runTests(getDescriptors, t);
+
+ t.end();
+});
diff --git a/node_modules/object.getownpropertydescriptors/test/shimmed.js b/node_modules/object.getownpropertydescriptors/test/shimmed.js
new file mode 100644
index 00000000..c9af4c1d
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/test/shimmed.js
@@ -0,0 +1,35 @@
+'use strict';
+
+var getDescriptors = require('../');
+getDescriptors.shim();
+
+var test = require('tape');
+var defineProperties = require('define-properties');
+var runTests = require('./tests');
+var isEnumerable = Object.prototype.propertyIsEnumerable;
+var functionsHaveNames = function f() {}.name === 'f';
+
+test('shimmed', function (t) {
+ t.equal(Object.getOwnPropertyDescriptors.length, 1, 'Object.getOwnPropertyDescriptors has a length of 1');
+ t.test('Function name', { skip: !functionsHaveNames }, function (st) {
+ st.equal(Object.getOwnPropertyDescriptors.name, 'getOwnPropertyDescriptors', 'Object.getOwnPropertyDescriptors has name "getOwnPropertyDescriptors"');
+ st.end();
+ });
+
+ t.test('enumerability', { skip: !defineProperties.supportsDescriptors }, function (et) {
+ et.equal(false, isEnumerable.call(Object, 'getOwnPropertyDescriptors'), 'Object.getOwnPropertyDescriptors is not enumerable');
+ et.end();
+ });
+
+ var supportsStrictMode = (function () { return typeof this === 'undefined'; }());
+
+ t.test('bad object/this value', { skip: !supportsStrictMode }, function (st) {
+ st.throws(function () { return getDescriptors(undefined, 'a'); }, TypeError, 'undefined is not an object');
+ st.throws(function () { return getDescriptors(null, 'a'); }, TypeError, 'null is not an object');
+ st.end();
+ });
+
+ runTests(Object.getOwnPropertyDescriptors, t);
+
+ t.end();
+});
diff --git a/node_modules/object.getownpropertydescriptors/test/tests.js b/node_modules/object.getownpropertydescriptors/test/tests.js
new file mode 100644
index 00000000..b9aa29ed
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/test/tests.js
@@ -0,0 +1,127 @@
+'use strict';
+
+module.exports = function (getDescriptors, t) {
+ var enumDescriptor = {
+ configurable: true,
+ enumerable: false,
+ value: true,
+ writable: false
+ };
+ var writableDescriptor = {
+ configurable: true,
+ enumerable: true,
+ value: 42,
+ writable: true
+ };
+
+ t.test('works with Object.prototype poisoned setter', { skip: !Object.defineProperty }, function (st) {
+ var key = 'foo';
+
+ var obj = {};
+ obj[key] = 42;
+
+ var expected = {};
+ expected[key] = {
+ configurable: true,
+ enumerable: true,
+ value: 42,
+ writable: true
+ };
+
+ /* eslint-disable no-extend-native, accessor-pairs */
+ Object.defineProperty(Object.prototype, key, { configurable: true, set: function (v) { throw new Error(v); } });
+ /* eslint-enable no-extend-native, accessor-pairs */
+
+ var hasOwnNamesBug = false;
+ try {
+ Object.getOwnPropertyNames(obj);
+ } catch (e) {
+ // v8 in node 0.6 - 0.12 has a bug :-(
+ hasOwnNamesBug = true;
+ st.comment('SKIP: this engine has a bug with Object.getOwnPropertyNames: it can not handle a throwing setter on Object.prototype.');
+ }
+
+ if (!hasOwnNamesBug) {
+ st.doesNotThrow(function () {
+ var result = getDescriptors(obj);
+ st.deepEqual(result, expected, 'got expected descriptors');
+ });
+ }
+
+ /* eslint-disable no-extend-native */
+ delete Object.prototype[key];
+ /* eslint-enable no-extend-native */
+ st.end();
+ });
+
+ t.test('gets all expected non-Symbol descriptors', function (st) {
+ var obj = { normal: Infinity };
+ Object.defineProperty(obj, 'enumerable', enumDescriptor);
+ Object.defineProperty(obj, 'writable', writableDescriptor);
+
+ var descriptors = getDescriptors(obj);
+
+ st.deepEqual(descriptors, {
+ enumerable: enumDescriptor,
+ normal: {
+ configurable: true,
+ enumerable: true,
+ value: Infinity,
+ writable: true
+ },
+ writable: writableDescriptor
+ });
+ st.end();
+ });
+
+ var supportsSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';
+ t.test('gets Symbol descriptors too', { skip: !supportsSymbols }, function (st) {
+ var symbol = Symbol();
+ var symDescriptor = {
+ configurable: false,
+ enumerable: true,
+ value: [symbol],
+ writable: true
+ };
+ var obj = { normal: Infinity };
+ Object.defineProperty(obj, 'enumerable', enumDescriptor);
+ Object.defineProperty(obj, 'writable', writableDescriptor);
+ Object.defineProperty(obj, 'symbol', symDescriptor);
+
+ var descriptors = getDescriptors(obj);
+
+ st.deepEqual(descriptors, {
+ enumerable: enumDescriptor,
+ normal: {
+ configurable: true,
+ enumerable: true,
+ value: Infinity,
+ writable: true
+ },
+ symbol: symDescriptor,
+ writable: writableDescriptor
+ });
+ st.end();
+ });
+
+ /* global Proxy */
+ var supportsProxy = typeof Proxy === 'function';
+ t.test('Proxies that return an undefined descriptor', { skip: !supportsProxy }, function (st) {
+ var obj = { foo: true };
+ var fooDescriptor = Object.getOwnPropertyDescriptor(obj, 'foo');
+
+ var proxy = new Proxy(obj, {
+ getOwnPropertyDescriptor: function (target, key) {
+ return Object.getOwnPropertyDescriptor(target, key);
+ },
+ ownKeys: function () {
+ return [
+ 'foo',
+ 'bar'
+ ];
+ }
+ });
+ st.deepEqual(getDescriptors(proxy), { foo: fooDescriptor }, 'object has no descriptors');
+ st.end();
+ });
+};