summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/es-to-primitive
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/es-to-primitive')
-rw-r--r--deps/npm/node_modules/es-to-primitive/.editorconfig20
-rw-r--r--deps/npm/node_modules/es-to-primitive/.eslintrc14
-rw-r--r--deps/npm/node_modules/es-to-primitive/.jscs.json175
-rw-r--r--deps/npm/node_modules/es-to-primitive/.travis.yml243
-rw-r--r--deps/npm/node_modules/es-to-primitive/CHANGELOG.md38
-rw-r--r--deps/npm/node_modules/es-to-primitive/LICENSE21
-rw-r--r--deps/npm/node_modules/es-to-primitive/Makefile61
-rw-r--r--deps/npm/node_modules/es-to-primitive/README.md51
-rw-r--r--deps/npm/node_modules/es-to-primitive/es2015.js75
-rw-r--r--deps/npm/node_modules/es-to-primitive/es5.js45
-rw-r--r--deps/npm/node_modules/es-to-primitive/es6.js3
-rw-r--r--deps/npm/node_modules/es-to-primitive/helpers/isPrimitive.js3
-rw-r--r--deps/npm/node_modules/es-to-primitive/index.js17
-rw-r--r--deps/npm/node_modules/es-to-primitive/package.json86
-rw-r--r--deps/npm/node_modules/es-to-primitive/test/.eslintrc9
-rw-r--r--deps/npm/node_modules/es-to-primitive/test/es2015.js151
-rw-r--r--deps/npm/node_modules/es-to-primitive/test/es5.js94
-rw-r--r--deps/npm/node_modules/es-to-primitive/test/es6.js151
-rw-r--r--deps/npm/node_modules/es-to-primitive/test/index.js20
19 files changed, 1277 insertions, 0 deletions
diff --git a/deps/npm/node_modules/es-to-primitive/.editorconfig b/deps/npm/node_modules/es-to-primitive/.editorconfig
new file mode 100644
index 0000000000..bc228f8269
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/.editorconfig
@@ -0,0 +1,20 @@
+root = true
+
+[*]
+indent_style = tab
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 150
+
+[CHANGELOG.md]
+indent_style = space
+indent_size = 2
+
+[*.json]
+max_line_length = off
+
+[Makefile]
+max_line_length = off
diff --git a/deps/npm/node_modules/es-to-primitive/.eslintrc b/deps/npm/node_modules/es-to-primitive/.eslintrc
new file mode 100644
index 0000000000..09e0c6c26c
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/.eslintrc
@@ -0,0 +1,14 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "complexity": [2, 14],
+ "func-name-matching": 0,
+ "id-length": [2, { "min": 1, "max": 24, "properties": "never" }],
+ "max-lines-per-function": [2, { "max": 68 }],
+ "max-statements": [2, 20],
+ "new-cap": [2, { "capIsNewExceptions": ["GetMethod"] }]
+ }
+}
diff --git a/deps/npm/node_modules/es-to-primitive/.jscs.json b/deps/npm/node_modules/es-to-primitive/.jscs.json
new file mode 100644
index 0000000000..32edc7054c
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/.jscs.json
@@ -0,0 +1,175 @@
+{
+ "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": 12
+ },
+
+ "requirePaddingNewLinesAfterUseStrict": true,
+
+ "disallowArrowFunctions": true,
+
+ "disallowMultiLineTernary": true,
+
+ "validateOrderInObjectKeys": false,
+
+ "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", "GetMethod"]
+ },
+
+ "requireImportAlphabetized": false,
+
+ "requireSpaceBeforeObjectValues": true,
+ "requireSpaceBeforeDestructuredValues": true,
+
+ "disallowSpacesInsideTemplateStringPlaceholders": true,
+
+ "disallowArrayDestructuringReturn": false,
+
+ "requireNewlineBeforeSingleStatementsInIf": false,
+
+ "disallowUnusedVariables": true,
+
+ "requireSpacesInsideImportedObjectBraces": true,
+
+ "requireUseStrict": true
+}
diff --git a/deps/npm/node_modules/es-to-primitive/.travis.yml b/deps/npm/node_modules/es-to-primitive/.travis.yml
new file mode 100644
index 0000000000..c9ee1ece78
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/.travis.yml
@@ -0,0 +1,243 @@
+language: node_js
+cache:
+ directories:
+ - "$(nvm cache dir)"
+os:
+ - linux
+node_js:
+ - "10.11"
+ - "9.11"
+ - "8.12"
+ - "7.10"
+ - "6.14"
+ - "5.12"
+ - "4.9"
+ - "iojs-v3.3"
+ - "iojs-v2.5"
+ - "iojs-v1.8"
+ - "0.12"
+ - "0.11"
+ - "0.10"
+ - "0.8"
+ - "0.6"
+before_install:
+ - 'case "${TRAVIS_NODE_VERSION}" in 0.*) export NPM_CONFIG_STRICT_SSL=false ;; esac'
+ - 'nvm install-latest-npm'
+install:
+ - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;'
+script:
+ - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi'
+ - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi'
+ - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi'
+ - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi'
+sudo: false
+env:
+ - TEST=true
+matrix:
+ fast_finish: true
+ include:
+ - node_js: "lts/*"
+ env: PRETEST=true
+ - node_js: "lts/*"
+ env: POSTTEST=true
+ - node_js: "4"
+ env: COVERAGE=true
+ - node_js: "10.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.11"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.13"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.12"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.11"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.11"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v3.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v3.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v3.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "0.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "0.4"
+ env: TEST=true ALLOW_FAILURE=true
+ allow_failures:
+ - os: osx
+ - env: TEST=true ALLOW_FAILURE=true
+ - env: COVERAGE=true
+ - node_js: "0.6"
diff --git a/deps/npm/node_modules/es-to-primitive/CHANGELOG.md b/deps/npm/node_modules/es-to-primitive/CHANGELOG.md
new file mode 100644
index 0000000000..962986969d
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/CHANGELOG.md
@@ -0,0 +1,38 @@
+1.2.0 / 2018-09-27
+=================
+ * [New] create ES2015 entry point/property, to replace ES6
+ * [Fix] Ensure optional arguments are not part of the length (#29)
+ * [Deps] update `is-callable`
+ * [Dev Deps] update `tape`, `jscs`, `nsp`, `eslint`, `@ljharb/eslint-config`, `semver`, `object-inspect`, `replace`
+ * [Tests] avoid util.inspect bug with `new Date(NaN)` on node v6.0 and v6.1.
+ * [Tests] up to `node` `v10.11`, `v9.11`, `v8.12`, `v6.14`, `v4.9`
+
+1.1.1 / 2016-01-03
+=================
+ * [Fix: ES5] fix coercion logic: ES5’s ToPrimitive does not coerce any primitive value, regardless of hint (#2)
+
+1.1.0 / 2015-12-27
+=================
+ * [New] add `Symbol.toPrimitive` support
+ * [Deps] update `is-callable`, `is-date-object`
+ * [Dev Deps] update `eslint`, `tape`, `semver`, `jscs`, `covert`, `nsp`, `@ljharb/eslint-config`
+ * [Dev Deps] remove unused deps
+ * [Tests] up to `node` `v5.3`
+ * [Tests] fix npm upgrades on older node versions
+ * [Tests] fix testling
+ * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG
+
+1.0.1 / 2016-01-03
+=================
+ * [Fix: ES5] fix coercion logic: ES5’s ToPrimitive does not coerce any primitive value, regardless of hint (#2)
+ * [Deps] update `is-callable`, `is-date-object`
+ * [Dev Deps] update `eslint`, `tape`, `semver`, `jscs`, `covert`, `nsp`, `@ljharb/eslint-config`
+ * [Dev Deps] remove unused deps
+ * [Tests] up to `node` `v5.3`
+ * [Tests] fix npm upgrades on older node versions
+ * [Tests] fix testling
+ * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG
+
+1.0.0 / 2015-03-19
+=================
+ * Initial release.
diff --git a/deps/npm/node_modules/es-to-primitive/LICENSE b/deps/npm/node_modules/es-to-primitive/LICENSE
new file mode 100644
index 0000000000..fcf5754efe
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/LICENSE
@@ -0,0 +1,21 @@
+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/deps/npm/node_modules/es-to-primitive/Makefile b/deps/npm/node_modules/es-to-primitive/Makefile
new file mode 100644
index 0000000000..b9e4fe1aab
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/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/deps/npm/node_modules/es-to-primitive/README.md b/deps/npm/node_modules/es-to-primitive/README.md
new file mode 100644
index 0000000000..1831ecf395
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/README.md
@@ -0,0 +1,51 @@
+# es-to-primitive <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]
+
+ECMAScript “ToPrimitive” algorithm. Provides ES5 and ES2015 versions.
+When different versions of the spec conflict, the default export will be the latest version of the abstract operation.
+Alternative versions will also be available under an `es5`/`es2015` exported property if you require a specific version.
+
+## Example
+
+```js
+var toPrimitive = require('es-to-primitive');
+var assert = require('assert');
+
+assert(toPrimitive(function () {}) === String(function () {}));
+
+var date = new Date();
+assert(toPrimitive(date) === String(date));
+
+assert(toPrimitive({ valueOf: function () { return 3; } }) === 3);
+
+assert(toPrimitive(['a', 'b', 3]) === String(['a', 'b', 3]));
+
+var sym = Symbol();
+assert(toPrimitive(Object(sym)) === sym);
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/es-to-primitive
+[npm-version-svg]: http://versionbadg.es/ljharb/es-to-primitive.svg
+[travis-svg]: https://travis-ci.org/ljharb/es-to-primitive.svg
+[travis-url]: https://travis-ci.org/ljharb/es-to-primitive
+[deps-svg]: https://david-dm.org/ljharb/es-to-primitive.svg
+[deps-url]: https://david-dm.org/ljharb/es-to-primitive
+[dev-deps-svg]: https://david-dm.org/ljharb/es-to-primitive/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/es-to-primitive#info=devDependencies
+[testling-svg]: https://ci.testling.com/ljharb/es-to-primitive.png
+[testling-url]: https://ci.testling.com/ljharb/es-to-primitive
+[npm-badge-png]: https://nodei.co/npm/es-to-primitive.png?downloads=true&stars=true
+[license-image]: http://img.shields.io/npm/l/es-to-primitive.svg
+[license-url]: LICENSE
+[downloads-image]: http://img.shields.io/npm/dm/es-to-primitive.svg
+[downloads-url]: http://npm-stat.com/charts.html?package=es-to-primitive
diff --git a/deps/npm/node_modules/es-to-primitive/es2015.js b/deps/npm/node_modules/es-to-primitive/es2015.js
new file mode 100644
index 0000000000..4a11a346c6
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/es2015.js
@@ -0,0 +1,75 @@
+'use strict';
+
+var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';
+
+var isPrimitive = require('./helpers/isPrimitive');
+var isCallable = require('is-callable');
+var isDate = require('is-date-object');
+var isSymbol = require('is-symbol');
+
+var ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {
+ if (typeof O === 'undefined' || O === null) {
+ throw new TypeError('Cannot call method on ' + O);
+ }
+ if (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {
+ throw new TypeError('hint must be "string" or "number"');
+ }
+ var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
+ var method, result, i;
+ for (i = 0; i < methodNames.length; ++i) {
+ method = O[methodNames[i]];
+ if (isCallable(method)) {
+ result = method.call(O);
+ if (isPrimitive(result)) {
+ return result;
+ }
+ }
+ }
+ throw new TypeError('No default value');
+};
+
+var GetMethod = function GetMethod(O, P) {
+ var func = O[P];
+ if (func !== null && typeof func !== 'undefined') {
+ if (!isCallable(func)) {
+ throw new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');
+ }
+ return func;
+ }
+ return void 0;
+};
+
+// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive
+module.exports = function ToPrimitive(input) {
+ if (isPrimitive(input)) {
+ return input;
+ }
+ var hint = 'default';
+ if (arguments.length > 1) {
+ if (arguments[1] === String) {
+ hint = 'string';
+ } else if (arguments[1] === Number) {
+ hint = 'number';
+ }
+ }
+
+ var exoticToPrim;
+ if (hasSymbols) {
+ if (Symbol.toPrimitive) {
+ exoticToPrim = GetMethod(input, Symbol.toPrimitive);
+ } else if (isSymbol(input)) {
+ exoticToPrim = Symbol.prototype.valueOf;
+ }
+ }
+ if (typeof exoticToPrim !== 'undefined') {
+ var result = exoticToPrim.call(input, hint);
+ if (isPrimitive(result)) {
+ return result;
+ }
+ throw new TypeError('unable to convert exotic object to primitive');
+ }
+ if (hint === 'default' && (isDate(input) || isSymbol(input))) {
+ hint = 'string';
+ }
+ return ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);
+};
diff --git a/deps/npm/node_modules/es-to-primitive/es5.js b/deps/npm/node_modules/es-to-primitive/es5.js
new file mode 100644
index 0000000000..602aa362c7
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/es5.js
@@ -0,0 +1,45 @@
+'use strict';
+
+var toStr = Object.prototype.toString;
+
+var isPrimitive = require('./helpers/isPrimitive');
+
+var isCallable = require('is-callable');
+
+// http://ecma-international.org/ecma-262/5.1/#sec-8.12.8
+var ES5internalSlots = {
+ '[[DefaultValue]]': function (O) {
+ var actualHint;
+ if (arguments.length > 1) {
+ actualHint = arguments[1];
+ } else {
+ actualHint = toStr.call(O) === '[object Date]' ? String : Number;
+ }
+
+ if (actualHint === String || actualHint === Number) {
+ var methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
+ var value, i;
+ for (i = 0; i < methods.length; ++i) {
+ if (isCallable(O[methods[i]])) {
+ value = O[methods[i]]();
+ if (isPrimitive(value)) {
+ return value;
+ }
+ }
+ }
+ throw new TypeError('No default value');
+ }
+ throw new TypeError('invalid [[DefaultValue]] hint supplied');
+ }
+};
+
+// http://ecma-international.org/ecma-262/5.1/#sec-9.1
+module.exports = function ToPrimitive(input) {
+ if (isPrimitive(input)) {
+ return input;
+ }
+ if (arguments.length > 1) {
+ return ES5internalSlots['[[DefaultValue]]'](input, arguments[1]);
+ }
+ return ES5internalSlots['[[DefaultValue]]'](input);
+};
diff --git a/deps/npm/node_modules/es-to-primitive/es6.js b/deps/npm/node_modules/es-to-primitive/es6.js
new file mode 100644
index 0000000000..2d1f4dc927
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/es6.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./es2015');
diff --git a/deps/npm/node_modules/es-to-primitive/helpers/isPrimitive.js b/deps/npm/node_modules/es-to-primitive/helpers/isPrimitive.js
new file mode 100644
index 0000000000..3669156452
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/helpers/isPrimitive.js
@@ -0,0 +1,3 @@
+module.exports = function isPrimitive(value) {
+ return value === null || (typeof value !== 'function' && typeof value !== 'object');
+};
diff --git a/deps/npm/node_modules/es-to-primitive/index.js b/deps/npm/node_modules/es-to-primitive/index.js
new file mode 100644
index 0000000000..e60d912e11
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/index.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var ES5 = require('./es5');
+var ES6 = require('./es6');
+var ES2015 = require('./es2015');
+
+if (Object.defineProperty) {
+ Object.defineProperty(ES2015, 'ES5', { enumerable: false, value: ES5 });
+ Object.defineProperty(ES2015, 'ES6', { enumerable: false, value: ES6 });
+ Object.defineProperty(ES2015, 'ES2015', { enumerable: false, value: ES2015 });
+} else {
+ ES6.ES5 = ES5;
+ ES6.ES6 = ES6;
+ ES6.ES2015 = ES2015;
+}
+
+module.exports = ES2015;
diff --git a/deps/npm/node_modules/es-to-primitive/package.json b/deps/npm/node_modules/es-to-primitive/package.json
new file mode 100644
index 0000000000..c3191f047e
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/package.json
@@ -0,0 +1,86 @@
+{
+ "name": "es-to-primitive",
+ "version": "1.2.0",
+ "author": "Jordan Harband",
+ "description": "ECMAScript “ToPrimitive” algorithm. Provides ES5 and ES2015 versions.",
+ "license": "MIT",
+ "main": "index.js",
+ "scripts": {
+ "pretest": "npm run --silent lint",
+ "test": "npm run --silent tests-only",
+ "posttest": "npm run --silent security",
+ "tests-only": "node --es-staging test",
+ "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/es-to-primitive.git"
+ },
+ "keywords": [
+ "primitive",
+ "abstract",
+ "ecmascript",
+ "es5",
+ "es6",
+ "es2015",
+ "toPrimitive",
+ "coerce",
+ "type",
+ "object",
+ "string",
+ "number",
+ "boolean",
+ "symbol",
+ "null",
+ "undefined"
+ ],
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "devDependencies": {
+ "@ljharb/eslint-config": "^13.0.0",
+ "covert": "^1.1.0",
+ "eslint": "^5.6.0",
+ "foreach": "^2.0.5",
+ "function.prototype.name": "^1.1.0",
+ "jscs": "^3.0.7",
+ "nsp": "^3.2.1",
+ "object-inspect": "^1.6.0",
+ "object-is": "^1.0.1",
+ "replace": "^1.0.0",
+ "semver": "^5.5.1",
+ "tape": "^4.9.1"
+ },
+ "testling": {
+ "files": "test",
+ "browsers": [
+ "iexplore/6.0..latest",
+ "firefox/3.0..6.0",
+ "firefox/15.0..latest",
+ "firefox/nightly",
+ "chrome/4.0..10.0",
+ "chrome/20.0..latest",
+ "chrome/canary",
+ "opera/10.0..latest",
+ "opera/next",
+ "safari/4.0..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+
+,"_resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz"
+,"_integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg=="
+,"_from": "es-to-primitive@1.2.0"
+} \ No newline at end of file
diff --git a/deps/npm/node_modules/es-to-primitive/test/.eslintrc b/deps/npm/node_modules/es-to-primitive/test/.eslintrc
new file mode 100644
index 0000000000..9beb88c752
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/test/.eslintrc
@@ -0,0 +1,9 @@
+{
+ "rules": {
+ "array-bracket-newline": 0,
+ "array-element-newline": 0,
+ "max-statements-per-line": [2, { "max": 3 }],
+ "no-magic-numbers": [0],
+ "sort-keys": [0]
+ }
+}
diff --git a/deps/npm/node_modules/es-to-primitive/test/es2015.js b/deps/npm/node_modules/es-to-primitive/test/es2015.js
new file mode 100644
index 0000000000..80f4083dd9
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/test/es2015.js
@@ -0,0 +1,151 @@
+'use strict';
+
+var test = require('tape');
+var toPrimitive = require('../es2015');
+var is = require('object-is');
+var forEach = require('foreach');
+var functionName = require('function.prototype.name');
+var debug = require('object-inspect');
+
+var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';
+var hasSymbolToPrimitive = hasSymbols && typeof Symbol.toPrimitive === 'symbol';
+
+test('function properties', function (t) {
+ t.equal(toPrimitive.length, 1, 'length is 1');
+ t.equal(functionName(toPrimitive), 'ToPrimitive', 'name is ToPrimitive');
+
+ t.end();
+});
+
+var primitives = [null, undefined, true, false, 0, -0, 42, NaN, Infinity, -Infinity, '', 'abc'];
+
+test('primitives', function (t) {
+ forEach(primitives, function (i) {
+ t.ok(is(toPrimitive(i), i), 'toPrimitive(' + debug(i) + ') returns the same value');
+ t.ok(is(toPrimitive(i, String), i), 'toPrimitive(' + debug(i) + ', String) returns the same value');
+ t.ok(is(toPrimitive(i, Number), i), 'toPrimitive(' + debug(i) + ', Number) returns the same value');
+ });
+ t.end();
+});
+
+test('Symbols', { skip: !hasSymbols }, function (t) {
+ var symbols = [
+ Symbol('foo'),
+ Symbol.iterator,
+ Symbol['for']('foo') // eslint-disable-line no-restricted-properties
+ ];
+ forEach(symbols, function (sym) {
+ t.equal(toPrimitive(sym), sym, 'toPrimitive(' + debug(sym) + ') returns the same value');
+ t.equal(toPrimitive(sym, String), sym, 'toPrimitive(' + debug(sym) + ', String) returns the same value');
+ t.equal(toPrimitive(sym, Number), sym, 'toPrimitive(' + debug(sym) + ', Number) returns the same value');
+ });
+
+ var primitiveSym = Symbol('primitiveSym');
+ var objectSym = Object(primitiveSym);
+ t.equal(toPrimitive(objectSym), primitiveSym, 'toPrimitive(' + debug(objectSym) + ') returns ' + debug(primitiveSym));
+ t.equal(toPrimitive(objectSym, String), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', String) returns ' + debug(primitiveSym));
+ t.equal(toPrimitive(objectSym, Number), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', Number) returns ' + debug(primitiveSym));
+ t.end();
+});
+
+test('Arrays', function (t) {
+ var arrays = [[], ['a', 'b'], [1, 2]];
+ forEach(arrays, function (arr) {
+ t.equal(toPrimitive(arr), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array');
+ t.equal(toPrimitive(arr, String), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array');
+ t.equal(toPrimitive(arr, Number), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array');
+ });
+ t.end();
+});
+
+test('Dates', function (t) {
+ var dates = [new Date(), new Date(0), new Date(NaN)];
+ forEach(dates, function (date) {
+ t.equal(toPrimitive(date), String(date), 'toPrimitive(' + debug(date) + ') returns the string version of the date');
+ t.equal(toPrimitive(date, String), String(date), 'toPrimitive(' + debug(date) + ') returns the string version of the date');
+ t.ok(is(toPrimitive(date, Number), Number(date)), 'toPrimitive(' + debug(date) + ') returns the number version of the date');
+ });
+ t.end();
+});
+
+var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } };
+var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } };
+var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } };
+var coercibleFnObject = {
+ valueOf: function () { return function valueOfFn() {}; },
+ toString: function () { return 42; }
+};
+var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } };
+var uncoercibleFnObject = {
+ valueOf: function () { return function valueOfFn() {}; },
+ toString: function () { return function toStrFn() {}; }
+};
+
+test('Objects', function (t) {
+ t.equal(toPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf');
+ t.equal(toPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
+ t.equal(toPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to non-stringified toString');
+
+ t.equal(toPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to non-stringified toString');
+ t.equal(toPrimitive(coercibleFnObject, Number), coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to non-stringified toString');
+ t.equal(toPrimitive(coercibleFnObject, String), coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to non-stringified toString');
+
+ t.equal(toPrimitive({}), '[object Object]', '{} with no hint coerces to Object#toString');
+ t.equal(toPrimitive({}, Number), '[object Object]', '{} with hint Number coerces to Object#toString');
+ t.equal(toPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString');
+
+ t.equal(toPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns non-stringified toString');
+ t.equal(toPrimitive(toStringOnlyObject, Number), toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns non-stringified toString');
+ t.equal(toPrimitive(toStringOnlyObject, String), toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns non-stringified toString');
+
+ t.equal(toPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
+ t.equal(toPrimitive(valueOfOnlyObject, Number), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf');
+ t.equal(toPrimitive(valueOfOnlyObject, String), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns non-stringified valueOf');
+
+ t.test('Symbol.toPrimitive', { skip: !hasSymbolToPrimitive }, function (st) {
+ var overriddenObject = { toString: st.fail, valueOf: st.fail };
+ overriddenObject[Symbol.toPrimitive] = function (hint) { return String(hint); };
+
+ st.equal(toPrimitive(overriddenObject), 'default', 'object with Symbol.toPrimitive + no hint invokes that');
+ st.equal(toPrimitive(overriddenObject, Number), 'number', 'object with Symbol.toPrimitive + hint Number invokes that');
+ st.equal(toPrimitive(overriddenObject, String), 'string', 'object with Symbol.toPrimitive + hint String invokes that');
+
+ var nullToPrimitive = { toString: coercibleObject.toString, valueOf: coercibleObject.valueOf };
+ nullToPrimitive[Symbol.toPrimitive] = null;
+ st.equal(toPrimitive(nullToPrimitive), toPrimitive(coercibleObject), 'object with no hint + null Symbol.toPrimitive ignores it');
+ st.equal(toPrimitive(nullToPrimitive, Number), toPrimitive(coercibleObject, Number), 'object with hint Number + null Symbol.toPrimitive ignores it');
+ st.equal(toPrimitive(nullToPrimitive, String), toPrimitive(coercibleObject, String), 'object with hint String + null Symbol.toPrimitive ignores it');
+
+ st.test('exceptions', function (sst) {
+ var nonFunctionToPrimitive = { toString: sst.fail, valueOf: sst.fail };
+ nonFunctionToPrimitive[Symbol.toPrimitive] = {};
+ sst['throws'](toPrimitive.bind(null, nonFunctionToPrimitive), TypeError, 'Symbol.toPrimitive returning a non-function throws');
+
+ var uncoercibleToPrimitive = { toString: sst.fail, valueOf: sst.fail };
+ uncoercibleToPrimitive[Symbol.toPrimitive] = function (hint) {
+ return { toString: function () { return hint; } };
+ };
+ sst['throws'](toPrimitive.bind(null, uncoercibleToPrimitive), TypeError, 'Symbol.toPrimitive returning an object throws');
+
+ var throwingToPrimitive = { toString: sst.fail, valueOf: sst.fail };
+ throwingToPrimitive[Symbol.toPrimitive] = function (hint) { throw new RangeError(hint); };
+ sst['throws'](toPrimitive.bind(null, throwingToPrimitive), RangeError, 'Symbol.toPrimitive throwing throws');
+
+ sst.end();
+ });
+
+ st.end();
+ });
+
+ t.test('exceptions', function (st) {
+ st['throws'](toPrimitive.bind(null, uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError');
+
+ st['throws'](toPrimitive.bind(null, uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError');
+ st.end();
+ });
+ t.end();
+});
diff --git a/deps/npm/node_modules/es-to-primitive/test/es5.js b/deps/npm/node_modules/es-to-primitive/test/es5.js
new file mode 100644
index 0000000000..8b80ff5bd9
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/test/es5.js
@@ -0,0 +1,94 @@
+'use strict';
+
+var test = require('tape');
+var toPrimitive = require('../es5');
+var is = require('object-is');
+var forEach = require('foreach');
+var functionName = require('function.prototype.name');
+var debug = require('object-inspect');
+
+test('function properties', function (t) {
+ t.equal(toPrimitive.length, 1, 'length is 1');
+ t.equal(functionName(toPrimitive), 'ToPrimitive', 'name is ToPrimitive');
+
+ t.end();
+});
+
+var primitives = [null, undefined, true, false, 0, -0, 42, NaN, Infinity, -Infinity, '', 'abc'];
+
+test('primitives', function (t) {
+ forEach(primitives, function (i) {
+ t.ok(is(toPrimitive(i), i), 'toPrimitive(' + debug(i) + ') returns the same value');
+ t.ok(is(toPrimitive(i, String), i), 'toPrimitive(' + debug(i) + ', String) returns the same value');
+ t.ok(is(toPrimitive(i, Number), i), 'toPrimitive(' + debug(i) + ', Number) returns the same value');
+ });
+ t.end();
+});
+
+test('Arrays', function (t) {
+ var arrays = [[], ['a', 'b'], [1, 2]];
+ forEach(arrays, function (arr) {
+ t.ok(is(toPrimitive(arr), arr.toString()), 'toPrimitive(' + debug(arr) + ') returns toString of the array');
+ t.equal(toPrimitive(arr, String), arr.toString(), 'toPrimitive(' + debug(arr) + ') returns toString of the array');
+ t.ok(is(toPrimitive(arr, Number), arr.toString()), 'toPrimitive(' + debug(arr) + ') returns toString of the array');
+ });
+ t.end();
+});
+
+test('Dates', function (t) {
+ var dates = [new Date(), new Date(0), new Date(NaN)];
+ forEach(dates, function (date) {
+ t.equal(toPrimitive(date), date.toString(), 'toPrimitive(' + debug(date) + ') returns toString of the date');
+ t.equal(toPrimitive(date, String), date.toString(), 'toPrimitive(' + debug(date) + ') returns toString of the date');
+ t.ok(is(toPrimitive(date, Number), date.valueOf()), 'toPrimitive(' + debug(date) + ') returns valueOf of the date');
+ });
+ t.end();
+});
+
+var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } };
+var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } };
+var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } };
+var coercibleFnObject = {
+ valueOf: function () { return function valueOfFn() {}; },
+ toString: function () { return 42; }
+};
+var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } };
+var uncoercibleFnObject = {
+ valueOf: function () { return function valueOfFn() {}; },
+ toString: function () { return function toStrFn() {}; }
+};
+
+test('Objects', function (t) {
+ t.equal(toPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf');
+ t.equal(toPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to toString');
+ t.equal(toPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
+
+ t.equal(toPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to toString');
+ t.equal(toPrimitive(coercibleFnObject, String), coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to toString');
+ t.equal(toPrimitive(coercibleFnObject, Number), coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to toString');
+
+ t.ok(is(toPrimitive({}), '[object Object]'), '{} with no hint coerces to Object#toString');
+ t.equal(toPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString');
+ t.ok(is(toPrimitive({}, Number), '[object Object]'), '{} with hint Number coerces to Object#toString');
+
+ t.equal(toPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns toString');
+ t.equal(toPrimitive(toStringOnlyObject, String), toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns toString');
+ t.equal(toPrimitive(toStringOnlyObject, Number), toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns toString');
+
+ t.equal(toPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
+ t.equal(toPrimitive(valueOfOnlyObject, String), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns valueOf');
+ t.equal(toPrimitive(valueOfOnlyObject, Number), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf');
+
+ t.test('exceptions', function (st) {
+ st['throws'](toPrimitive.bind(null, uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError');
+
+ st['throws'](toPrimitive.bind(null, uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError');
+ st.end();
+ });
+
+ t.end();
+});
diff --git a/deps/npm/node_modules/es-to-primitive/test/es6.js b/deps/npm/node_modules/es-to-primitive/test/es6.js
new file mode 100644
index 0000000000..c6df63fb6d
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/test/es6.js
@@ -0,0 +1,151 @@
+'use strict';
+
+var test = require('tape');
+var toPrimitive = require('../es6');
+var is = require('object-is');
+var forEach = require('foreach');
+var functionName = require('function.prototype.name');
+var debug = require('object-inspect');
+
+var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';
+var hasSymbolToPrimitive = hasSymbols && typeof Symbol.toPrimitive === 'symbol';
+
+test('function properties', function (t) {
+ t.equal(toPrimitive.length, 1, 'length is 1');
+ t.equal(functionName(toPrimitive), 'ToPrimitive', 'name is ToPrimitive');
+
+ t.end();
+});
+
+var primitives = [null, undefined, true, false, 0, -0, 42, NaN, Infinity, -Infinity, '', 'abc'];
+
+test('primitives', function (t) {
+ forEach(primitives, function (i) {
+ t.ok(is(toPrimitive(i), i), 'toPrimitive(' + debug(i) + ') returns the same value');
+ t.ok(is(toPrimitive(i, String), i), 'toPrimitive(' + debug(i) + ', String) returns the same value');
+ t.ok(is(toPrimitive(i, Number), i), 'toPrimitive(' + debug(i) + ', Number) returns the same value');
+ });
+ t.end();
+});
+
+test('Symbols', { skip: !hasSymbols }, function (t) {
+ var symbols = [
+ Symbol('foo'),
+ Symbol.iterator,
+ Symbol['for']('foo') // eslint-disable-line no-restricted-properties
+ ];
+ forEach(symbols, function (sym) {
+ t.equal(toPrimitive(sym), sym, 'toPrimitive(' + debug(sym) + ') returns the same value');
+ t.equal(toPrimitive(sym, String), sym, 'toPrimitive(' + debug(sym) + ', String) returns the same value');
+ t.equal(toPrimitive(sym, Number), sym, 'toPrimitive(' + debug(sym) + ', Number) returns the same value');
+ });
+
+ var primitiveSym = Symbol('primitiveSym');
+ var objectSym = Object(primitiveSym);
+ t.equal(toPrimitive(objectSym), primitiveSym, 'toPrimitive(' + debug(objectSym) + ') returns ' + debug(primitiveSym));
+ t.equal(toPrimitive(objectSym, String), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', String) returns ' + debug(primitiveSym));
+ t.equal(toPrimitive(objectSym, Number), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', Number) returns ' + debug(primitiveSym));
+ t.end();
+});
+
+test('Arrays', function (t) {
+ var arrays = [[], ['a', 'b'], [1, 2]];
+ forEach(arrays, function (arr) {
+ t.equal(toPrimitive(arr), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array');
+ t.equal(toPrimitive(arr, String), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array');
+ t.equal(toPrimitive(arr, Number), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array');
+ });
+ t.end();
+});
+
+test('Dates', function (t) {
+ var dates = [new Date(), new Date(0), new Date(NaN)];
+ forEach(dates, function (date) {
+ t.equal(toPrimitive(date), String(date), 'toPrimitive(' + debug(date) + ') returns the string version of the date');
+ t.equal(toPrimitive(date, String), String(date), 'toPrimitive(' + debug(date) + ') returns the string version of the date');
+ t.ok(is(toPrimitive(date, Number), Number(date)), 'toPrimitive(' + debug(date) + ') returns the number version of the date');
+ });
+ t.end();
+});
+
+var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } };
+var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } };
+var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } };
+var coercibleFnObject = {
+ valueOf: function () { return function valueOfFn() {}; },
+ toString: function () { return 42; }
+};
+var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } };
+var uncoercibleFnObject = {
+ valueOf: function () { return function valueOfFn() {}; },
+ toString: function () { return function toStrFn() {}; }
+};
+
+test('Objects', function (t) {
+ t.equal(toPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf');
+ t.equal(toPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
+ t.equal(toPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to non-stringified toString');
+
+ t.equal(toPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to non-stringified toString');
+ t.equal(toPrimitive(coercibleFnObject, Number), coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to non-stringified toString');
+ t.equal(toPrimitive(coercibleFnObject, String), coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to non-stringified toString');
+
+ t.equal(toPrimitive({}), '[object Object]', '{} with no hint coerces to Object#toString');
+ t.equal(toPrimitive({}, Number), '[object Object]', '{} with hint Number coerces to Object#toString');
+ t.equal(toPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString');
+
+ t.equal(toPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns non-stringified toString');
+ t.equal(toPrimitive(toStringOnlyObject, Number), toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns non-stringified toString');
+ t.equal(toPrimitive(toStringOnlyObject, String), toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns non-stringified toString');
+
+ t.equal(toPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
+ t.equal(toPrimitive(valueOfOnlyObject, Number), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf');
+ t.equal(toPrimitive(valueOfOnlyObject, String), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns non-stringified valueOf');
+
+ t.test('Symbol.toPrimitive', { skip: !hasSymbolToPrimitive }, function (st) {
+ var overriddenObject = { toString: st.fail, valueOf: st.fail };
+ overriddenObject[Symbol.toPrimitive] = function (hint) { return String(hint); };
+
+ st.equal(toPrimitive(overriddenObject), 'default', 'object with Symbol.toPrimitive + no hint invokes that');
+ st.equal(toPrimitive(overriddenObject, Number), 'number', 'object with Symbol.toPrimitive + hint Number invokes that');
+ st.equal(toPrimitive(overriddenObject, String), 'string', 'object with Symbol.toPrimitive + hint String invokes that');
+
+ var nullToPrimitive = { toString: coercibleObject.toString, valueOf: coercibleObject.valueOf };
+ nullToPrimitive[Symbol.toPrimitive] = null;
+ st.equal(toPrimitive(nullToPrimitive), toPrimitive(coercibleObject), 'object with no hint + null Symbol.toPrimitive ignores it');
+ st.equal(toPrimitive(nullToPrimitive, Number), toPrimitive(coercibleObject, Number), 'object with hint Number + null Symbol.toPrimitive ignores it');
+ st.equal(toPrimitive(nullToPrimitive, String), toPrimitive(coercibleObject, String), 'object with hint String + null Symbol.toPrimitive ignores it');
+
+ st.test('exceptions', function (sst) {
+ var nonFunctionToPrimitive = { toString: sst.fail, valueOf: sst.fail };
+ nonFunctionToPrimitive[Symbol.toPrimitive] = {};
+ sst['throws'](toPrimitive.bind(null, nonFunctionToPrimitive), TypeError, 'Symbol.toPrimitive returning a non-function throws');
+
+ var uncoercibleToPrimitive = { toString: sst.fail, valueOf: sst.fail };
+ uncoercibleToPrimitive[Symbol.toPrimitive] = function (hint) {
+ return { toString: function () { return hint; } };
+ };
+ sst['throws'](toPrimitive.bind(null, uncoercibleToPrimitive), TypeError, 'Symbol.toPrimitive returning an object throws');
+
+ var throwingToPrimitive = { toString: sst.fail, valueOf: sst.fail };
+ throwingToPrimitive[Symbol.toPrimitive] = function (hint) { throw new RangeError(hint); };
+ sst['throws'](toPrimitive.bind(null, throwingToPrimitive), RangeError, 'Symbol.toPrimitive throwing throws');
+
+ sst.end();
+ });
+
+ st.end();
+ });
+
+ t.test('exceptions', function (st) {
+ st['throws'](toPrimitive.bind(null, uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError');
+
+ st['throws'](toPrimitive.bind(null, uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError');
+ st['throws'](toPrimitive.bind(null, uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError');
+ st.end();
+ });
+ t.end();
+});
diff --git a/deps/npm/node_modules/es-to-primitive/test/index.js b/deps/npm/node_modules/es-to-primitive/test/index.js
new file mode 100644
index 0000000000..ad71f39e25
--- /dev/null
+++ b/deps/npm/node_modules/es-to-primitive/test/index.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var toPrimitive = require('../');
+var ES5 = require('../es5');
+var ES6 = require('../es6');
+var ES2015 = require('../es2015');
+
+var test = require('tape');
+
+test('default export', function (t) {
+ t.equal(toPrimitive, ES2015, 'default export is ES2015');
+ t.equal(toPrimitive.ES5, ES5, 'ES5 property has ES5 method');
+ t.equal(toPrimitive.ES6, ES6, 'ES6 property has ES6 method');
+ t.equal(toPrimitive.ES2015, ES2015, 'ES2015 property has ES2015 method');
+ t.end();
+});
+
+require('./es5');
+require('./es6');
+require('./es2015');