Skip to content

Commit 51e4042

Browse files
committed
[New] add isObject
1 parent 1626a07 commit 51e4042

5 files changed

Lines changed: 25 additions & 1 deletion

File tree

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ ES Object-related atoms: Object, ToObject, RequireObjectCoercible.
1515
const assert = require('assert');
1616

1717
const $Object = require('es-object-atoms');
18+
const isObject = require('es-object-atoms/isObject');
1819
const ToObject = require('es-object-atoms/ToObject');
1920
const RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible');
2021

@@ -24,6 +25,12 @@ assert.throws(() => ToObject(undefined), TypeError);
2425
assert.throws(() => RequireObjectCoercible(null), TypeError);
2526
assert.throws(() => RequireObjectCoercible(undefined), TypeError);
2627

28+
assert.equal(isObject(undefined), false);
29+
assert.equal(isObject(null), false);
30+
assert.equal(isObject({}), true);
31+
assert.equal(isObject([]), true);
32+
assert.equal(isObject(function () {}), true);
33+
2734
assert.deepEqual(RequireObjectCoercible(true), true);
2835
assert.deepEqual(ToObject(true), Object(true));
2936

isObject.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
declare function isObject(x: unknown): x is object;
2+
3+
export = isObject;

isObject.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
'use strict';
2+
3+
/** @type {import('./isObject')} */
4+
module.exports = function isObject(x) {
5+
return !!x && (typeof x === 'function' || typeof x === 'object');
6+
};

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"exports": {
77
".": "./index.js",
88
"./RequireObjectCoercible": "./RequireObjectCoercible.js",
9+
"./isObject": "./isObject.js",
910
"./ToObject": "./ToObject.js",
1011
"./package.json": "./package.json"
1112
},

test/index.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
var test = require('tape');
44

55
var $Object = require('../');
6-
var ToObject = require('..//ToObject');
6+
var isObject = require('../isObject');
7+
var ToObject = require('../ToObject');
78
var RequireObjectCoercible = require('..//RequireObjectCoercible');
89

910
test('errors', function (t) {
@@ -20,6 +21,12 @@ test('errors', function (t) {
2021
t.deepEqual(RequireObjectCoercible(true), true);
2122
t.deepEqual(ToObject(true), Object(true));
2223

24+
t.equal(isObject(undefined), false);
25+
t.equal(isObject(null), false);
26+
t.equal(isObject({}), true);
27+
t.equal(isObject([]), true);
28+
t.equal(isObject(function () {}), true);
29+
2330
var obj = {};
2431
t.equal(RequireObjectCoercible(obj), obj);
2532
t.equal(ToObject(obj), obj);

0 commit comments

Comments
 (0)