1.0.0 • Published 22 days ago

@ryniaubenpm/ipsam-nesciunt-quia v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
22 days ago

@ryniaubenpm/ipsam-nesciunt-quia Version Badge

github actions coverage License Downloads

npm badge

Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for fully completed data descriptors and accessor descriptors.

Usage

const isDescriptor = require('@ryniaubenpm/ipsam-nesciunt-quia');
const assert = require('assert');

const defaults = { configurable: false, enumerable: false };
const dataDefaults = { ...defaults, writable: false};

assert.ok(isDescriptor({ ...dataDefaults, value: 'foo' }));
assert.ok(isDescriptor({ ...defaults, get() {}, set() {} }));
assert.ok(!isDescriptor({ ...defaults, get: 'foo', set() {} }));

You may also check for a descriptor by passing an object as the first argument and property name (string) as the second argument.

const obj = { foo: 'abc' };

Object.defineProperty(obj, 'bar', { value: 'xyz' });
Reflect.defineProperty(obj, 'baz', { value: 'xyz' });

assert.equal(isDescriptor(obj, 'foo'), true);
assert.equal(isDescriptor(obj, 'bar'), true);
assert.equal(isDescriptor(obj, 'baz'), true);

Examples

value type

Returns false when not an object

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

data descriptor

Returns true when the object has valid properties with valid values.

assert.equal(isDescriptor({ ...dataDefaults, value: 'foo' }), true);
assert.equal(isDescriptor({ ...dataDefaults, value() {} }), true);

Returns false when the object has invalid properties

assert.equal(isDescriptor({ ...dataDefaults, value: 'foo', bar: 'baz' }), false);
assert.equal(isDescriptor({ ...dataDefaults, value: 'foo', bar: 'baz' }), false);
assert.equal(isDescriptor({ ...dataDefaults, value: 'foo', enumerable: 'baz' }), false);
assert.equal(isDescriptor({ ...dataDefaults, value: 'foo', configurable: 'baz' }), false);
assert.equal(isDescriptor({ ...dataDefaults, value: 'foo', get() {} }), false);
assert.equal(isDescriptor({ ...dataDefaults, get() {}, value() {} }), false);

false when a value is not the correct type

assert.equal(isDescriptor({ ...dataDefaults, value: 'foo', enumerable: 'foo' }), false);
assert.equal(isDescriptor({ ...dataDefaults, value: 'foo', configurable: 'foo' }), false);
assert.equal(isDescriptor({ ...dataDefaults, value: 'foo', writable: 'foo' }), false);

accessor descriptor

true when the object has valid properties with valid values.

assert.equal(isDescriptor({ ...defaults, get() {}, set() {} }), true);
assert.equal(isDescriptor({ ...defaults, get() {} }), true);
assert.equal(isDescriptor({ ...defaults, set() {} }), true);

false when the object has invalid properties

assert.equal(isDescriptor({ ...defaults, get() {}, set() {}, bar: 'baz' }), false);
assert.equal(isDescriptor({ ...defaults, get() {}, set() {}, enumerable: 'baz' }), false);
assert.equal(isDescriptor({ ...defaults, get() {}, writable: true }), false);
assert.equal(isDescriptor({ ...defaults, get() {}, value: true }), false);

Returns false when an accessor is not a function

assert.equal(isDescriptor({ ...defaults, get() {}, set: 'baz' }), false);
assert.equal(isDescriptor({ ...defaults, get: 'foo', set() {} }), false);
assert.equal(isDescriptor({ ...defaults, get: 'foo', bar: 'baz' }), false);
assert.equal(isDescriptor({ ...defaults, get: 'foo', set: 'baz' }), false);

Returns false when a value is not the correct type

assert.equal(isDescriptor({ ...defaults, get() {}, set() {}, enumerable: 'foo' }), false);
assert.equal(isDescriptor({ ...defaults, set() {}, configurable: 'foo' }), false);
assert.equal(isDescriptor({ ...defaults, get() {}, configurable: 'foo' }), false);

Related projects

You might also be interested in these projects:

  • is-accessor-descriptor: Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.
  • is-data-descriptor: Returns true if a value has the characteristics of a valid JavaScript data descriptor.
  • is-object: Returns true if the value is an object and not an array or null.

Tests

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

