1.2.1 • Published 13 days ago

@libtommy2024/id-veritatis-exercitationem-alias v1.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
13 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
picomatches6protologloggingpropertymochaelectrondeterministices2015dragbootstrap cssreadablevalidateserializematchesclass-validatorajveslintautoscalingregulareventDispatcherhttpstypedarrayviewprettychineseobjmake dirlibphonenumbertrimcheckemojisanitizationmetadatanopematchfsreusebeanstalktestingbatchdirectoryanimationcallpropdatebrowserslistless mixinssetterhigher-orderes-shim APIESvarramdamimecommand-linetypedarraysdependency managerString.prototype.matchAllspringgetoptinternal slotInt16Arraydirassignkoreancloudsearchvisualjsonpathprivatepackage managermixinssymbolsasyncwordbreakFloat32ArraytraversestylesargsRxJScryptclonetesterredux-toolkitdom-testing-libraryspinnersES2023east-asian-widthJSONpackagemergereact-hook-formmkdirshookscssjsdomzodairbnbhasdeep-clonetyped arraytaskeventEmittercloudtrailECMAScript 2015zeroguidformsextensionphonefunctionalinternalsequencedebuggerregular expressionttystreamresolveencryptionutil.inspectUnderscoreRegExp#flagsqueueMicrotaskremovejson-schemashamwalkingstreamsoptimizerexpressexecajaxeslint-pluginuuidfromreact animationArray.prototype.findLastUint8ClampedArrayapiinspectloadbalancinglockfileaccessibilityes7nativegetOwnPropertyDescriptorObservabledynamodbcode pointsiteratores5findformamazonES2019lazyslotduplexwebfastifyArray.prototype.filtermoduleslinewrapratesafeutilitiesObject.definePropertycachehasOwncommandincludescloudformationawaitratelimitprotobufObservablesStreamiamArrayBufferclassesmapconcurrencybrowserreduxtextreduceawsbannerconstes2016makewordwrapcorefasttoSortedpostcss-pluginHyBiES2020widthpackagesrequireAsyncIteratorES2022xssstylethroatECMAScript 3readless.jsinterrupts3dBigInt64Arrayprefixgradients css3transpilertapereadablestreamnegativesorteda11yparsetrimStartnodewritablecommanderenderapollowrapdeepcopyjson-schema-validationcurldatastructurecss-in-jsBigUint64Arrayfull-widthECMAScript 2022superagentgroupByimmutableoptionuninstalllintcallbackxtermIteratorworkerdifffpirqrfc4122tslibconsoleUint8Arrayecmascript[[Prototype]]lookidlesetbundlingvalidatorestreeiterationtoolsyamlUint32ArrayArraybyteOffsetECMAScript 2019openstringkeyswhatwgswfregular expressionsiterateCSSStyleDeclarationassertiontrimLeft
@libtommy2024/dolores-quidem-iusto-repudiandae@libtommy2024/tenetur-ut-placeat-alias@libtommy2024/blanditiis-optio-culpa-nemo@libtommy2024/consectetur-aspernatur-illum-asperiores@libtommy2024/consequatur-corporis-quisquam-aliquid@libtommy2024/corporis-occaecati-tempore-magni@libtommy2024/corporis-ullam-velit-fuga@libtommy2024/corrupti-adipisci-non-optio@libtommy2024/corrupti-illum-doloremque-veritatis@libtommy2024/accusamus-dolorum-placeat-eum@libtommy2024/accusamus-tenetur-esse-illo@libtommy2024/accusantium-nam-eum-commodi@libtommy2024/ad-dolorem-nemo-blanditiis@libtommy2024/adipisci-eum-aut-vero@libtommy2024/alias-beatae-rerum-hic@libtommy2024/cum-veritatis-quos-doloribus@libtommy2024/cumque-ex-cum-enim@libtommy2024/cupiditate-amet-rerum-fugiat@libtommy2024/curly-octo-guacamole@libtommy2024/debitis-aut-qui-eveniet@libtommy2024/debitis-impedit-doloremque-magni@libtommy2024/deleniti-aut-velit-libero@libtommy2024/deleniti-provident-consectetur-maiores@libtommy2024/deleniti-repellat-soluta-nulla@libtommy2024/dignissimos-ipsam-amet-voluptate@libtommy2024/distinctio-voluptates-aliquam-necessitatibus@libtommy2024/dolore-corrupti-error-laudantium@libtommy2024/aliquam-veritatis-id-minima@libtommy2024/amet-reprehenderit-ipsa-cupiditate@libtommy2024/animi-enim-amet-aperiam@libtommy2024/animi-odio-rerum-temporibus@libtommy2024/corrupti-nesciunt-consequatur-optio@libtommy2024/corrupti-perferendis-aperiam-quo@libtommy2024/culpa-iusto-inventore-eum@libtommy2024/culpa-non-pariatur-et@libtommy2024/culpa-quod-accusamus-quae@libtommy2024/cum-tempora-accusantium-deleniti@libtommy2024/alias-ut-adipisci-vitae@libtommy2024/aliquam-totam-pariatur-debitis@libtommy2024/deserunt-accusantium-nihil-quod@libtommy2024/animi-recusandae-distinctio-minus@libtommy2024/architecto-eius-quos-error@libtommy2024/architecto-error-rem-sed@libtommy2024/asperiores-vel-pariatur-sed@libtommy2024/assumenda-natus-distinctio-reiciendis@libtommy2024/at-fuga-quibusdam-voluptatibus@libtommy2024/autem-quisquam-perferendis-molestias@libtommy2024/beatae-earum-sint-asperiores@libtommy2024/blanditiis-dolor-consectetur-pariatur@libtommy2024/illo-fugit-iste-magnam@libtommy2024/impedit-fugiat-ratione-accusantium@libtommy2024/in-deleniti-molestiae-animi@libtommy2024/in-excepturi-sint-perspiciatis@libtommy2024/in-iste-nisi-at@libtommy2024/incidunt-iste-molestiae-recusandae@libtommy2024/inventore-necessitatibus-nulla-perspiciatis@libtommy2024/ipsum-placeat-corrupti-libero@libtommy2024/iste-harum-delectus-vel@libtommy2024/iure-nobis-veritatis-minus@libtommy2024/iusto-suscipit-fugit-recusandae@libtommy2024/labore-consequuntur-perferendis-facere@libtommy2024/labore-temporibus-tempora-est@libtommy2024/laboriosam-expedita-voluptatum-fugit@libtommy2024/laudantium-doloribus-adipisci-quod@libtommy2024/laudantium-neque-voluptate-omnis@libtommy2024/laudantium-optio-nihil-incidunt@libtommy2024/eum-suscipit-aperiam-optio@libtommy2024/excepturi-itaque-minima-impedit@libtommy2024/expedita-accusamus-deserunt-esse@libtommy2024/expedita-voluptatum-harum-quo@libtommy2024/facere-est-quasi-repudiandae@libtommy2024/facere-optio-numquam-quibusdam@libtommy2024/facere-quis-velit-unde@libtommy2024/facilis-dolorem-doloribus-ab@libtommy2024/facilis-eos-ad-libero@libtommy2024/fuga-maxime-earum-nisi@libtommy2024/harum-quaerat-incidunt-aperiam@libtommy2024/id-natus-animi-modi@libtommy2024/id-suscipit-molestiae-similique@libtommy2024/libero-sed-eum-exercitationem@libtommy2024/magnam-ad-ad-eos@libtommy2024/magnam-magni-quia-est@libtommy2024/magni-asperiores-blanditiis-veniam@libtommy2024/magni-vel-recusandae-minus@libtommy2024/minima-ipsam-natus-dolor@libtommy2024/minus-ratione-accusantium-fuga@libtommy2024/modi-facere-nemo-quas@libtommy2024/dolore-culpa-quia-aut@libtommy2024/dolore-et-vel-voluptas@libtommy2024/dolore-praesentium-expedita-vitae@libtommy2024/dolore-velit-perspiciatis-nisi@libtommy2024/dolorem-cumque-ullam-earum@libtommy2024/dolorem-explicabo-itaque-atque@libtommy2024/dolorem-temporibus-error-repellendus@libtommy2024/doloremque-amet-accusantium-quis@libtommy2024/doloremque-error-commodi-accusantium@libtommy2024/doloremque-libero-eius-provident@libtommy2024/ducimus-nesciunt-doloremque-eligendi@libtommy2024/ea-nulla-architecto-dolores@libtommy2024/ea-rerum-hic-odio
1.2.0

13 days ago

1.2.1

13 days ago

1.0.0

1 month ago