npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@omegion1npm/nihil-nisi-unde

v1.0.0

Published

[![NPM](https://nodei.co/npm/@omegion1npm/nihil-nisi-unde.png?compact=true)](https://www.npmjs.com/package/@omegion1npm/nihil-nisi-unde)

Downloads

7

Maintainers

ptkhanh1994ptkhanh1994

Keywords

idlecryptlinkArrayBuffer.prototype.sliceIteratormovewebsiteformsnodereadablemochaurlsRegExp.prototype.flagsopenscompile lesswalkingcheckpropertystyleObject.valuesoutputprotobufextratimejavascripthasBigInt64Arraytranspilereact animationgetintrinsicpersistentsortapiappargvapollorobustUint8ClampedArrayjwtregexpnegativestyled-componentsstylespolyfilleslintUint16ArrayequalityloggingmergeexequeueMicrotaskregexkarmaassertionnativereactObject.entriestypescriptcore-jsxtermgraphqlECMAScript 2021safepyyamlpostcss-pluginRFC-6455objtyped arraysymlinkeventEmitterurltypedconfiglastargparselruwgetdataviewrecursiveReflect.getPrototypeOfaccessibilityviewparsergroupBymakepropertiescss variableenderjapanesejson-schema-validationArrayMicrosoftgetoptisConcatSpreadablezodtesttranspilermimetypesnpmweaksetflagsbabeljsonsortedtc39es-shimsFloat64Arraycall-bindsuperagentredux-toolkitformUnderscoretypeofprogress__proto__Object.iswritablerequestexecstringifyArray.prototype.filterfindupimportjson-schema-validatorvalidatecryptofromspinnersmkdirpObject.assignes2015validextensionmonorepoStreamstylesheetESupstyleguidedefinepopmotionyupcjktrimargumentcommanderlinewrapPromiseECMAScript 3rm -fr_.extendvalidationsameValueZeroES20213dfunctionspackage.jsonequaljscompilergestureshashES6classescliinferencewidthquerystringuninstallextendindicatorterm$.extendbdd256less compilerqsfastcloneperformantenvironmentpushinvariantinternal slotmixinsCSSarraybuffertextJSONpicomatchmatchAll-0setImmediateserializationassertprotocol-bufferseslintpluginWebSocketnested csswatcherlazyES5stringconcatdeepclonejson-schemafsredactObject.keyspnpm9sanitizationnumberfile systemuuidhigher-orderbrowserhttpminimaltrimLeftlookes7modulesargumentssetPrototypeOfcomputed-typestoSortedMapdescriptiontoStringTagArray.prototype.findLasttypedarraystreams2windowsutilboundpathstringifieridAsyncIteratorfast-copyprivate dataframersetterwalkguidrangeerrorpuresharedentriesflattenjoipackageoffsetdeepcopydependency managerintrinsiceslint-pluginsanitizevalidatorparentfull-widthreact-hooksdeep-cloneprivatehardlinkscharacterfastifyform-validationtoobjectgenericsstylingdeletekeyReactiveExtensionsdotenvbreakexpressionspeedposerateES2020Int8ArrayES2016fulljsonschemafileinspectmkdironcetypanioncircularworkerreact-testing-libraryregular expressionsArray.prototype.containsjestcallboundrgbomitl10nTypeScript0compareES2017forEachworkspace:*dom-testing-librarypostcssexit-codetoArraydatastructureeventDispatcherECMAScript 2022superstructfigletWeakSettypedarraysauthenticationjsxiereact-hook-formsyntaxirqpluginES8parseiterateObject.definePropertyWeakMapfastarktypemobilesignalsoptimistJSON-SchemaYAMLa11yinstallerregularincludesgetPrototypeOfdefaultdeep-copyTypeBoxECMAScript 2023ramdaautoprefixertslibsyntaxerrorfullwidthECMAScript 7ECMAScript 2018watchFilescheme-validationschemeutilitiesrequiretypecss lessbyteOffsetconsolerm -rfruntimeObject.getPrototypeOfopenerpositivereduxcontainses5user-streamsxdg-openES3fast-clonechildloggersettings6to5String.prototype.matchAllschemafindcloneletclassnamefunctionalstabletrimStartbundlerRegExp#flagscall-boundvariables in csspackagesfast-deep-clonelessfolderbabel-coremime-dbESnexttapeutilsshamhookscurriedeast-asian-width.envoptionauthPushawesomesaucetaskrmdirwatchfpSymbol.toStringTagestreenopepatchspectelephonefixed-widthInt32ArraystatelessassignestacitbcryptbundlinglaunchbyteLengthbusyspawnObjectECMAScript 2019directoryprototypestructuredClonecorsprototraverseescapeString.prototype.trimreducewordbreakbatchdependenciesdombannerdescriptorUint8Arrayes2018browserlistArrayBuffer#sliceArray.prototype.flattenbrowserslistRxJSutil.inspectasyncES7internaltakepromisestscsssharedarraybufferObservablejsdomgetOwnPropertyDescriptorpasswordbufferspropspinnerES2015flatMaplimitsymlinksFunction.prototype.nameshrinkwraploadingmatchstart[[Prototype]]typescreateless.jsdescriptorsquerycharacterses-abstractclientes6expresslockfilelogflattestingslicereact poselinuxArray.prototype.findLastIndexcalles2017es-shim APIeventsless mixinsless cssemitthrottleStyleSheetcacheECMAScript 2017Array.prototype.includesfind-upttyairbnbimmutableSymbolmulti-packageconfigurablexsslibphonenumberoptimizerUint32ArraywebdebugxhrmkdirswhatwgcolorswrapecmascriptflagconnectresolveFloat32ArraymapchannelInt16ArrayECMAScript 2015fetchpreserve-symlinksdataViewnamedirlesscssprunewarningmatchesspringslottypeerrorformatdayjscensorparentsduplexSetES2023whichastfiltereditordeepkeysexitinterruptscss-in-jsrandomprettyajaxfast-deep-copycmdreducerbufferhttpsemojiopenbootstrap csssymbolgradients cssframeworktoolkit@@toStringTagiteratordeterministicinputbootstrap lesschinesesequenceconcatMapcss nestingaccessorratelimitECMAScript 2020bluebirdtrimEnddiffterminalobjectwaiterror-handlingmruisponyfillencryptionarraydropremovecolorhandlersBigUint64ArrayreusethroatargsURLprefixTypedArrayunicodeefficientpoint-freepreprocessorReactiveXcallbindtrimRighti18nmoduleio-tsqueuetesterpromisezeroperformancemake dirfastcopyenumerableES2019varvalueconstvisualcoreartelectroncollectionanimationharmonytouchnamesdragES2018ansilistenerspackage managerbyteserializerECMAScript 6getterStreamsfseventsmiddlewarees2016immer

Readme

js-testDiff

NPM

About

Deep object diffing function for JavaScript; returns true if input 1 differs in any way from input 2. Original code was taken from Differentia.js and ported to TypeScript.

The testDiff function was originally created as a unit testing utility and it was primarily designed/used to test Differentia's search algorithm strategy system, setting a "gold standard" for that library's quality and algorithmic correctness.

The key difference with this version of testDiff is that I removed its "search index" functionality, as it introduced more complexity than it was worth.

Feel free to scavenge the original code as I have: https://github.com/Floofies/Differentia.js/blob/master/spec/testUtils.js

Building

Run npm run build to compile and test module dist/index.js.

I have pre-compiled the most up-to-date files in dist. Enjoy.

unitTest.js can be safely ignored, as it's a development-only dependency for test.mjs.

Syntax

import { testDiff } from "testDiff";
testDiff( input1:any, input2:any, [ deep:boolean = false ] );

Parameters:

input1, input2

Two values/objects to compare against each other.

deep (Optional) (Default = true)

TestDiff performs "deep" object/array traversal by default, comparing all reachable values; set this operand to false to disable traversal and nested comparisons.

Return Value:

Returns true if input1's structure, properties, or values differ in any way from input2, or false if otherwsie.

Usage Examples

Example 1: Arbitrary values.

Can handle any arbitrary values, as well as objects/arrays.

const myArray1 = "Hello World!";
const myArray2 = "This is a test";
const result = testDiff(myArray1, myArray2);
// result = true

Example 2: Flat arrays/objects.

const myArray1 = [1,2,3];
const myArray2 = [4,5,6];
const result = testDiff(myArray1, myArray2);
// result = true

Example 3: Nested arrays/objects.

const myArray1 = ["Hello",["World!"]];
const myArray2 = ["Hello",["Developer!"]];
const result = testDiff(myArray1, myArray2);
// result = true

Example 4: Nested arrays. Traversal disabled.

In this example, the function returns false even though the arrays' contents differ; they are regarded as the same because there are no differences at the top, and disabling traversal prevents the algorithm from seeing deeper differences.

const myArray1 = ["Hello",["World!"]];
const myArray2 = ["Hello",["Developer!"]];
const result = testDiff(myArray1, myArray2, false);
// result = false