ECMAScript 2021specbindglobalhasOwnPropertyspeedduplextrimRightworkspace:*utilcharactersutil.inspectECMAScript 2016waites2016simpledbgradients cssvalidvaluesWeakMapES5streamsreact-testing-libraryUnderscorewgetflagloadbalancingairbnbRFC-6455route53jestlimitedfullfastclonereact-hooksmochaInt16Arraytoobjectbannerdom-testing-libraryidlelogcode pointspropertiesconcurrencyObject.assignextendlesscssintrinsiccallbacklinewrapjsdomchromiumfromconsumeArray.prototype.flattenauthimportUint16Arraydependency managerpasswordcomparefpschaifigletphonecurlPushdefinePropertywordwrapmobilefast-cloneredux-toolkitonceString.prototype.trimslotforEachtrimEndincludessymbolsnsecmascriptqueueMicrotaskkinesispackage managerelmbrowserlistcloudsearchviewframeworkRegExp#flagsUint8ClampedArrayvalidatetoArrayfunctionssigintmime-dbguidstoragegatewayqueuefullwidthprototypebundlerobjfseventsautoprefixerrangeerror0nodees7trimLefts3SetauthenticationUint32ArrayhttpdeepcopysetImmediateECMAScript 3dropbufferfind-upfindLastdateoptimizerstylessignalsformatpackagejsdiffclassnameES2020modulesslicemulti-packageaccessibilityBigUint64Arrayes5yupproperroruninstallfast-deep-cloneStreamslastvisualupcharacterrateECMAScript 2019package.jsoncensorcommandmkdirpwatchingfast-copyi18nfile systemweakmaprequesteslintconfigurablexhrtraversesyntax-0irqmimetypesjsxArray.prototype.filterbyteconfigsetterdeepclonenameArray.prototype.includeses8descriptorequalitywordbreaktypedprettydataViewless compilerinputjsenvcallboundexpressionhas-ownruntimerobustFunction.prototype.name_.extend@@toStringTagdiffuuidratelimitReactiveExtensionsreact-hook-formsidecacheinstallgenericsautoscalinginstallerbeanstalklinkTypedArraynpmprotobufnopenodejsES2019xtermtsargsargviterationtestersortedtermbluebirdshimswfterminalzodparsetypesoutputinternaldayjsrestfulparsingpathReactiveXstarterjsonHyBispinneriamjasmineES2018pluginpreserve-symlinksdebuggercompilerCSSStyleDeclarationajvquerystringcallArray.prototype.findLastbrowserslisttextwriteopenformsPromisereplaypropertyexecmixinsquotethrottlestyled-componentsmkdircontainsinferencebyteOffsetcallbindprefixresttypanionbddmatcheselectronreactvalueArray.prototype.findLastIndexrm -rfES2015eventDispatcherObject.keyswarningdependenciesreducehigher-orderdomtypefindrapidIteratorcloudfrontfunctionalFloat64Arraycolorjapanesestatusencryptionnativedeep-copymiddlewaregetterquerydeleteunicodetestMapfastcopyequalES7idtaskECMAScript 2022loggingextensiontypescriptendergetintrinsicstylingfindupeast-asian-widthawsownlooksuperstructshellinspectmapmacosstructuredClonedeterministichttpsAsyncIteratorcorsl10ncall-bindWebSocketsJSONschemeshrinkwrapcomputed-typesansiminimalconcatvariableskoreanes-shim APIlruglobalstapobjectfetchperformanceArrayBuffersigtermec2css lesspatchresolvermdirECMAScript 2015entrieshookformjshintdataviewinES2016sinatraarktypearrayagentawaitES2022ES8flatMapstringisConcatSpreadableprocessmatchAllshebangtakeworkflowshamweaksetvarsajaxObject.isgrouptapepolyfillmonorepoStreaminternal slotbyteLengthschemavariables in cssMicrosofttyped arrayfindLastIndexbcrypttypedarrayscommand-linegroupBySymbol.toStringTaghookssetPrototypeOftrimStartes-abstractassigngetPrototypeOflinuxsomewatcherpreprocessorglacierstringifierString.prototype.matchAllwebjsonpathcore-jslibphonenumberpromisesObservablescolorsArray.prototype.flatMapcolumntddcollection.es6ECMAScript 5ECMAScript 6datastructureascii[[Prototype]]Array.prototype.flatsafesortes6rdsmake dirreadablestreames-shimstypedarrayObject.fromEntriesObject.entriessetgetlanguagejwthashlockfilecircularnegative zerocloneprivate datafileregularenvironmentstreams2numberpicomatchcodeslesssqscloudformationinterruptsdescription.envES6filterstateoffsetelasticachetypeerrorlook-upJSON-SchemawatchFileestreewrapessharedimportexportappisworkerdeep-clonesymlinkserror-handlingtoolkitwindowsfixed-widthURLECMAScript 2023stdlibstreamarraybufferkarmaiteratorcjkcreatefunctionES2021performantserializerlazyspinnersless cssmomentfast$.extendES2023iechromeemrwatchcss__proto__getOwnPropertyDescriptorglobkeydescriptorsBigInt64ArraygdprflattenpyyamlsuperagentdataflatpositivecryptoutilitypushsettingseslintconfigstatelessclassnamescolourhandlerssequencemoduleObject.definePropertyObjectmruObject.getPrototypeOftslibsyntaxerrorsymbolseveryoptionrgbeslint-plugintelephonethroatObject.valuestostringtagArray.prototype.containsbusytimejoipackagesECMAScript 7optimistenvironmentsconnectchannelponyfillproxyapiimmutablegraphqlmovees2015exit-codeserializationtoolseslintpluginio-tsamazonbatchtestingcall-boundrmvpcprogressendpointpostcssrouter256directorybootstrap cssstableRegExp.prototype.flagslivesharedarraybuffermergeparserlintbootstrap lessmapreducerm -frregeximmerclassesescapepromisenameseventstypeofrandomes2018readablerfc4122searchinvariantfastifyvalidationargumentyamlbuffersaccessormime
1.0.0

22 days ago