20 repositorios
Utilities for comparing nested data structures by value rather than reference.
Distinct from Dependency Caches: None of the candidates cover the specific logic of deep object comparison for reactive dependency tracking.
Explore 20 awesome GitHub repositories matching software engineering & architecture · Deep Equality Comparison. Refine with filters or upvote what's useful.
react-use is a collection of reusable state and effect hooks for managing common logic in React applications. It serves as a comprehensive library for implementing state management patterns and wrapping various browser APIs into consistent hook interfaces. The project provides a specialized toolkit for DOM interaction and browser API integration, allowing components to track element dimensions, manage cookies, and monitor hardware sensors. It includes a suite of animation and timing utilities for physics-based numeric interpolation and frame-synced state updates. Beyond basic state managemen
Enables triggering effects only when the deeply nested values of a dependency change.
This is a persistent data structure library for JavaScript that provides collections which prevent the direct mutation of objects and arrays. It serves as an immutable state management tool and functional programming utility, ensuring that data remains unchanged after creation to simplify change detection and state tracking. The library enables the maintenance of application state by producing new versions of data structures during updates. It focuses on efficient data comparison by checking actual content instead of memory references and supports a functional programming workflow to prevent
Implements deep equality comparison to determine if two different object references represent the same data by value.
Immutable.js is a library of persistent data structures and a functional state management toolkit. It provides a collection of immutable objects and arrays that prevent direct mutation to ensure predictable state management in JavaScript applications. The library utilizes structural sharing to efficiently create new versions of data without full copying and implements lazy sequence processing to chain data transformations that execute only when values are requested. It also supports batch mutation processing, allowing multiple changes to be applied to a temporary mutable copy before returning
Provides utilities for deep equality comparison of nested data structures by value.
This project is a performance debugger and render profiler for React and React Native applications. It serves as a diagnostic utility to detect avoidable render cycles and identify the specific props, state, or hook changes that trigger component updates. The tool distinguishes itself by tracking the execution of both custom and third-party hooks to determine if their return values are causing unnecessary renders. It employs deep equality checks to notify developers when a component re-renders despite its props and state remaining functionally identical. Broad capabilities include frontend b
Implements recursive comparison of nested data structures to determine if a render was functionally necessary.
Cycle.js is a functional reactive web framework and observable-driven UI library used for building web applications. It employs a reactive stream architecture that treats the document object model and side effects as continuous data streams, coordinating state and logic through a functional cycle. The framework distinguishes itself by isolating side effects from core logic using a system of drivers. This architecture maps external events to internal commands through a symmetric input-output pipeline, ensuring that the application remains a cycle of pure functions. The project provides capabi
Compares the sequence and timing of events between two streams using a custom or default comparator.
jsdiff is a JavaScript text diffing library and comparison engine used to compute differences between strings or arrays. It identifies additions and removals between blocks of text and provides a system for generating and applying formatted Unix-style patches. The toolkit functions as a customizable token differ, allowing for the comparison of arbitrary token sequences using user-defined equality and tokenization rules. This enables the creation of specialized comparison tools for non-standard text or data formats. Comparison capabilities are available at the character, word, and line levels
Allows the difference engine to use custom comparison functions to determine if two tokens are identical.
This library is a data assertion tool and equality logic framework for PHP. It provides utilities to verify that two values, nested objects, or complex data types match based on their internal contents. The project distinguishes itself through the use of custom matching rules and configurable precision. It allows for the comparison of floating point numbers and dates using a defined margin of error to account for numeric precision loss. The framework covers deep value equality verification across scalars, arrays, and nested objects. It implements strict type enforcement to prevent implicit c
Provides utilities for recursively comparing nested data structures and objects by value rather than reference.
Rockstar is an esoteric programming language whose syntax is inspired by 1980s hard rock and heavy metal lyrics, making programs read like song lyrics. It uses poetic number literals, where the length of each word in a phrase is parsed as a decimal digit to initialize numeric variables, and pronoun-based variable references, where words like "it" and "they" resolve to the most recently assigned or compared variable at runtime. The language can be compiled to WebAssembly and run inside a web page for in-browser code execution. The language distinguishes itself through a lyric-driven parsing sy
Checks equality using lyrical keywords like is, was, are, or were, with type coercion for booleans and strings.
This is a configuration manager for Node.js applications that handles hierarchical settings across different deployment environments. It functions as an environment-based loader and settings parser that merges default configurations with overrides based on the current runtime context and hostname. The project distinguishes itself through a priority-based merge strategy that incorporates environment variables, command-line arguments, and external data sources to supersede file-based settings. It supports multi-format parsing for JSON, YAML, JavaScript, and TypeScript files, and allows for cust
Determines if two configuration objects are equivalent by performing a deep value comparison across all nested levels.
URI.js is a full-featured JavaScript library for parsing, building, normalizing, and mutating URLs and their components programmatically. It provides a mutable-component object model that exposes each URL part as a separate object with getter and setter methods, enabling direct manipulation of schemes, hosts, paths, query strings, and fragments. The library implements strict RFC 3986 compliance for encoding, decoding, and normalization of URI components, and includes a template expansion engine that substitutes variables using operator-specific rules. The library distinguishes itself through
Compares URLs for semantic equality, ignoring default ports, capitalization, and parameter order.
is-thirteen es una biblioteca de validación de números y comprobador de igualdad numérica diseñada para verificar si una entrada dada es igual al valor trece. Funciona como una herramienta de clasificación de datos que identifica este valor específico a través de flujos de entrada numéricos, textuales y visuales. El proyecto incluye un clasificador de números basado en imágenes que utiliza aprendizaje profundo y análisis de redes neuronales para identificar representaciones visuales del número trece dentro de imágenes cargadas. La biblioteca cubre una variedad de métodos de validación, incluyendo igualdad aritmética exacta, coincidencia de valores aproximados dentro de rangos de tolerancia definidos, análisis de notación científica y coincidencia de patrones lingüísticos para formas escritas del número.
Implements a tool for comparing values against thirteen using exact matches and approximate ranges.
Typia is a compile-time code generator that transforms TypeScript type annotations into runtime validation, serialization, and schema functions without requiring decorators or separate schema files. It generates optimized validation and serialization code during TypeScript compilation, producing dedicated functions for each type that eliminate runtime schema objects for faster execution. The project extends this core capability into several integrated areas. It generates fully typed client SDKs from NestJS controller source code, keeping server and client types synchronized automatically. It
Checks whether two values of the same type have identical declared properties, ignoring extra runtime fields.
attrs is a Python library that automatically generates initialization, representation, equality, hashing, and ordering methods from declarative class attribute definitions. At its core, it provides a class decorator metaprogramming framework that intercepts class creation to rewrite the class body, producing dunder methods without manual boilerplate. The library includes a comprehensive attribute validation toolkit with built-in validators for type checks, range constraints, regex matching, length limits, and logical composition of validation rules. The library distinguishes itself through it
Defines which attributes participate in equality checks and how they are compared, overriding default all-attribute comparison.
Tape is a TAP-producing test framework for Node.js that provides assertions, spies, subtests, and isolated test harnesses. It functions as both a test runner and an assertion library, outputting results in the Test Anything Protocol format for machine or human consumption. The framework manages test execution through callback-based async control, plan-based auto termination, and subtest stack isolation. It includes a spy wrapper system that replaces object methods with call-recording wrappers that restore originals during teardown, along with a teardown callback registry that collects and exe
Compares objects for identical structure and nested values using strict comparisons.
Este proyecto es una traducción al chino de una guía completa sobre el lenguaje de programación Go. Sirve como un recurso educativo localizado y un manual técnico diseñado para proporcionar orientación sobre la sintaxis del lenguaje, su diseño y el desarrollo de software. El recurso cubre una amplia gama de educación sobre el lenguaje Go, incluida la implementación de patrones de programación y diseño de sistemas. Incluye lecciones traducidas y ejemplos que se centran en características principales del lenguaje como la concurrencia y el uso de interfaces. El contenido abarca varias áreas de capacidad, incluidos los fundamentos del lenguaje, modelado de datos, reflexión en tiempo de ejecución y gestión de memoria. También proporciona una cobertura detallada de la arquitectura de software, manejo de errores, control de calidad y redes web. La documentación está estructurada como un manual técnico que incluye contenido traducido, erratas y correcciones para garantizar un aprendizaje preciso.
Covers recursive comparison of nested data structures by value using reflection.
why-did-you-update es una herramienta de desarrollo de React y perfilador de rendimiento diseñado para identificar re-renders innecesarios de componentes. Funciona como un depurador de renderizado que registra los cambios específicos de props y estado que activan actualizaciones en la consola del desarrollador. La utilidad se centra en la optimización del rendimiento de React detectando ciclos de actualización innecesarios. Proporciona registros de diagnóstico para resaltar por qué se actualizó un componente, ayudando a reducir los ciclos redundantes de la interfaz de usuario. La herramienta cubre la perfilación del rendimiento del frontend mediante el uso de wrappers de componentes de orden superior, comparaciones de instantáneas de estado y verificación de igualdad basada en referencias para determinar si un renderizado era necesario.
Detects and logs wasteful render cycles where data has not functionally changed.
Radash es una librería de utilidades funcionales de TypeScript diseñada para la transformación de datos, validación y gestión de flujos de trabajo. Proporciona una colección de funciones auxiliares tipadas para manipular arrays, objetos y cadenas. El proyecto cuenta con un toolkit de flujo de trabajo asíncrono para gestionar promesas, reintentos y límites de concurrencia, junto con una suite de validadores booleanos para verificar tipos primitivos, objetos y promesas. También implementa patrones de programación funcional como composición de funciones, aplicación parcial y patrones de respuesta de error primero. La librería cubre una amplia superficie de capacidades, incluyendo gestión de estado de objetos con clonación profunda y fusión, manipulaciones complejas de arrays y formateo de cadenas. Adicionalmente proporciona herramientas para la optimización de ejecución, como limitación de tasa (rate limiting) y caché de resultados.
Implements utilities for comparing nested data structures by value rather than reference.
Sprig is a comprehensive library of helper functions designed to extend the Go text template engine. It provides a wide array of custom functions that can be injected into the engine to enable complex data manipulation and logic directly within templates. The project offers specialized capabilities for cryptography, including the generation of private keys, X.509 certificates, and secure password hashes. It also includes advanced logic extensions for semantic versioning comparison, ternary evaluations, and the resolution of environment variables from the host operating system. The library co
Determines if two non-primitive data structures are deeply equal by value.
bufferline.nvim is a buffer line plugin for Neovim that provides a visual tab bar at the top of the editor to display open buffers. It functions as a workspace organizer and tabpage management interface, allowing users to switch the display mode between individual open buffers and global tabpages. The project features an LSP diagnostic visualizer that maps language server errors and warnings directly onto the buffer tabs. It enables UI customization through adjustable tab shapes and underline indicators to emulate the appearance of graphical text editors. The plugin includes capabilities for
Orders buffer tabs by extension, directory, or custom function via a configurable comparator.
Tengo is a dynamic, embeddable scripting language for Go applications that allows for the execution of custom scripts without requiring the host binary to be recompiled. It operates as a bytecode-compiled virtual machine, transforming source code into a compact intermediate representation for execution on a stack-based engine. The system is designed as a secure scripting sandbox, enforcing strict limits on memory allocation and execution time to safely run untrusted code. It supports concurrent script execution by cloning compiled bytecode and using recursive immutability conversion to share
Implements deep equality comparison for byte arrays, immutable arrays, and maps to determine identical data.