Skip to content

Commit

Permalink
[New] add isObject
Browse files Browse the repository at this point in the history
  • Loading branch information
ljharb committed Jan 14, 2025
1 parent 1626a07 commit 51e4042
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 1 deletion.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ ES Object-related atoms: Object, ToObject, RequireObjectCoercible.
const assert = require('assert');

const $Object = require('es-object-atoms');
const isObject = require('es-object-atoms/isObject');
const ToObject = require('es-object-atoms/ToObject');
const RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible');

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

assert.equal(isObject(undefined), false);
assert.equal(isObject(null), false);
assert.equal(isObject({}), true);
assert.equal(isObject([]), true);
assert.equal(isObject(function () {}), true);

assert.deepEqual(RequireObjectCoercible(true), true);
assert.deepEqual(ToObject(true), Object(true));

Expand Down
3 changes: 3 additions & 0 deletions isObject.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
declare function isObject(x: unknown): x is object;

export = isObject;
6 changes: 6 additions & 0 deletions isObject.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
'use strict';

/** @type {import('./isObject')} */
module.exports = function isObject(x) {
return !!x && (typeof x === 'function' || typeof x === 'object');
};
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"exports": {
".": "./index.js",
"./RequireObjectCoercible": "./RequireObjectCoercible.js",
"./isObject": "./isObject.js",
"./ToObject": "./ToObject.js",
"./package.json": "./package.json"
},
Expand Down
9 changes: 8 additions & 1 deletion test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
var test = require('tape');

var $Object = require('../');
var ToObject = require('..//ToObject');
var isObject = require('../isObject');
var ToObject = require('../ToObject');
var RequireObjectCoercible = require('..//RequireObjectCoercible');

test('errors', function (t) {
Expand All @@ -20,6 +21,12 @@ test('errors', function (t) {
t.deepEqual(RequireObjectCoercible(true), true);
t.deepEqual(ToObject(true), Object(true));

t.equal(isObject(undefined), false);
t.equal(isObject(null), false);
t.equal(isObject({}), true);
t.equal(isObject([]), true);
t.equal(isObject(function () {}), true);

var obj = {};
t.equal(RequireObjectCoercible(obj), obj);
t.equal(ToObject(obj), obj);
Expand Down

0 comments on commit 51e4042

Please sign in to comment.