2.0.5 • Published 5 days ago

@teamteanpm2024/animi-repellendus-perferendis v2.0.5

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

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
ES5electronarraybuffersigintmakeECMAScript 2022sharedhas[[Prototype]]fantasy-landentriesfullwidthpropargves6setterwritableimportexportWebSocketsenumerableBigUint64ArraytestingcloudwatchclassnameArray.prototype.findLastIndexcore-jsefficientfilecreateebsspinnerreadablestreamwatchprivatezodmodulesameValueZeroclass-validatorinstallerES2020look-upwatcherlinkgetintrinsictimeschemasymbolparentsArray.prototype.containstouchclonecolourshebangencryptionwalkingsyntaxvisualeslintes2017constAsyncIteratorpyyamlbootstrap lessawaitrecursivepushquerytermUint8ClampedArraycensorexit-codeBigInt64ArraypersistentbufferkeymatchAllglobbeanstalksanitizationjsonschemastylingmiddlewareuninstalllrutaperedactcollectionlimitstablenegative zerofast-copymomentWeakSetwrapfastisupfpsiterateyamlpretty.envtakeshellStyleSheeteslintpluginbusyprogresslogassertioncall-boundflagsprivate datacompile lessremoveponyfillinspectintrinsicpromisescloudsearchfixed-widthmoveinvariantshimUint16Arraycss-in-jstc39cssnativeclivarshamsymlinkmatchesdynamodbharmonyObjectargumentglacierspinnersequalPromisetrimLeftRxflatMapes-shim APItacitbalancedtypeofpropertiesgradients cssgetOwnPropertyDescriptorvalidateObject.entries@@toStringTaghardlinksparsingstyled-componentsdragdeep-copyuser-streamswebbatchautoscalingmake diracornArrayBuffergradients css3buffershttpsoncea11ytranspilercryptpopmotionpluginJSONfigletnodedeterministici18ntranspileiamrobustUint32ArraymimetypesnopeECMAScript 2015rmdirWebSocketeveryinterruptsinputserializationesvalidationtoolkitsortedreducechannelworkerfinduprequireguidpoint-freelazytslibloadingcurlwidthimmutablefindHyBibannerquoteflatpostcss-pluginrandomcharactersasciiquerystringfind-uptrimRightlimitedswfs3URLSearchParamsfunctionalSymboltoArrayCSSStyleDeclarationgetduplexECMAScript 2023full-widthformstaskcommandwgettypedarrayscloudtrail256react-testing-libraryReactiveExtensionswaapisortbrowserlisthttpbrowserslistchromeanimationflattenmkdirsinternal slotdataViewuuidInt8ArraydomECMAScript 5jslinewrapstringifiermodulesexpressseschromiumes2016copyboundcompilerargsflagObservablesansigdprimportoutputidledeepcopyrm -rfphoneECMAScript 2020utilsstylespatchjsonpathl10nregular expressionsdayjsutilitycall-bindpackagescommand-linesettingsECMAScript 2016cloudfrontECMAScript 2021fast-cloneindicatorpackage.jsonless.jsdeletebabel-coreECMAScript 2018mrurmInt16Arrayfromfast-deep-clonewarningformatstartersidetoStringTagerror-handlingincludesastisConcatSpreadableArray.prototype.flattentypesafestylees8lintrapidArrayBuffer.prototype.slicerangeerrorvalueArray.prototype.includestsfindLastpositivebddcomputed-typesdirserializeforEachchinesevalidlessgetoptcss variablestreamsES7circularobjectObject.getPrototypeOfprototypevalidatorjapanesextermaccessibilityinstallobjnodejshelpersless compilerless cssStreams-0ES2018Object.istypescriptfastcopymacosutilperformanceinferenceurlcallboundmonoreporegular expressionlengthTypeBoxtoobjectawshashcoerciblefast-deep-copythrottlesliceminimal3dbyteOffsetCSSfunctionES2016ratelimithasOwnpreprocessorthreemetadataroute53matchsuperagentESnextIteratorerroremojireact-hookssymbolsfastifysomeexitregularposestructuredCloneemrES2021ESstreamttybabelpathstyleguideyupkarmadefinePropertydeepclonelesscssloggingcallbind__proto__promisexsspasswordenderjavascriptfetcheast-asian-widthsignalsecmascriptjoitoSortedwhatwgramdaarraydiffframereslintconfigestreeoffsetObject.definePropertyfseventsJSON-Schemacloudformationcollection.es6Object.keysstoragegatewayresolveextensioneventDispatcherjsdomreal-timehooksFunction.prototype.namereact-hook-formArrayBuffer#slicewritewatchFilemergefunctionsratejson-schema-validatorgrouplanguagecorsiteratorspeces2015TypedArraypicomatchreducerdatadescriptorFloat64ArraytypanionjasmineReflect.getPrototypeOfthroatreact animationwhichnested cssbreakapisimpledbmkdirES2017rm -frlockfileES2019envoptimistauthenticationjQuerytrimEndframeworktddpipesanitizetypeddom-testing-libraryhandlersconcurrencyvariables in csspackagewatchingcss lessvariablesrfc4122assertspnpm9fpes2018RegExp.prototype.flagsECMAScript 6ES8arktypearraysArray.prototype.flatqueuereusedeepreact posesetImmediatevestdataviewtapbluebirddescriptorsopencolumnsRegExp#flagssyntaxerrorstringifyauthdotenvdefinecallnumberconcatMapwafloadbalancingtestertextendpointaccessorlistenerstraverseequalityReactiveXcjkschemees-shimslibphonenumberPushES6RxJSutil.inspectmulti-packagegetPrototypeOfregexbrowserextendform-validationmapreducefilteres7MapkoreanmixinsamazoneventEmitterInt32Arraynameshigher-orderES2022unicodeprocesshookformrgbdependency managerjsxreadableWeakMapString.prototype.matchAllsharedarraybufferelasticacheoptimizerECMAScript 7linuxsqsstatusmimetestprunevaluesObject.assignjson-schema-validationfindLastIndexworkflowpreserve-symlinksoperating-systemcorestatelesseslint-pluginmochasearch0lookECMAScript 3artES2015wordbreakchaiwaitruntimees5byteLengthprotobufStreamexecSymbol.toStringTagiterationtelephonedatastructurestylesheetgesturesdebugparentcolorreadconfiges-abstractreactutilitiescachecharacterpuretypedarraydatecontainsjestnameelb$.extendsetfullkinesisiecallbackdescriptiontrimcommandergenericstrimStartMicrosoftweakmaptypesxhrwalkstringformECMAScript 2019Arraydeep-cloneproxyYAML
2.0.5

5 days ago

2.0.4

6 days ago

2.0.3

7 days ago

2.0.2

8 days ago

1.0.2

9 days ago

1.0.1

10 days ago

1.0.0

11 days ago