Socket
Socket
Sign inDemoInstall

is-data-descriptor

Package Overview
Dependencies
7
Maintainers
2
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    is-data-descriptor

Returns true if a value has the characteristics of a valid JavaScript data descriptor.


Version published
Weekly downloads
25M
decreased by-18.79%
Maintainers
2
Install size
141 kB
Created
Weekly downloads
 

Package description

What is is-data-descriptor?

The is-data-descriptor npm package is used to determine if an object is a valid data descriptor. Data descriptors are object keys that have attributes like value, writable, enumerable, and configurable. This package checks if a given object conforms to the specification of a data descriptor.

What are is-data-descriptor's main functionalities?

Check if an object is a data descriptor

This feature allows you to verify if a given object is a valid data descriptor by checking its properties and their respective values.

const isDataDescriptor = require('is-data-descriptor');

const descriptor = {value: 'value', writable: true, enumerable: true, configurable: true};
const result = isDataDescriptor(descriptor); // result is true

Other packages similar to is-data-descriptor

Changelog

Source

v2.1.3 - 2023-10-26

Commits

  • Merge tag v0.1.5, v1.0.1 c64e97f
  • [eslint] actually use eslint dce7eae
  • [eslint] actually use eslint 65fed07
  • [meta] update package.json etc from main 1ebc548
  • [readme] clean up readme, remove verb 10ad663
  • [meta] clean up package.json 7f76a01
  • [readme] remove verb 8178901
  • [meta] update .gitignore a2ca593
  • [Tests] switch to tape 70540e5
  • [Tests] switch to tape 95ff316
  • [readme] update from main bb8bcf2
  • [Tests] migrate from travis to github actions eee138d
  • [Tests] migrate from travis to github actions a46e5a4
  • [readme] use evalmd 7648a08
  • [Tests] move into a test dir f0f3521
  • [Fix] properly return false for an accessor descriptor 2c213cd
  • [Fix] correctly return false for something with get or set 16bcab0
  • [Performance] move data object to module level 37688a1
  • [Fix] allow any non-primitive; arrays and functions are objects too f01936a
  • [Refactor] use hasown 060ed0a
  • [Fix] allow any non-primitive; arrays and functions are objects too 197c77a
  • [Fix] accept a symbol in the two-arg form 78b6215
  • Only apps should have lockfiles bbf6d2e
  • Only apps should have lockfiles 20aa6e5
  • [Fix] use correct logic for two-arg form 1f77993
  • [Robustness] switch to hasown aa48e2f
  • [Fix] properly guard for-in loop 014971e
  • [Robustness] use a null object just in case ab05aad

Readme

Source

is-data-descriptor Version Badge

github actions coverage License Downloads

npm badge

Returns true if a value has the characteristics of a valid JavaScript data descriptor.

Examples

true when the descriptor has valid properties with valid values. false when not an object or when the object has invalid properties.

var isDataDesc = require('is-data-descriptor');
var assert = require('assert');

assert.equal(true, isDataDesc({ value: 'foo' }));
assert.equal(true, isDataDesc({ value: function () {} }));
assert.equal(true, isDataDesc({ value: true }));

assert.equal(false, isDataDesc('a'));
assert.equal(false, isDataDesc(null));
assert.equal(false, isDataDesc([]));

assert.equal(false, isDataDesc({ value: 'foo', bar: 'baz' }));
assert.equal(false, isDataDesc({ value: 'foo', bar: 'baz' }));
assert.equal(false, isDataDesc({ value: 'foo', get: function () {} }));
assert.equal(false, isDataDesc({ get: function () {}, value: 'foo' }) );
 
assert.equal(false, isDataDesc({ value: 'foo', enumerable: 'foo' }));
assert.equal(false, isDataDesc({ value: 'foo', configurable: 'foo' }));
assert.equal(false, isDataDesc({ value: 'foo', writable: 'foo' }));

Valid properties

The only valid data descriptor properties are the following:

  • configurable (required)
  • enumerable (required)
  • value (optional)
  • writable (optional)

To be a valid data descriptor, either value or writable must be defined.

Invalid properties

A descriptor may have additional invalid properties (an error will not be thrown).

var foo = {};

Object.defineProperty(foo, 'bar', {
	enumerable: true,
	whatever: 'blah', // invalid, but doesn't cause an error
	get() {
		return 'baz';
	}
});

assert.equal(foo.bar, 'baz');
  • is-accessor-descriptor: Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.
  • is-descriptor: Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… more

Tests

Simply clone the repo, npm install, and run npm test

Keywords

FAQs

Last updated on 27 Oct 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc