pax_global_header00006660000000000000000000000064132203770770014522gustar00rootroot0000000000000052 comment=ff3f3275ca14d80103461c8892ed164fea0741dc object-inspect-1.5.0/000077500000000000000000000000001322037707700144365ustar00rootroot00000000000000object-inspect-1.5.0/.gitignore000066400000000000000000000002151322037707700164240ustar00rootroot00000000000000# gitignore node_modules # Only apps should have lockfiles npm-shrinkwrap.json package-lock.json yarn.lock # Coverage coverage .nyc_output object-inspect-1.5.0/.npmrc000066400000000000000000000000231322037707700155510ustar00rootroot00000000000000package-lock=false object-inspect-1.5.0/.nycrc000066400000000000000000000004241322037707700155550ustar00rootroot00000000000000{ "all": true, "check-coverage": true, "instrumentation": false, "sourceMap": false, "reporter": "html", "lines": 95.95, "statements": 95, "functions": 96, "branches": 92, "exclude": [ "coverage", "example", "test", "test-core-js.js" ] } object-inspect-1.5.0/.travis.yml000066400000000000000000000124611322037707700165530ustar00rootroot00000000000000language: node_js os: - linux node_js: - "9.3" - "8.9" - "7.10" - "6.12" - "5.12" - "4.8" - "iojs-v3.3" - "iojs-v2.5" - "iojs-v1.8" - "0.12" - "0.10" - "0.8" - "0.6" before_install: - '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: "node" env: COVERAGE=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.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.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.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.11" 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 object-inspect-1.5.0/LICENSE000066400000000000000000000020611322037707700154420ustar00rootroot00000000000000This software is released under the MIT license: 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. object-inspect-1.5.0/example/000077500000000000000000000000001322037707700160715ustar00rootroot00000000000000object-inspect-1.5.0/example/all.js000066400000000000000000000005121322037707700171750ustar00rootroot00000000000000var inspect = require('../'); 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: new Buffer('abc'), holes: holes }, now: new Date }; obj.self = obj; console.log(inspect(obj)); object-inspect-1.5.0/example/circular.js000066400000000000000000000001441322037707700202320ustar00rootroot00000000000000var inspect = require('../'); var obj = { a: 1, b: [3,4] }; obj.c = obj; console.log(inspect(obj)); object-inspect-1.5.0/example/fn.js000066400000000000000000000001611322037707700170300ustar00rootroot00000000000000var inspect = require('../'); var obj = [ 1, 2, function f (n) { return n + 5 }, 4 ]; console.log(inspect(obj)); object-inspect-1.5.0/example/inspect.js000066400000000000000000000003221322037707700200710ustar00rootroot00000000000000var inspect = require('../'); var d = document.createElement('div'); d.setAttribute('id', 'beep'); d.innerHTML = 'woooiiiii'; console.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ])); object-inspect-1.5.0/index.js000066400000000000000000000172461322037707700161150ustar00rootroot00000000000000var 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 booleanValueOf = Boolean.prototype.valueOf; var objectToString = Object.prototype.toString; var inspectCustom = require('./util.inspect').custom; var inspectSymbol = (inspectCustom && isSymbol(inspectCustom)) ? inspectCustom : null; module.exports = function inspect_ (obj, opts, depth, seen) { if (!opts) opts = {}; if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) { throw new TypeError('option "quoteStyle" must be "single" or "double"'); } 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); } var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; if (typeof depth === 'undefined') depth = 0; if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { return '[Object]'; } if (typeof seen === 'undefined') seen = []; else if (indexOf(seen, obj) >= 0) { return '[Circular]'; } function inspect (value, from) { if (from) { seen = seen.slice(); seen.push(from); } return inspect_(value, opts, depth + 1, seen); } if (typeof obj === 'function') { var name = nameOf(obj); return '[Function' + (name ? ': ' + name : '') + ']'; } 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 += ''; return s; } if (isArray(obj)) { if (obj.length === 0) return '[]'; return '[ ' + arrObjKeys(obj, inspect).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') { if (inspectSymbol && typeof obj[inspectSymbol] === 'function') { return obj[inspectSymbol](); } else if (typeof obj.inspect === 'function') { return obj.inspect(); } } if (isMap(obj)) { var parts = []; mapForEach.call(obj, function (value, key) { parts.push(inspect(key, obj) + ' => ' + inspect(value, obj)); }); return collectionOf('Map', mapSize.call(obj), parts); } if (isSet(obj)) { var parts = []; setForEach.call(obj, function (value ) { parts.push(inspect(value, obj)); }); return collectionOf('Set', setSize.call(obj), parts); } if (isNumber(obj)) { return markBoxed(inspect(Number(obj))); } if (isBoolean(obj)) { return markBoxed(booleanValueOf.call(obj)); } if (isString(obj)) { return markBoxed(inspect(String(obj))); } if (!isDate(obj) && !isRegExp(obj)) { var xs = arrObjKeys(obj, inspect); if (xs.length === 0) return '{}'; return '{ ' + xs.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, '"'); } 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 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 = String(f).match(/^function\s*([\w$]+)/); if (m) return m[1]; } 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) { 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 isSet (x) { if (!setSize) { 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 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) { 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 collectionOf (type, size, entries) { return type + ' (' + size + ') {' + entries.join(', ') + '}'; } 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) { if (!has(obj, key)) continue; if (isArr && String(Number(key)) === key && key < obj.length) continue; if (/[^\w$]/.test(key)) { xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); } else { xs.push(key + ': ' + inspect(obj[key], obj)); } } return xs; } object-inspect-1.5.0/package.json000066400000000000000000000022121322037707700167210ustar00rootroot00000000000000{ "name": "object-inspect", "version": "1.5.0", "description": "string representations of objects in node and the browser", "main": "index.js", "devDependencies": { "core-js": "^2.5.1", "nyc": "^10.3.2", "tape": "^4.8.0" }, "scripts": { "test": "npm run tests-only", "pretests-only": "node test-core-js", "tests-only": "tape test/*.js", "coverage": "nyc npm run tests-only" }, "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" ] }, "repository": { "type": "git", "url": "git://github.com/substack/object-inspect.git" }, "homepage": "https://github.com/substack/object-inspect", "keywords": [ "inspect", "util.inspect", "object", "stringify", "pretty" ], "author": { "name": "James Halliday", "email": "mail@substack.net", "url": "http://substack.net" }, "license": "MIT", "browser": { "./util.inspect.js": false } } object-inspect-1.5.0/readme.markdown000066400000000000000000000022401322037707700174350ustar00rootroot00000000000000# object-inspect string representations of objects in node and the browser [![testling badge](https://ci.testling.com/substack/object-inspect.png)](https://ci.testling.com/substack/object-inspect) [![build status](https://secure.travis-ci.org/substack/object-inspect.png)](http://travis-ci.org/substack/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 = 'woooiiiii'; console.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ])); ``` output: ``` [
...
, { 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 # install With [npm](https://npmjs.org) do: ``` npm install object-inspect ``` # license MIT object-inspect-1.5.0/test-core-js.js000066400000000000000000000004651322037707700173200ustar00rootroot00000000000000'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('Sets', function (t) { t.equal(inspect(new Set([[1, 2]])), 'Set (1) {[ 1, 2 ]}'); t.end(); }); object-inspect-1.5.0/test/000077500000000000000000000000001322037707700154155ustar00rootroot00000000000000object-inspect-1.5.0/test/browser/000077500000000000000000000000001322037707700171005ustar00rootroot00000000000000object-inspect-1.5.0/test/browser/dom.js000066400000000000000000000006471322037707700202240ustar00rootroot00000000000000var 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 = 'woooiiiii'; t.equal( inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ]), '[
...
, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [Object] ] ] ] } ]' ); }); object-inspect-1.5.0/test/circular.js000066400000000000000000000003441322037707700175600ustar00rootroot00000000000000var 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] }'); }); object-inspect-1.5.0/test/deep.js000066400000000000000000000004151322037707700166700ustar00rootroot00000000000000var inspect = require('../'); var test = require('tape'); test('deep', function (t) { t.plan(2); var obj = [ [ [ [ [ [ 500 ] ] ] ] ] ]; t.equal(inspect(obj), '[ [ [ [ [ [Object] ] ] ] ] ]'); t.equal(inspect(obj, { depth: 2 }), '[ [ [Object] ] ]'); }); object-inspect-1.5.0/test/element.js000066400000000000000000000030251322037707700174040ustar00rootroot00000000000000var 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) {}, childNodes: [] }; var obj = [ 1, elem, 3 ]; t.deepEqual(inspect(obj), '[ 1,
, 3 ]'); t.deepEqual(inspect(obj, { quoteStyle: 'single' }), "[ 1,
, 3 ]"); t.deepEqual(inspect(obj, { quoteStyle: 'double' }), '[ 1,
, 3 ]'); }); test('element no attr', function (t) { t.plan(1); var elem = { nodeName: 'div', getAttribute: function (key) {}, childNodes: [] }; var obj = [ 1, elem, 3 ]; t.deepEqual(inspect(obj), '[ 1,
, 3 ]'); }); test('element with contents', function (t) { t.plan(1); var elem = { nodeName: 'div', getAttribute: function (key) {}, childNodes: [ { nodeName: 'b' } ] }; var obj = [ 1, elem, 3 ]; t.deepEqual(inspect(obj), '[ 1,
...
, 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,
, 3 ]'); global.HTMLElement = h; }); object-inspect-1.5.0/test/err.js000066400000000000000000000013061322037707700165430ustar00rootroot00000000000000var 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(', ') + ' ]'); }); object-inspect-1.5.0/test/fn.js000066400000000000000000000012651322037707700163620ustar00rootroot00000000000000var inspect = require('../'); var test = require('tape'); test('function', function (t) { t.plan(1); var obj = [ 1, 2, function f (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: xxx], 4 ]'); }); test('anon function', function (t) { var f = (function () { return function () {}; }()); var obj = [ 1, 2, f, 4 ]; t.equal(inspect(obj), '[ 1, 2, [Function], 4 ]'); t.end(); }); object-inspect-1.5.0/test/has.js000066400000000000000000000016041322037707700165270ustar00rootroot00000000000000var inspect = require('../'); var test = require('tape'); var withoutProperty = function (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]; 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]; }); object-inspect-1.5.0/test/holes.js000066400000000000000000000004011322037707700170600ustar00rootroot00000000000000var 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' ]" ); }); object-inspect-1.5.0/test/inspect.js000066400000000000000000000003361322037707700174220ustar00rootroot00000000000000var inspect = require('../'); var test = require('tape'); test('inspect', function (t) { t.plan(1); var obj = [ { inspect: function () { return '!XYZ¡' } }, [] ]; t.equal(inspect(obj), '[ !XYZ¡, [] ]'); }); object-inspect-1.5.0/test/lowbyte.js000066400000000000000000000004121322037707700174350ustar00rootroot00000000000000var test = require('tape'); var inspect = require('../'); var obj = { x: 'a\r\nb', y: '\5! \x1f \022' }; test('interpolate low bytes', function (t) { t.plan(1); t.equal( inspect(obj), "{ x: 'a\\r\\nb', y: '\\x05! \\x1f \\x12' }" ); }); object-inspect-1.5.0/test/number.js000066400000000000000000000006131322037707700172430ustar00rootroot00000000000000var 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(); }); object-inspect-1.5.0/test/quoteStyle.js000066400000000000000000000016451322037707700201370ustar00rootroot00000000000000'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(); }); object-inspect-1.5.0/test/undef.js000066400000000000000000000004601322037707700170540ustar00rootroot00000000000000var 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 }' ); }); object-inspect-1.5.0/test/values.js000066400000000000000000000105421322037707700172540ustar00rootroot00000000000000var 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; }); 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('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('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(); }); object-inspect-1.5.0/util.inspect.js000066400000000000000000000000521322037707700174120ustar00rootroot00000000000000module.exports = require('util').inspect;