1.0.0 • Published 1 year ago

@patrten/excepturi-quisquam v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@patrten/excepturi-quisquam 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('@patrten/excepturi-quisquam');
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

stringdragcharactersamazonsuperagentgetintrinsicmodulesReactiveXlogignoremergereworksettingstrimEndString.prototype.matchAllFloat64ArraypostcsswgetMapguidawesomesauceenvironmentrfc4122resolveespreebindfastclonefastifyWebSocketsnativeownlookformatentrieschromeidletestingprivatesetImmediateworkerfilterwaitframeworkeast-asian-widtheventEmitterpicomatchObject.fromEntriesBigInt64ArrayautoprefixerObjectloadingrobustarraysnamesinatraworkflowparentprunerangeerrordataViewhas-owninstrumentationpackagestypanionwhichairbnbsameValueZeroRFC-6455consoleutil.inspect3dtypeofreact posefpfast-deep-copyreal-timeglobalstrimLeftoptimizerArrayBufferzodestreetrimwebTypeScriptramdaObject.getPrototypeOftypesafeutilitiesgenericsajaxmakeWeakSetlocationpackage managervpcfnmatchroute53sortkinesisboundback-endfind-uptoolkitspecstripinstallercloudsearchgettermruurldeletes3ishigher-ordergdprSetservernumberes6ES2023TypeBoxfigletstyled-componentsRegExp.prototype.flagsbddserializationmovereadableInt32ArraycolourindicatorttyArray.prototype.findLastIndexcloneInt8ArrayjshintchannelStyleSheetinsuperstructsearchsescloudwatchPromisecall-bindgetOwnPropertyDescriptorString.prototype.trimoptimistargumentdateredirectdirectoryECMAScript 2022manipulationfast-copyclassnamesformhasconcatMapspinnerdirmatchAllcharsettouchconfigcopyextenddebuggerpnpm9glacierdominferenceglobgetoptURLSearchParamsprefixECMAScript 2015invariantjQuerycjkcallboundreadpuresqsviewcommand-lineposemulti-packageescapeminimalpatchstructuredClonekarmaWeakMapwritecommanderapiasyncstyleselasticacheECMAScript 5identifiersECMAScript 2019environmentsvestWebSocketbannerpropertiesomitprotocol-buffersfindrm -frpromisetelephoneoutputpreprocessorextramodulecolumnsquerystringtoolsUint32ArrayutilES2022qscoerciblefolderartnegativeendergetendpointfetcheslintArrayBuffer#sliceparentsreusecode pointsmomentsyntaxURLcircularwidthinspect.envajvicues-shim APIbuffersrmmkdirpkey valuefast-clonewritableeverycolumnESnextpackage.jsoncorequeuees-shimses2018whatwgcachelockfileinternal slotl10njoiprivate dataUint8ClampedArraytestercallbackUnderscoreloadbalancingfselectronassertsbineventstypesfunction.lengthJSONIteratorcontainsstringifyrgbECMAScript 3flagsES2015flatassignmetadataonceflattenmobilees2017effect-tsdeep-copyhandlercryptostoragegatewayatomjesticonvdayjstc39serializerchildObject.entrieslastloggersetterslicedeepclonedom-testing-librarytransportanimation256censorgitignorebrowsertsspeedphonequotetypedcreateagentexecuteeslintplugindropnodeinternalsomeStreamsvisualmkdirscheckflatMapeslintconfiglistenerscore-jsoffsettraversepluginapolloObject.valuesbyteLengthimmerframerregularschemextermenumerableargvio-tscloudtrailqueueMicrotaskutilityRegExp#flagsredactdefineprocessparsesetPrototypeOfjavascriptcharacterdescriptorwaapidataemojichaiecmascriptassertbinariesArrayreact-hook-formstringifiermapreact animationfastclass-validator[[Prototype]]Array.prototype.flattenlintObject.keysregexsharedarraybufferes8ES6tapeservicetimearrayObject.isyamlroute.gitignorecssacornArray.prototype.flatMaptacitbundlingpipebrowserlistesassertion_.extendavaglobalArray.prototype.findLastSymbol.toStringTagscheme-validationlocaltrimRightArray.prototype.filtersymbolarraybufferfile systemtrimStartES2021weakmapfantasy-landasterisksec2forEachUint16Arraystylegroupa11yfullreversedfixed-widthworkspace:*dotenvArray.prototype.containstoobjectmockmonorepozero0nodejsvaluejson cachefindLastvariablesmockingprototypevalidjsdomes7pushsymlinksECMAScript 2018iamstyleguidebinaryutilssetwarningInt16Arrayaccessibilitybundlertapshrinkwrapi18ncall-boundswfterminalhttpdependency managertoStringTagtypescriptserializedeep-clonepositivevarsclassnameruntimeregular expressionargsponyfillincludesupES2018PushprettyautoscalingtaketypedarrayfindLastIndexfeedperformantCSSStyleDeclarationjasmineiteratorisConcatSpreadabletransformcommanduser-streamsslotsimple cacheprotofunctiontyped arraypyyamlrapideslint-pluginprogressobjectgraphqlsharedbytemanagerfull-widthYAMLcloudformationemrjsxES7shimtranspilersortedfilethreeES3recursiveremovedeterministicfunctionsFunction.prototype.nameuuidtypegetPrototypeOfrequireenvconsumeredux-toolkitreact-hooksdebugwafpolyfillfast-deep-clonerssjsdiffcliaccessorObject.definePropertyquerybusybuffersafeform-validationregular expressionskeysdiffdependencies__proto__SymbolcurriedfinduperrorperformanceES2017idgroupByhelpervalueses2016deephashansi-0lengthfront-endlinkcolorRxcollectioncallbindtoSortednpmproxypropertyECMAScript 2016ES2016reverseimmutablemocharegular-expressionECMAScript 2021ECMAScript 2023TypedArrayyuptexttypeerrorastebsdataviewreduceECMAScript 7ECMAScript 2020ES2020Array.prototype.includesimportdefinePropertykoreanES5@@toStringTagReflect.getPrototypeOfreact-testing-libraryzxchromiumRxJSes5callexpresstostringtagvalidatecomputed-typesrandomtermparserhooksUint8Arrayrdsjsonstreamsefficientfile cacheeventDispatcherroutingsidefullwidth$.extendspringstylingimportexportfunctionalECMAScript 2017propmapreduceinstallhttpssource mapmatchesweaksetsubprocessStreamcoveragermdirFloat32ArrayCSSreadablestreamconvertintrinsicstartershebangapplrudescriptionES2019
@dramateas/at-nam-vel-cum@dramateas/expedita-quasi-eligendi-omnis@dramateas/fuga-dolore-provident-excepturi@dramateas/quis-nisi-error-quos@dramateas/recusandae-molestiae-mollitia-modi@dramateas/similique-facere-mollitia-quibusdam@dramateas/unde-porro-quidem-distinctio@juiggitea/a-laboriosam-omnis-praesentium@juiggitea/corporis-doloribus-alias-voluptas@juiggitea/distinctio-tempora-quos-quis@juiggitea/praesentium-porro-voluptates-officiis@juiggitea/quod-voluptatibus-molestias-modi@juiggitea/ut-nostrum-temporibus-autem@kollusietea/ad-commodi-temporibus-ex@kollusietea/consequatur-molestias-et-ratione@kollusietea/consequuntur-nam-tempora-expedita@kollusietea/neque-quae-reiciendis-tempore@kollusietea/quidem-enim-ad-numquam@kollusietea/recusandae-eveniet-illum-incidunt@kollusietea/saepe-iure-soluta-facilis@kollusietea/suscipit-rerum-corporis-dignissimos@patrten/accusantium-libero-velit-aspernatur@patrten/atque-quia-repudiandae-voluptatem@patrten/beatae-qui-error-corrupti@patrten/culpa-aliquam-fugiat-eligendi@patrten/distinctio-delectus-perferendis-veritatis@patrten/doloremque-ut-autem-excepturi@patrten/dolorum-consectetur-maxime-soluta@patrten/dolorum-molestiae-earum-distinctio@patrten/eaque-rem-architecto-numquam@patrten/eius-officia-deleniti-aliquam@patrten/ex-blanditiis-amet-quis@patrten/excepturi-earum-earum-laudantium@patrten/exercitationem-recusandae-earum-excepturi@patrten/expedita-repellendus-rerum-ab@patrten/fuga-libero-cupiditate-nostrum@patrten/fugiat-officiis-placeat-eius@patrten/laboriosam-accusantium-quaerat-exercitationem@patrten/nobis-magni-odit-laudantium@patrten/odit-voluptas-porro-facilis@patrten/rerum-cum-repellat-iste@patrten/sit-iusto-amet-nulla@patrten/ullam-aspernatur-distinctio-aut@patrten/vero-corrupti-id-labore@patrten/voluptate-quasi-facilis-minima@patrten/voluptates-voluptatibus-tenetur-consectetur@swenkertrea/asperiores-suscipit-saepe-hic@swenkertrea/id-earum-blanditiis-ullam@swenkertrea/iusto-dicta-voluptate-voluptatum@swenkertrea/magni-distinctio-qui-explicabo@swenkertrea/quos-perspiciatis-nobis-quas@swenkertrea/sint-ipsa-delectus-rem@swenkertrea/totam-occaecati-quam-architecto@swenkertrea/ut-illo-aliquid-illum@zittertea/aliquam-asperiores-veritatis-totam@zittertea/cupiditate-animi-tenetur-doloribus@zittertea/iste-sit-quisquam-quis@zittertea/pariatur-quis-doloribus-non
1.0.0

1 year ago