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/object-inspect')
-rw-r--r--node_modules/object-inspect/.eslintignore1
-rw-r--r--node_modules/object-inspect/.github/workflows/rebase.yml15
-rw-r--r--node_modules/object-inspect/.nycrc17
-rw-r--r--node_modules/object-inspect/.travis.yml53
-rw-r--r--node_modules/object-inspect/LICENSE21
-rw-r--r--node_modules/object-inspect/example/all.js23
-rw-r--r--node_modules/object-inspect/example/circular.js6
-rw-r--r--node_modules/object-inspect/example/fn.js5
-rw-r--r--node_modules/object-inspect/example/inspect.js10
-rw-r--r--node_modules/object-inspect/index.js383
-rw-r--r--node_modules/object-inspect/package.json101
-rw-r--r--node_modules/object-inspect/readme.markdown62
-rw-r--r--node_modules/object-inspect/test-core-js.js26
-rw-r--r--node_modules/object-inspect/test/bigint.js31
-rw-r--r--node_modules/object-inspect/test/browser/dom.js15
-rw-r--r--node_modules/object-inspect/test/circular.js9
-rw-r--r--node_modules/object-inspect/test/deep.js9
-rw-r--r--node_modules/object-inspect/test/element.js53
-rw-r--r--node_modules/object-inspect/test/err.js31
-rw-r--r--node_modules/object-inspect/test/fn.js28
-rw-r--r--node_modules/object-inspect/test/has.js34
-rw-r--r--node_modules/object-inspect/test/holes.js15
-rw-r--r--node_modules/object-inspect/test/indent-option.js271
-rw-r--r--node_modules/object-inspect/test/inspect.js35
-rw-r--r--node_modules/object-inspect/test/lowbyte.js12
-rw-r--r--node_modules/object-inspect/test/number.js12
-rw-r--r--node_modules/object-inspect/test/quoteStyle.js17
-rw-r--r--node_modules/object-inspect/test/undef.js12
-rw-r--r--node_modules/object-inspect/test/values.js171
-rw-r--r--node_modules/object-inspect/util.inspect.js1
30 files changed, 1479 insertions, 0 deletions
diff --git a/node_modules/object-inspect/.eslintignore b/node_modules/object-inspect/.eslintignore
new file mode 100644
index 000000000..404abb221
--- /dev/null
+++ b/node_modules/object-inspect/.eslintignore
@@ -0,0 +1 @@
+coverage/
diff --git a/node_modules/object-inspect/.github/workflows/rebase.yml b/node_modules/object-inspect/.github/workflows/rebase.yml
new file mode 100644
index 000000000..436cb79dc
--- /dev/null
+++ b/node_modules/object-inspect/.github/workflows/rebase.yml
@@ -0,0 +1,15 @@
+name: Automatic Rebase
+
+on: [pull_request]
+
+jobs:
+ _:
+ name: "Automatic Rebase"
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v1
+ - uses: ljharb/rebase@master
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/node_modules/object-inspect/.nycrc b/node_modules/object-inspect/.nycrc
new file mode 100644
index 000000000..84c1894c6
--- /dev/null
+++ b/node_modules/object-inspect/.nycrc
@@ -0,0 +1,17 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "instrumentation": false,
+ "sourceMap": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "lines": 93,
+ "statements": 93,
+ "functions": 96,
+ "branches": 89,
+ "exclude": [
+ "coverage",
+ "example",
+ "test",
+ "test-core-js.js"
+ ]
+}
diff --git a/node_modules/object-inspect/.travis.yml b/node_modules/object-inspect/.travis.yml
new file mode 100644
index 000000000..79ccccc63
--- /dev/null
+++ b/node_modules/object-inspect/.travis.yml
@@ -0,0 +1,53 @@
+version: ~> 1.0
+language: node_js
+os:
+ - linux
+import:
+ - ljharb/travis-ci:node/all.yml
+ - ljharb/travis-ci:node/pretest.yml
+ - ljharb/travis-ci:node/posttest.yml
+script:
+ - 'if [ -n "${COVERAGE-}" ]; then npm run coverage && bash <(curl -s https://codecov.io/bash) -f coverage/*.json; fi'
+matrix:
+ include:
+ - node_js: "13.7"
+ env: COVERAGE=true
+ - node_js: "12.14"
+ env: COVERAGE=true
+ - node_js: "10.18"
+ env: COVERAGE=true
+ - node_js: "8.17"
+ env: COVERAGE=true
+ - node_js: "6.17"
+ env: COVERAGE=true
+ - node_js: "4.9"
+ env: COVERAGE=true
+ - node_js: "iojs-v1.8"
+ env: COVERAGE=true
+ - node_js: "0.12"
+ env: COVERAGE=true
+ - node_js: "0.10"
+ env: COVERAGE=true
+ - node_js: "0.8"
+ env: COVERAGE=true
+ exclude:
+ - node_js: "13.7"
+ env: TEST=true
+ - node_js: "12.14"
+ env: TEST=true
+ - node_js: "10.18"
+ env: TEST=true
+ - node_js: "8.17"
+ env: TEST=true
+ - node_js: "6.17"
+ env: TEST=true
+ - node_js: "4.9"
+ env: TEST=true
+ - node_js: "iojs-v1.8"
+ env: TEST=true
+ - node_js: "0.12"
+ env: TEST=true
+ - node_js: "0.10"
+ env: TEST=true
+ - node_js: "0.8"
+ env: TEST=true
diff --git a/node_modules/object-inspect/LICENSE b/node_modules/object-inspect/LICENSE
new file mode 100644
index 000000000..ca64cc1e6
--- /dev/null
+++ b/node_modules/object-inspect/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2013 James Halliday
+
+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-inspect/example/all.js b/node_modules/object-inspect/example/all.js
new file mode 100644
index 000000000..2f3355c50
--- /dev/null
+++ b/node_modules/object-inspect/example/all.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var inspect = require('../');
+var Buffer = require('safer-buffer').Buffer;
+
+var holes = ['a', 'b'];
+holes[4] = 'e';
+holes[6] = 'g';
+
+var obj = {
+ a: 1,
+ b: [3, 4, undefined, null],
+ c: undefined,
+ d: null,
+ e: {
+ regex: /^x/i,
+ buf: Buffer.from('abc'),
+ holes: holes
+ },
+ now: new Date()
+};
+obj.self = obj;
+console.log(inspect(obj));
diff --git a/node_modules/object-inspect/example/circular.js b/node_modules/object-inspect/example/circular.js
new file mode 100644
index 000000000..487a7c169
--- /dev/null
+++ b/node_modules/object-inspect/example/circular.js
@@ -0,0 +1,6 @@
+'use strict';
+
+var inspect = require('../');
+var obj = { a: 1, b: [3, 4] };
+obj.c = obj;
+console.log(inspect(obj));
diff --git a/node_modules/object-inspect/example/fn.js b/node_modules/object-inspect/example/fn.js
new file mode 100644
index 000000000..9b5db8de0
--- /dev/null
+++ b/node_modules/object-inspect/example/fn.js
@@ -0,0 +1,5 @@
+'use strict';
+
+var inspect = require('../');
+var obj = [1, 2, function f(n) { return n + 5; }, 4];
+console.log(inspect(obj));
diff --git a/node_modules/object-inspect/example/inspect.js b/node_modules/object-inspect/example/inspect.js
new file mode 100644
index 000000000..e2df7c9f4
--- /dev/null
+++ b/node_modules/object-inspect/example/inspect.js
@@ -0,0 +1,10 @@
+'use strict';
+
+/* eslint-env browser */
+var inspect = require('../');
+
+var d = document.createElement('div');
+d.setAttribute('id', 'beep');
+d.innerHTML = '<b>wooo</b><i>iiiii</i>';
+
+console.log(inspect([d, { a: 3, b: 4, c: [5, 6, [7, [8, [9]]]] }]));
diff --git a/node_modules/object-inspect/index.js b/node_modules/object-inspect/index.js
new file mode 100644
index 000000000..61176bb7f
--- /dev/null
+++ b/node_modules/object-inspect/index.js
@@ -0,0 +1,383 @@
+var hasMap = typeof Map === 'function' && Map.prototype;
+var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;
+var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;
+var mapForEach = hasMap && Map.prototype.forEach;
+var hasSet = typeof Set === 'function' && Set.prototype;
+var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;
+var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;
+var setForEach = hasSet && Set.prototype.forEach;
+var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;
+var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;
+var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;
+var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;
+var booleanValueOf = Boolean.prototype.valueOf;
+var objectToString = Object.prototype.toString;
+var functionToString = Function.prototype.toString;
+var match = String.prototype.match;
+var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;
+
+var inspectCustom = require('./util.inspect').custom;
+var inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;
+
+module.exports = function inspect_(obj, options, depth, seen) {
+ var opts = options || {};
+
+ if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {
+ throw new TypeError('option "quoteStyle" must be "single" or "double"');
+ }
+ if (
+ has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'
+ ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity
+ : opts.maxStringLength !== null
+ )
+ ) {
+ throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');
+ }
+ var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;
+ if (typeof customInspect !== 'boolean') {
+ throw new TypeError('option "customInspect", if provided, must be `true` or `false`');
+ }
+
+ if (
+ has(opts, 'indent')
+ && opts.indent !== null
+ && opts.indent !== '\t'
+ && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)
+ ) {
+ throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');
+ }
+
+ if (typeof obj === 'undefined') {
+ return 'undefined';
+ }
+ if (obj === null) {
+ return 'null';
+ }
+ if (typeof obj === 'boolean') {
+ return obj ? 'true' : 'false';
+ }
+
+ if (typeof obj === 'string') {
+ return inspectString(obj, opts);
+ }
+ if (typeof obj === 'number') {
+ if (obj === 0) {
+ return Infinity / obj > 0 ? '0' : '-0';
+ }
+ return String(obj);
+ }
+ if (typeof obj === 'bigint') { // eslint-disable-line valid-typeof
+ return String(obj) + 'n';
+ }
+
+ var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;
+ if (typeof depth === 'undefined') { depth = 0; }
+ if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {
+ return isArray(obj) ? '[Array]' : '[Object]';
+ }
+
+ var indent = getIndent(opts, depth);
+
+ if (typeof seen === 'undefined') {
+ seen = [];
+ } else if (indexOf(seen, obj) >= 0) {
+ return '[Circular]';
+ }
+
+ function inspect(value, from, noIndent) {
+ if (from) {
+ seen = seen.slice();
+ seen.push(from);
+ }
+ if (noIndent) {
+ var newOpts = {
+ depth: opts.depth
+ };
+ if (has(opts, 'quoteStyle')) {
+ newOpts.quoteStyle = opts.quoteStyle;
+ }
+ return inspect_(value, newOpts, depth + 1, seen);
+ }
+ return inspect_(value, opts, depth + 1, seen);
+ }
+
+ if (typeof obj === 'function') {
+ var name = nameOf(obj);
+ return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']';
+ }
+ if (isSymbol(obj)) {
+ var symString = Symbol.prototype.toString.call(obj);
+ return typeof obj === 'object' ? markBoxed(symString) : symString;
+ }
+ if (isElement(obj)) {
+ var s = '<' + String(obj.nodeName).toLowerCase();
+ var attrs = obj.attributes || [];
+ for (var i = 0; i < attrs.length; i++) {
+ s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);
+ }
+ s += '>';
+ if (obj.childNodes && obj.childNodes.length) { s += '...'; }
+ s += '</' + String(obj.nodeName).toLowerCase() + '>';
+ return s;
+ }
+ if (isArray(obj)) {
+ if (obj.length === 0) { return '[]'; }
+ var xs = arrObjKeys(obj, inspect);
+ if (indent && !singleLineValues(xs)) {
+ return '[' + indentedJoin(xs, indent) + ']';
+ }
+ return '[ ' + xs.join(', ') + ' ]';
+ }
+ if (isError(obj)) {
+ var parts = arrObjKeys(obj, inspect);
+ if (parts.length === 0) { return '[' + String(obj) + ']'; }
+ return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';
+ }
+ if (typeof obj === 'object' && customInspect) {
+ if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {
+ return obj[inspectSymbol]();
+ } else if (typeof obj.inspect === 'function') {
+ return obj.inspect();
+ }
+ }
+ if (isMap(obj)) {
+ var mapParts = [];
+ mapForEach.call(obj, function (value, key) {
+ mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));
+ });
+ return collectionOf('Map', mapSize.call(obj), mapParts, indent);
+ }
+ if (isSet(obj)) {
+ var setParts = [];
+ setForEach.call(obj, function (value) {
+ setParts.push(inspect(value, obj));
+ });
+ return collectionOf('Set', setSize.call(obj), setParts, indent);
+ }
+ if (isWeakMap(obj)) {
+ return weakCollectionOf('WeakMap');
+ }
+ if (isWeakSet(obj)) {
+ return weakCollectionOf('WeakSet');
+ }
+ if (isNumber(obj)) {
+ return markBoxed(inspect(Number(obj)));
+ }
+ if (isBigInt(obj)) {
+ return markBoxed(inspect(bigIntValueOf.call(obj)));
+ }
+ if (isBoolean(obj)) {
+ return markBoxed(booleanValueOf.call(obj));
+ }
+ if (isString(obj)) {
+ return markBoxed(inspect(String(obj)));
+ }
+ if (!isDate(obj) && !isRegExp(obj)) {
+ var ys = arrObjKeys(obj, inspect);
+ if (ys.length === 0) { return '{}'; }
+ if (indent) {
+ return '{' + indentedJoin(ys, indent) + '}';
+ }
+ return '{ ' + ys.join(', ') + ' }';
+ }
+ return String(obj);
+};
+
+function wrapQuotes(s, defaultStyle, opts) {
+ var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'";
+ return quoteChar + s + quoteChar;
+}
+
+function quote(s) {
+ return String(s).replace(/"/g, '&quot;');
+}
+
+function isArray(obj) { return toStr(obj) === '[object Array]'; }
+function isDate(obj) { return toStr(obj) === '[object Date]'; }
+function isRegExp(obj) { return toStr(obj) === '[object RegExp]'; }
+function isError(obj) { return toStr(obj) === '[object Error]'; }
+function isSymbol(obj) { return toStr(obj) === '[object Symbol]'; }
+function isString(obj) { return toStr(obj) === '[object String]'; }
+function isNumber(obj) { return toStr(obj) === '[object Number]'; }
+function isBigInt(obj) { return toStr(obj) === '[object BigInt]'; }
+function isBoolean(obj) { return toStr(obj) === '[object Boolean]'; }
+
+var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };
+function has(obj, key) {
+ return hasOwn.call(obj, key);
+}
+
+function toStr(obj) {
+ return objectToString.call(obj);
+}
+
+function nameOf(f) {
+ if (f.name) { return f.name; }
+ var m = match.call(functionToString.call(f), /^function\s*([\w$]+)/);
+ if (m) { return m[1]; }
+ return null;
+}
+
+function indexOf(xs, x) {
+ if (xs.indexOf) { return xs.indexOf(x); }
+ for (var i = 0, l = xs.length; i < l; i++) {
+ if (xs[i] === x) { return i; }
+ }
+ return -1;
+}
+
+function isMap(x) {
+ if (!mapSize || !x || typeof x !== 'object') {
+ return false;
+ }
+ try {
+ mapSize.call(x);
+ try {
+ setSize.call(x);
+ } catch (s) {
+ return true;
+ }
+ return x instanceof Map; // core-js workaround, pre-v2.5.0
+ } catch (e) {}
+ return false;
+}
+
+function isWeakMap(x) {
+ if (!weakMapHas || !x || typeof x !== 'object') {
+ return false;
+ }
+ try {
+ weakMapHas.call(x, weakMapHas);
+ try {
+ weakSetHas.call(x, weakSetHas);
+ } catch (s) {
+ return true;
+ }
+ return x instanceof WeakMap; // core-js workaround, pre-v2.5.0
+ } catch (e) {}
+ return false;
+}
+
+function isSet(x) {
+ if (!setSize || !x || typeof x !== 'object') {
+ return false;
+ }
+ try {
+ setSize.call(x);
+ try {
+ mapSize.call(x);
+ } catch (m) {
+ return true;
+ }
+ return x instanceof Set; // core-js workaround, pre-v2.5.0
+ } catch (e) {}
+ return false;
+}
+
+function isWeakSet(x) {
+ if (!weakSetHas || !x || typeof x !== 'object') {
+ return false;
+ }
+ try {
+ weakSetHas.call(x, weakSetHas);
+ try {
+ weakMapHas.call(x, weakMapHas);
+ } catch (s) {
+ return true;
+ }
+ return x instanceof WeakSet; // core-js workaround, pre-v2.5.0
+ } catch (e) {}
+ return false;
+}
+
+function isElement(x) {
+ if (!x || typeof x !== 'object') { return false; }
+ if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {
+ return true;
+ }
+ return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';
+}
+
+function inspectString(str, opts) {
+ if (str.length > opts.maxStringLength) {
+ var remaining = str.length - opts.maxStringLength;
+ var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');
+ return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;
+ }
+ // eslint-disable-next-line no-control-regex
+ var s = str.replace(/(['\\])/g, '\\$1').replace(/[\x00-\x1f]/g, lowbyte);
+ return wrapQuotes(s, 'single', opts);
+}
+
+function lowbyte(c) {
+ var n = c.charCodeAt(0);
+ var x = {
+ 8: 'b', 9: 't', 10: 'n', 12: 'f', 13: 'r'
+ }[n];
+ if (x) { return '\\' + x; }
+ return '\\x' + (n < 0x10 ? '0' : '') + n.toString(16);
+}
+
+function markBoxed(str) {
+ return 'Object(' + str + ')';
+}
+
+function weakCollectionOf(type) {
+ return type + ' { ? }';
+}
+
+function collectionOf(type, size, entries, indent) {
+ var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');
+ return type + ' (' + size + ') {' + joinedEntries + '}';
+}
+
+function singleLineValues(xs) {
+ for (var i = 0; i < xs.length; i++) {
+ if (indexOf(xs[i], '\n') >= 0) {
+ return false;
+ }
+ }
+ return true;
+}
+
+function getIndent(opts, depth) {
+ var baseIndent;
+ if (opts.indent === '\t') {
+ baseIndent = '\t';
+ } else if (typeof opts.indent === 'number' && opts.indent > 0) {
+ baseIndent = Array(opts.indent + 1).join(' ');
+ } else {
+ return null;
+ }
+ return {
+ base: baseIndent,
+ prev: Array(depth + 1).join(baseIndent)
+ };
+}
+
+function indentedJoin(xs, indent) {
+ if (xs.length === 0) { return ''; }
+ var lineJoiner = '\n' + indent.prev + indent.base;
+ return lineJoiner + xs.join(',' + lineJoiner) + '\n' + indent.prev;
+}
+
+function arrObjKeys(obj, inspect) {
+ var isArr = isArray(obj);
+ var xs = [];
+ if (isArr) {
+ xs.length = obj.length;
+ for (var i = 0; i < obj.length; i++) {
+ xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';
+ }
+ }
+ for (var key in obj) { // eslint-disable-line no-restricted-syntax
+ if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
+ if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
+ if ((/[^\w$]/).test(key)) {
+ xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
+ } else {
+ xs.push(key + ': ' + inspect(obj[key], obj));
+ }
+ }
+ return xs;
+}
diff --git a/node_modules/object-inspect/package.json b/node_modules/object-inspect/package.json
new file mode 100644
index 000000000..11f263d60
--- /dev/null
+++ b/node_modules/object-inspect/package.json
@@ -0,0 +1,101 @@
+{
+ "_from": "object-inspect@^1.7.0",
+ "_id": "object-inspect@1.8.0",
+ "_inBundle": false,
+ "_integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
+ "_location": "/object-inspect",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "object-inspect@^1.7.0",
+ "name": "object-inspect",
+ "escapedName": "object-inspect",
+ "rawSpec": "^1.7.0",
+ "saveSpec": null,
+ "fetchSpec": "^1.7.0"
+ },
+ "_requiredBy": [
+ "/es-abstract"
+ ],
+ "_resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
+ "_shasum": "df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0",
+ "_spec": "object-inspect@^1.7.0",
+ "_where": "/Users/isaacs/dev/npm/cli/node_modules/es-abstract",
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "browser": {
+ "./util.inspect.js": false
+ },
+ "bugs": {
+ "url": "https://github.com/inspect-js/object-inspect/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "string representations of objects in node and the browser",
+ "devDependencies": {
+ "@ljharb/eslint-config": "^17.1.0",
+ "aud": "^1.1.2",
+ "core-js": "^2.6.11",
+ "eslint": "^7.1.0",
+ "for-each": "^0.3.3",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^1.1.4",
+ "string.prototype.repeat": "^1.0.0",
+ "tape": "^5.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "greenkeeper": {
+ "ignore": [
+ "nyc",
+ "core-js"
+ ]
+ },
+ "homepage": "https://github.com/inspect-js/object-inspect",
+ "keywords": [
+ "inspect",
+ "util.inspect",
+ "object",
+ "stringify",
+ "pretty"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "name": "object-inspect",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/inspect-js/object-inspect.git"
+ },
+ "scripts": {
+ "coverage": "nyc npm run tests-only",
+ "lint": "eslint .",
+ "posttest": "npx aud --production",
+ "prepublish": "safe-publish-latest",
+ "pretest": "npm run lint",
+ "pretests-only": "node test-core-js",
+ "test": "npm run tests-only",
+ "tests-only": "tape test/*.js"
+ },
+ "testling": {
+ "files": [
+ "test/*.js",
+ "test/browser/*.js"
+ ],
+ "browsers": [
+ "ie/6..latest",
+ "chrome/latest",
+ "firefox/latest",
+ "safari/latest",
+ "opera/latest",
+ "iphone/latest",
+ "ipad/latest",
+ "android/latest"
+ ]
+ },
+ "version": "1.8.0"
+}
diff --git a/node_modules/object-inspect/readme.markdown b/node_modules/object-inspect/readme.markdown
new file mode 100644
index 000000000..61ec8e05d
--- /dev/null
+++ b/node_modules/object-inspect/readme.markdown
@@ -0,0 +1,62 @@
+# object-inspect
+
+string representations of objects in node and the browser
+
+[![build status](https://secure.travis-ci.com/inspect-js/object-inspect.png)](https://travis-ci.com/inspect-js/object-inspect)
+
+# example
+
+## circular
+
+``` js
+var inspect = require('object-inspect');
+var obj = { a: 1, b: [3,4] };
+obj.c = obj;
+console.log(inspect(obj));
+```
+
+## dom element
+
+``` js
+var inspect = require('object-inspect');
+
+var d = document.createElement('div');
+d.setAttribute('id', 'beep');
+d.innerHTML = '<b>wooo</b><i>iiiii</i>';
+
+console.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ]));
+```
+
+output:
+
+```
+[ <div id="beep">...</div>, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [ ... ] ] ] ] } ]
+```
+
+# methods
+
+``` js
+var inspect = require('object-inspect')
+```
+
+## var s = inspect(obj, opts={})
+
+Return a string `s` with the string representation of `obj` up to a depth of `opts.depth`.
+
+Additional options:
+ - `quoteStyle`: must be "single" or "double", if present. Default `'single'` for strings, `'double'` for HTML elements.
+ - `maxStringLength`: must be `0`, a positive integer, `Infinity`, or `null`, if present. Default `Infinity`.
+ - `customInspect`: When `true`, a custom inspect method function will be invoked. Default `true`.
+ - `indent`: must be "\t", `null`, or a positive integer. Default `null`.
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```
+npm install object-inspect
+```
+
+# license
+
+MIT
diff --git a/node_modules/object-inspect/test-core-js.js b/node_modules/object-inspect/test-core-js.js
new file mode 100644
index 000000000..e53c40022
--- /dev/null
+++ b/node_modules/object-inspect/test-core-js.js
@@ -0,0 +1,26 @@
+'use strict';
+
+require('core-js');
+
+var inspect = require('./');
+var test = require('tape');
+
+test('Maps', function (t) {
+ t.equal(inspect(new Map([[1, 2]])), 'Map (1) {1 => 2}');
+ t.end();
+});
+
+test('WeakMaps', function (t) {
+ t.equal(inspect(new WeakMap([[{}, 2]])), 'WeakMap { ? }');
+ t.end();
+});
+
+test('Sets', function (t) {
+ t.equal(inspect(new Set([[1, 2]])), 'Set (1) {[ 1, 2 ]}');
+ t.end();
+});
+
+test('WeakSets', function (t) {
+ t.equal(inspect(new WeakSet([[1, 2]])), 'WeakSet { ? }');
+ t.end();
+});
diff --git a/node_modules/object-inspect/test/bigint.js b/node_modules/object-inspect/test/bigint.js
new file mode 100644
index 000000000..325914345
--- /dev/null
+++ b/node_modules/object-inspect/test/bigint.js
@@ -0,0 +1,31 @@
+var inspect = require('../');
+var test = require('tape');
+
+test('bigint', { skip: typeof BigInt === 'undefined' }, function (t) {
+ t.test('primitives', function (st) {
+ st.plan(3);
+
+ st.equal(inspect(BigInt(-256)), '-256n');
+ st.equal(inspect(BigInt(0)), '0n');
+ st.equal(inspect(BigInt(256)), '256n');
+ });
+
+ t.test('objects', function (st) {
+ st.plan(3);
+
+ st.equal(inspect(Object(BigInt(-256))), 'Object(-256n)');
+ st.equal(inspect(Object(BigInt(0))), 'Object(0n)');
+ st.equal(inspect(Object(BigInt(256))), 'Object(256n)');
+ });
+
+ t.test('syntactic primitives', function (st) {
+ st.plan(3);
+
+ /* eslint-disable no-new-func */
+ st.equal(inspect(Function('return -256n')()), '-256n');
+ st.equal(inspect(Function('return 0n')()), '0n');
+ st.equal(inspect(Function('return 256n')()), '256n');
+ });
+
+ t.end();
+});
diff --git a/node_modules/object-inspect/test/browser/dom.js b/node_modules/object-inspect/test/browser/dom.js
new file mode 100644
index 000000000..210c0b233
--- /dev/null
+++ b/node_modules/object-inspect/test/browser/dom.js
@@ -0,0 +1,15 @@
+var inspect = require('../../');
+var test = require('tape');
+
+test('dom element', function (t) {
+ t.plan(1);
+
+ var d = document.createElement('div');
+ d.setAttribute('id', 'beep');
+ d.innerHTML = '<b>wooo</b><i>iiiii</i>';
+
+ t.equal(
+ inspect([d, { a: 3, b: 4, c: [5, 6, [7, [8, [9]]]] }]),
+ '[ <div id="beep">...</div>, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [Object] ] ] ] } ]'
+ );
+});
diff --git a/node_modules/object-inspect/test/circular.js b/node_modules/object-inspect/test/circular.js
new file mode 100644
index 000000000..e864cfee9
--- /dev/null
+++ b/node_modules/object-inspect/test/circular.js
@@ -0,0 +1,9 @@
+var inspect = require('../');
+var test = require('tape');
+
+test('circular', function (t) {
+ t.plan(1);
+ var obj = { a: 1, b: [3, 4] };
+ obj.c = obj;
+ t.equal(inspect(obj), '{ a: 1, b: [ 3, 4 ], c: [Circular] }');
+});
diff --git a/node_modules/object-inspect/test/deep.js b/node_modules/object-inspect/test/deep.js
new file mode 100644
index 000000000..ff1c7eac0
--- /dev/null
+++ b/node_modules/object-inspect/test/deep.js
@@ -0,0 +1,9 @@
+var inspect = require('../');
+var test = require('tape');
+
+test('deep', function (t) {
+ t.plan(2);
+ var obj = [[[[[[500]]]]]];
+ t.equal(inspect(obj), '[ [ [ [ [ [Array] ] ] ] ] ]');
+ t.equal(inspect(obj, { depth: 2 }), '[ [ [Array] ] ]');
+});
diff --git a/node_modules/object-inspect/test/element.js b/node_modules/object-inspect/test/element.js
new file mode 100644
index 000000000..47fa9e240
--- /dev/null
+++ b/node_modules/object-inspect/test/element.js
@@ -0,0 +1,53 @@
+var inspect = require('../');
+var test = require('tape');
+
+test('element', function (t) {
+ t.plan(3);
+ var elem = {
+ nodeName: 'div',
+ attributes: [{ name: 'class', value: 'row' }],
+ getAttribute: function (key) { return key; },
+ childNodes: []
+ };
+ var obj = [1, elem, 3];
+ t.deepEqual(inspect(obj), '[ 1, <div class="row"></div>, 3 ]');
+ t.deepEqual(inspect(obj, { quoteStyle: 'single' }), "[ 1, <div class='row'></div>, 3 ]");
+ t.deepEqual(inspect(obj, { quoteStyle: 'double' }), '[ 1, <div class="row"></div>, 3 ]');
+});
+
+test('element no attr', function (t) {
+ t.plan(1);
+ var elem = {
+ nodeName: 'div',
+ getAttribute: function (key) { return key; },
+ childNodes: []
+ };
+ var obj = [1, elem, 3];
+ t.deepEqual(inspect(obj), '[ 1, <div></div>, 3 ]');
+});
+
+test('element with contents', function (t) {
+ t.plan(1);
+ var elem = {
+ nodeName: 'div',
+ getAttribute: function (key) { return key; },
+ childNodes: [{ nodeName: 'b' }]
+ };
+ var obj = [1, elem, 3];
+ t.deepEqual(inspect(obj), '[ 1, <div>...</div>, 3 ]');
+});
+
+test('element instance', function (t) {
+ t.plan(1);
+ var h = global.HTMLElement;
+ global.HTMLElement = function (name, attr) {
+ this.nodeName = name;
+ this.attributes = attr;
+ };
+ global.HTMLElement.prototype.getAttribute = function () {};
+
+ var elem = new global.HTMLElement('div', []);
+ var obj = [1, elem, 3];
+ t.deepEqual(inspect(obj), '[ 1, <div></div>, 3 ]');
+ global.HTMLElement = h;
+});
diff --git a/node_modules/object-inspect/test/err.js b/node_modules/object-inspect/test/err.js
new file mode 100644
index 000000000..db9633810
--- /dev/null
+++ b/node_modules/object-inspect/test/err.js
@@ -0,0 +1,31 @@
+var inspect = require('../');
+var test = require('tape');
+
+test('type error', function (t) {
+ t.plan(1);
+ var aerr = new TypeError();
+ aerr.foo = 555;
+ aerr.bar = [1, 2, 3];
+
+ var berr = new TypeError('tuv');
+ berr.baz = 555;
+
+ var cerr = new SyntaxError();
+ cerr.message = 'whoa';
+ cerr['a-b'] = 5;
+
+ var obj = [
+ new TypeError(),
+ new TypeError('xxx'),
+ aerr,
+ berr,
+ cerr
+ ];
+ t.equal(inspect(obj), '[ ' + [
+ '[TypeError]',
+ '[TypeError: xxx]',
+ '{ [TypeError] foo: 555, bar: [ 1, 2, 3 ] }',
+ '{ [TypeError: tuv] baz: 555 }',
+ '{ [SyntaxError: whoa] message: \'whoa\', \'a-b\': 5 }'
+ ].join(', ') + ' ]');
+});
diff --git a/node_modules/object-inspect/test/fn.js b/node_modules/object-inspect/test/fn.js
new file mode 100644
index 000000000..c69ef8e04
--- /dev/null
+++ b/node_modules/object-inspect/test/fn.js
@@ -0,0 +1,28 @@
+var inspect = require('../');
+var test = require('tape');
+
+test('function', function (t) {
+ t.plan(1);
+ var obj = [1, 2, function f(n) { return n; }, 4];
+ t.equal(inspect(obj), '[ 1, 2, [Function: f], 4 ]');
+});
+
+test('function name', function (t) {
+ t.plan(1);
+ var f = (function () {
+ return function () {};
+ }());
+ f.toString = function () { return 'function xxx () {}'; };
+ var obj = [1, 2, f, 4];
+ t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)], 4 ]');
+});
+
+test('anon function', function (t) {
+ var f = (function () {
+ return function () {};
+ }());
+ var obj = [1, 2, f, 4];
+ t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)], 4 ]');
+
+ t.end();
+});
diff --git a/node_modules/object-inspect/test/has.js b/node_modules/object-inspect/test/has.js
new file mode 100644
index 000000000..026d6d5c3
--- /dev/null
+++ b/node_modules/object-inspect/test/has.js
@@ -0,0 +1,34 @@
+var inspect = require('../');
+var test = require('tape');
+
+function withoutProperty(object, property, fn) {
+ var original;
+ if (Object.getOwnPropertyDescriptor) {
+ original = Object.getOwnPropertyDescriptor(object, property);
+ } else {
+ original = object[property];
+ }
+ delete object[property];
+ try {
+ fn();
+ } finally {
+ if (Object.getOwnPropertyDescriptor) {
+ Object.defineProperty(object, property, original);
+ } else {
+ object[property] = original;
+ }
+ }
+}
+
+test('when Object#hasOwnProperty is deleted', function (t) {
+ t.plan(1);
+ var arr = [1, , 3]; // eslint-disable-line no-sparse-arrays
+
+ // eslint-disable-next-line no-extend-native
+ Array.prototype[1] = 2; // this is needed to account for "in" vs "hasOwnProperty"
+
+ withoutProperty(Object.prototype, 'hasOwnProperty', function () {
+ t.equal(inspect(arr), '[ 1, , 3 ]');
+ });
+ delete Array.prototype[1];
+});
diff --git a/node_modules/object-inspect/test/holes.js b/node_modules/object-inspect/test/holes.js
new file mode 100644
index 000000000..87fc8c84a
--- /dev/null
+++ b/node_modules/object-inspect/test/holes.js
@@ -0,0 +1,15 @@
+var test = require('tape');
+var inspect = require('../');
+
+var xs = ['a', 'b'];
+xs[5] = 'f';
+xs[7] = 'j';
+xs[8] = 'k';
+
+test('holes', function (t) {
+ t.plan(1);
+ t.equal(
+ inspect(xs),
+ "[ 'a', 'b', , , , 'f', , 'j', 'k' ]"
+ );
+});
diff --git a/node_modules/object-inspect/test/indent-option.js b/node_modules/object-inspect/test/indent-option.js
new file mode 100644
index 000000000..89d8fcedf
--- /dev/null
+++ b/node_modules/object-inspect/test/indent-option.js
@@ -0,0 +1,271 @@
+var test = require('tape');
+var forEach = require('for-each');
+
+var inspect = require('../');
+
+test('bad indent options', function (t) {
+ forEach([
+ undefined,
+ true,
+ false,
+ -1,
+ 1.2,
+ Infinity,
+ -Infinity,
+ NaN
+ ], function (indent) {
+ t['throws'](
+ function () { inspect('', { indent: indent }); },
+ TypeError,
+ inspect(indent) + ' is invalid'
+ );
+ });
+
+ t.end();
+});
+
+test('simple object with indent', function (t) {
+ t.plan(2);
+
+ var obj = { a: 1, b: 2 };
+
+ var expectedSpaces = [
+ '{',
+ ' a: 1,',
+ ' b: 2',
+ '}'
+ ].join('\n');
+ var expectedTabs = [
+ '{',
+ ' a: 1,',
+ ' b: 2',
+ '}'
+ ].join('\n');
+
+ t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
+ t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
+});
+
+test('two deep object with indent', function (t) {
+ t.plan(2);
+
+ var obj = { a: 1, b: { c: 3, d: 4 } };
+
+ var expectedSpaces = [
+ '{',
+ ' a: 1,',
+ ' b: {',
+ ' c: 3,',
+ ' d: 4',
+ ' }',
+ '}'
+ ].join('\n');
+ var expectedTabs = [
+ '{',
+ ' a: 1,',
+ ' b: {',
+ ' c: 3,',
+ ' d: 4',
+ ' }',
+ '}'
+ ].join('\n');
+
+ t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
+ t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
+});
+
+test('simple array with all single line elements', function (t) {
+ t.plan(2);
+
+ var obj = [1, 2, 3, 'asdf\nsdf'];
+
+ var expected = '[ 1, 2, 3, \'asdf\\nsdf\' ]';
+
+ t.equal(inspect(obj, { indent: 2 }), expected, 'two');
+ t.equal(inspect(obj, { indent: '\t' }), expected, 'tabs');
+});
+
+test('array with complex elements', function (t) {
+ t.plan(2);
+
+ var obj = [1, { a: 1, b: { c: 1 } }, 'asdf\nsdf'];
+
+ var expectedSpaces = [
+ '[',
+ ' 1,',
+ ' {',
+ ' a: 1,',
+ ' b: {',
+ ' c: 1',
+ ' }',
+ ' },',
+ ' \'asdf\\nsdf\'',
+ ']'
+ ].join('\n');
+ var expectedTabs = [
+ '[',
+ ' 1,',
+ ' {',
+ ' a: 1,',
+ ' b: {',
+ ' c: 1',
+ ' }',
+ ' },',
+ ' \'asdf\\nsdf\'',
+ ']'
+ ].join('\n');
+
+ t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
+ t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
+});
+
+test('values', function (t) {
+ t.plan(2);
+ var obj = [{}, [], { 'a-b': 5 }];
+
+ var expectedSpaces = [
+ '[',
+ ' {},',
+ ' [],',
+ ' {',
+ ' \'a-b\': 5',
+ ' }',
+ ']'
+ ].join('\n');
+ var expectedTabs = [
+ '[',
+ ' {},',
+ ' [],',
+ ' {',
+ ' \'a-b\': 5',
+ ' }',
+ ']'
+ ].join('\n');
+
+ t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
+ t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
+});
+
+test('Map', { skip: typeof Map !== 'function' }, function (t) {
+ var map = new Map();
+ map.set({ a: 1 }, ['b']);
+ map.set(3, NaN);
+
+ var expectedStringSpaces = [
+ 'Map (2) {',
+ ' { a: 1 } => [ \'b\' ],',
+ ' 3 => NaN',
+ '}'
+ ].join('\n');
+ var expectedStringTabs = [
+ 'Map (2) {',
+ ' { a: 1 } => [ \'b\' ],',
+ ' 3 => NaN',
+ '}'
+ ].join('\n');
+ var expectedStringTabsDoubleQuotes = [
+ 'Map (2) {',
+ ' { a: 1 } => [ "b" ],',
+ ' 3 => NaN',
+ '}'
+ ].join('\n');
+
+ t.equal(
+ inspect(map, { indent: 2 }),
+ expectedStringSpaces,
+ 'Map keys are not indented (two)'
+ );
+ t.equal(
+ inspect(map, { indent: '\t' }),
+ expectedStringTabs,
+ 'Map keys are not indented (tabs)'
+ );
+ t.equal(
+ inspect(map, { indent: '\t', quoteStyle: 'double' }),
+ expectedStringTabsDoubleQuotes,
+ 'Map keys are not indented (tabs + double quotes)'
+ );
+
+ t.equal(inspect(new Map(), { indent: 2 }), 'Map (0) {}', 'empty Map should show as empty (two)');
+ t.equal(inspect(new Map(), { indent: '\t' }), 'Map (0) {}', 'empty Map should show as empty (tabs)');
+
+ var nestedMap = new Map();
+ nestedMap.set(nestedMap, map);
+ var expectedNestedSpaces = [
+ 'Map (1) {',
+ ' [Circular] => Map (2) {',
+ ' { a: 1 } => [ \'b\' ],',
+ ' 3 => NaN',
+ ' }',
+ '}'
+ ].join('\n');
+ var expectedNestedTabs = [
+ 'Map (1) {',
+ ' [Circular] => Map (2) {',
+ ' { a: 1 } => [ \'b\' ],',
+ ' 3 => NaN',
+ ' }',
+ '}'
+ ].join('\n');
+ t.equal(inspect(nestedMap, { indent: 2 }), expectedNestedSpaces, 'Map containing a Map should work (two)');
+ t.equal(inspect(nestedMap, { indent: '\t' }), expectedNestedTabs, 'Map containing a Map should work (tabs)');
+
+ t.end();
+});
+
+test('Set', { skip: typeof Set !== 'function' }, function (t) {
+ var set = new Set();
+ set.add({ a: 1 });
+ set.add(['b']);
+ var expectedStringSpaces = [
+ 'Set (2) {',
+ ' {',
+ ' a: 1',
+ ' },',
+ ' [ \'b\' ]',
+ '}'
+ ].join('\n');
+ var expectedStringTabs = [
+ 'Set (2) {',
+ ' {',
+ ' a: 1',
+ ' },',
+ ' [ \'b\' ]',
+ '}'
+ ].join('\n');
+ t.equal(inspect(set, { indent: 2 }), expectedStringSpaces, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (two)');
+ t.equal(inspect(set, { indent: '\t' }), expectedStringTabs, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (tabs)');
+
+ t.equal(inspect(new Set(), { indent: 2 }), 'Set (0) {}', 'empty Set should show as empty (two)');
+ t.equal(inspect(new Set(), { indent: '\t' }), 'Set (0) {}', 'empty Set should show as empty (tabs)');
+
+ var nestedSet = new Set();
+ nestedSet.add(set);
+ nestedSet.add(nestedSet);
+ var expectedNestedSpaces = [
+ 'Set (2) {',
+ ' Set (2) {',
+ ' {',
+ ' a: 1',
+ ' },',
+ ' [ \'b\' ]',
+ ' },',
+ ' [Circular]',
+ '}'
+ ].join('\n');
+ var expectedNestedTabs = [
+ 'Set (2) {',
+ ' Set (2) {',
+ ' {',
+ ' a: 1',
+ ' },',
+ ' [ \'b\' ]',
+ ' },',
+ ' [Circular]',
+ '}'
+ ].join('\n');
+ t.equal(inspect(nestedSet, { indent: 2 }), expectedNestedSpaces, 'Set containing a Set should work (two)');
+ t.equal(inspect(nestedSet, { indent: '\t' }), expectedNestedTabs, 'Set containing a Set should work (tabs)');
+
+ t.end();
+});
diff --git a/node_modules/object-inspect/test/inspect.js b/node_modules/object-inspect/test/inspect.js
new file mode 100644
index 000000000..2277e4c95
--- /dev/null
+++ b/node_modules/object-inspect/test/inspect.js
@@ -0,0 +1,35 @@
+var test = require('tape');
+var hasSymbols = require('has-symbols')();
+var utilInspect = require('../util.inspect');
+var repeat = require('string.prototype.repeat');
+
+var inspect = require('..');
+
+test('inspect', function (t) {
+ t.plan(3);
+ var obj = [{ inspect: function xyzInspect() { return '!XYZ¡'; } }, []];
+ t.equal(inspect(obj), '[ !XYZ¡, [] ]');
+ t.equal(inspect(obj, { customInspect: true }), '[ !XYZ¡, [] ]');
+ t.equal(inspect(obj, { customInspect: false }), '[ { inspect: [Function: xyzInspect] }, [] ]');
+});
+
+test('inspect custom symbol', { skip: !hasSymbols || !utilInspect || !utilInspect.custom }, function (t) {
+ t.plan(3);
+
+ var obj = { inspect: function stringInspect() { return 'string'; } };
+ obj[utilInspect.custom] = function custom() { return 'symbol'; };
+
+ t.equal(inspect([obj, []]), '[ ' + (utilInspect.custom ? 'symbol' : 'string') + ', [] ]');
+ t.equal(inspect([obj, []], { customInspect: true }), '[ ' + (utilInspect.custom ? 'symbol' : 'string') + ', [] ]');
+ t.equal(inspect([obj, []], { customInspect: false }), '[ { inspect: [Function: stringInspect] }, [] ]');
+});
+
+test('maxStringLength', function (t) {
+ t.equal(
+ inspect([repeat('a', 1e8)], { maxStringLength: 10 }),
+ '[ \'aaaaaaaaaa\'... 99999990 more characters ]',
+ 'maxStringLength option limits output'
+ );
+
+ t.end();
+});
diff --git a/node_modules/object-inspect/test/lowbyte.js b/node_modules/object-inspect/test/lowbyte.js
new file mode 100644
index 000000000..d23424252
--- /dev/null
+++ b/node_modules/object-inspect/test/lowbyte.js
@@ -0,0 +1,12 @@
+var test = require('tape');
+var inspect = require('../');
+
+var obj = { x: 'a\r\nb', y: '\x05! \x1f \x12' };
+
+test('interpolate low bytes', function (t) {
+ t.plan(1);
+ t.equal(
+ inspect(obj),
+ "{ x: 'a\\r\\nb', y: '\\x05! \\x1f \\x12' }"
+ );
+});
diff --git a/node_modules/object-inspect/test/number.js b/node_modules/object-inspect/test/number.js
new file mode 100644
index 000000000..448304e59
--- /dev/null
+++ b/node_modules/object-inspect/test/number.js
@@ -0,0 +1,12 @@
+var inspect = require('../');
+var test = require('tape');
+
+test('negative zero', function (t) {
+ t.equal(inspect(0), '0', 'inspect(0) === "0"');
+ t.equal(inspect(Object(0)), 'Object(0)', 'inspect(Object(0)) === "Object(0)"');
+
+ t.equal(inspect(-0), '-0', 'inspect(-0) === "-0"');
+ t.equal(inspect(Object(-0)), 'Object(-0)', 'inspect(Object(-0)) === "Object(-0)"');
+
+ t.end();
+});
diff --git a/node_modules/object-inspect/test/quoteStyle.js b/node_modules/object-inspect/test/quoteStyle.js
new file mode 100644
index 000000000..ae4d734bf
--- /dev/null
+++ b/node_modules/object-inspect/test/quoteStyle.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var inspect = require('../');
+var test = require('tape');
+
+test('quoteStyle option', function (t) {
+ t['throws'](function () { inspect(null, { quoteStyle: false }); }, 'false is not a valid value');
+ t['throws'](function () { inspect(null, { quoteStyle: true }); }, 'true is not a valid value');
+ t['throws'](function () { inspect(null, { quoteStyle: '' }); }, '"" is not a valid value');
+ t['throws'](function () { inspect(null, { quoteStyle: {} }); }, '{} is not a valid value');
+ t['throws'](function () { inspect(null, { quoteStyle: [] }); }, '[] is not a valid value');
+ t['throws'](function () { inspect(null, { quoteStyle: 42 }); }, '42 is not a valid value');
+ t['throws'](function () { inspect(null, { quoteStyle: NaN }); }, 'NaN is not a valid value');
+ t['throws'](function () { inspect(null, { quoteStyle: function () {} }); }, 'a function is not a valid value');
+
+ t.end();
+});
diff --git a/node_modules/object-inspect/test/undef.js b/node_modules/object-inspect/test/undef.js
new file mode 100644
index 000000000..e3f496122
--- /dev/null
+++ b/node_modules/object-inspect/test/undef.js
@@ -0,0 +1,12 @@
+var test = require('tape');
+var inspect = require('../');
+
+var obj = { a: 1, b: [3, 4, undefined, null], c: undefined, d: null };
+
+test('undef and null', function (t) {
+ t.plan(1);
+ t.equal(
+ inspect(obj),
+ '{ a: 1, b: [ 3, 4, undefined, null ], c: undefined, d: null }'
+ );
+});
diff --git a/node_modules/object-inspect/test/values.js b/node_modules/object-inspect/test/values.js
new file mode 100644
index 000000000..0d40a5f26
--- /dev/null
+++ b/node_modules/object-inspect/test/values.js
@@ -0,0 +1,171 @@
+var inspect = require('../');
+var test = require('tape');
+
+test('values', function (t) {
+ t.plan(1);
+ var obj = [{}, [], { 'a-b': 5 }];
+ t.equal(inspect(obj), '[ {}, [], { \'a-b\': 5 } ]');
+});
+
+test('arrays with properties', function (t) {
+ t.plan(1);
+ var arr = [3];
+ arr.foo = 'bar';
+ var obj = [1, 2, arr];
+ obj.baz = 'quux';
+ obj.index = -1;
+ t.equal(inspect(obj), '[ 1, 2, [ 3, foo: \'bar\' ], baz: \'quux\', index: -1 ]');
+});
+
+test('has', function (t) {
+ t.plan(1);
+ var has = Object.prototype.hasOwnProperty;
+ delete Object.prototype.hasOwnProperty;
+ t.equal(inspect({ a: 1, b: 2 }), '{ a: 1, b: 2 }');
+ Object.prototype.hasOwnProperty = has; // eslint-disable-line no-extend-native
+});
+
+test('indexOf seen', function (t) {
+ t.plan(1);
+ var xs = [1, 2, 3, {}];
+ xs.push(xs);
+
+ var seen = [];
+ seen.indexOf = undefined;
+
+ t.equal(
+ inspect(xs, {}, 0, seen),
+ '[ 1, 2, 3, {}, [Circular] ]'
+ );
+});
+
+test('seen seen', function (t) {
+ t.plan(1);
+ var xs = [1, 2, 3];
+
+ var seen = [xs];
+ seen.indexOf = undefined;
+
+ t.equal(
+ inspect(xs, {}, 0, seen),
+ '[Circular]'
+ );
+});
+
+test('seen seen seen', function (t) {
+ t.plan(1);
+ var xs = [1, 2, 3];
+
+ var seen = [5, xs];
+ seen.indexOf = undefined;
+
+ t.equal(
+ inspect(xs, {}, 0, seen),
+ '[Circular]'
+ );
+});
+
+test('symbols', { skip: typeof Symbol !== 'function' }, function (t) {
+ var sym = Symbol('foo');
+ t.equal(inspect(sym), 'Symbol(foo)', 'Symbol("foo") should be "Symbol(foo)"');
+ t.equal(inspect(Object(sym)), 'Object(Symbol(foo))', 'Object(Symbol("foo")) should be "Object(Symbol(foo))"');
+ t.end();
+});
+
+test('Map', { skip: typeof Map !== 'function' }, function (t) {
+ var map = new Map();
+ map.set({ a: 1 }, ['b']);
+ map.set(3, NaN);
+ var expectedString = 'Map (2) {' + inspect({ a: 1 }) + ' => ' + inspect(['b']) + ', 3 => NaN}';
+ t.equal(inspect(map), expectedString, 'new Map([[{ a: 1 }, ["b"]], [3, NaN]]) should show size and contents');
+ t.equal(inspect(new Map()), 'Map (0) {}', 'empty Map should show as empty');
+
+ var nestedMap = new Map();
+ nestedMap.set(nestedMap, map);
+ t.equal(inspect(nestedMap), 'Map (1) {[Circular] => ' + expectedString + '}', 'Map containing a Map should work');
+
+ t.end();
+});
+
+test('WeakMap', { skip: typeof WeakMap !== 'function' }, function (t) {
+ var map = new WeakMap();
+ map.set({ a: 1 }, ['b']);
+ var expectedString = 'WeakMap { ? }';
+ t.equal(inspect(map), expectedString, 'new WeakMap([[{ a: 1 }, ["b"]]]) should not show size or contents');
+ t.equal(inspect(new WeakMap()), 'WeakMap { ? }', 'empty WeakMap should not show as empty');
+
+ t.end();
+});
+
+test('Set', { skip: typeof Set !== 'function' }, function (t) {
+ var set = new Set();
+ set.add({ a: 1 });
+ set.add(['b']);
+ var expectedString = 'Set (2) {' + inspect({ a: 1 }) + ', ' + inspect(['b']) + '}';
+ t.equal(inspect(set), expectedString, 'new Set([{ a: 1 }, ["b"]]) should show size and contents');
+ t.equal(inspect(new Set()), 'Set (0) {}', 'empty Set should show as empty');
+
+ var nestedSet = new Set();
+ nestedSet.add(set);
+ nestedSet.add(nestedSet);
+ t.equal(inspect(nestedSet), 'Set (2) {' + expectedString + ', [Circular]}', 'Set containing a Set should work');
+
+ t.end();
+});
+
+test('WeakSet', { skip: typeof WeakSet !== 'function' }, function (t) {
+ var map = new WeakSet();
+ map.add({ a: 1 });
+ var expectedString = 'WeakSet { ? }';
+ t.equal(inspect(map), expectedString, 'new WeakSet([{ a: 1 }]) should not show size or contents');
+ t.equal(inspect(new WeakSet()), 'WeakSet { ? }', 'empty WeakSet should not show as empty');
+
+ t.end();
+});
+
+test('Strings', function (t) {
+ var str = 'abc';
+
+ t.equal(inspect(str), "'" + str + "'", 'primitive string shows as such');
+ t.equal(inspect(str, { quoteStyle: 'single' }), "'" + str + "'", 'primitive string shows as such, single quoted');
+ t.equal(inspect(str, { quoteStyle: 'double' }), '"' + str + '"', 'primitive string shows as such, double quoted');
+ t.equal(inspect(Object(str)), 'Object(' + inspect(str) + ')', 'String object shows as such');
+ t.equal(inspect(Object(str), { quoteStyle: 'single' }), 'Object(' + inspect(str, { quoteStyle: 'single' }) + ')', 'String object shows as such, single quoted');
+ t.equal(inspect(Object(str), { quoteStyle: 'double' }), 'Object(' + inspect(str, { quoteStyle: 'double' }) + ')', 'String object shows as such, double quoted');
+
+ t.end();
+});
+
+test('Numbers', function (t) {
+ var num = 42;
+
+ t.equal(inspect(num), String(num), 'primitive number shows as such');
+ t.equal(inspect(Object(num)), 'Object(' + inspect(num) + ')', 'Number object shows as such');
+
+ t.end();
+});
+
+test('Booleans', function (t) {
+ t.equal(inspect(true), String(true), 'primitive true shows as such');
+ t.equal(inspect(Object(true)), 'Object(' + inspect(true) + ')', 'Boolean object true shows as such');
+
+ t.equal(inspect(false), String(false), 'primitive false shows as such');
+ t.equal(inspect(Object(false)), 'Object(' + inspect(false) + ')', 'Boolean false object shows as such');
+
+ t.end();
+});
+
+test('Date', function (t) {
+ var now = new Date();
+ t.equal(inspect(now), String(now), 'Date shows properly');
+ t.equal(inspect(new Date(NaN)), 'Invalid Date', 'Invalid Date shows properly');
+
+ t.end();
+});
+
+test('RegExps', function (t) {
+ t.equal(inspect(/a/g), '/a/g', 'regex shows properly');
+ t.equal(inspect(new RegExp('abc', 'i')), '/abc/i', 'new RegExp shows properly');
+
+ t.end();
+});
diff --git a/node_modules/object-inspect/util.inspect.js b/node_modules/object-inspect/util.inspect.js
new file mode 100644
index 000000000..7784fab55
--- /dev/null
+++ b/node_modules/object-inspect/util.inspect.js
@@ -0,0 +1 @@
+module.exports = require('util').inspect;