30 open-source projects similar to typestack/class-transformer, ranked by how many features they have in common. Compare stars, activity and what each one does to find the best Class Transformer alternative.
This library is a PHP-based serialization framework designed to convert complex object graphs into structured formats such as JSON, XML, YAML, and CSV, and to reconstruct those objects from serialized data. It functions as a data transformation tool that maps object properties to array structures, facilitating both application state persistence and the exchange of data between systems. The framework distinguishes itself through a two-stage pipeline that normalizes objects into intermediate structures before encoding them into specific formats. It supports advanced mapping requirements, includ
MobX State Tree is a structured, tree-based state management library for JavaScript applications that combines typed model definitions with reactive snapshots and patch-based change tracking. It provides a reactive state container with runtime and compile-time type safety, where application state is defined as a tree of typed models with collocated actions, computed views, and lifecycle hooks for predictable state mutations. The library is built around an action-centric mutation model that encapsulates all state changes within named functions that directly modify the tree, supported by genera
Goja is a JavaScript engine and ECMAScript compliant interpreter implemented entirely in Go. It serves as an embedded scripting engine that allows Go applications to execute JavaScript code and integrate a programmable scripting layer without relying on Cgo or external native dependencies. The project functions as a bridge between Go and JavaScript, enabling bidirectional data exchange and function invocation. It allows Go hosts to expose native structs, slices, and maps as JavaScript objects and arrays, while providing mechanisms to export script values and functions back into native Go type
recursion-context is a set of PHP utilities for traversing and modifying deep data hierarchies. It provides a recursive variable processor designed to apply transformations across nested arrays and objects while maintaining stability. The project distinguishes itself through a recursion depth controller and reference tracking to prevent infinite loops and memory exhaustion when processing circular data structures. It monitors the level of nesting during traversal to avoid stack overflows. These tools cover hierarchical data transformation and nested data processing, allowing for stateful vis
This is a JavaScript immutable data library used to create objects and arrays that prevent direct mutation. It serves as an immutable state manager and object wrapper designed to ensure data consistency by blocking modifications while remaining compatible with standard JavaScript syntax. The library functions as a converter that transforms standard mutable data into frozen structures and can convert them back for local modifications. This allows for a workflow where data is switched between immutable and mutable versions to perform bulk edits before locking the state again. The project provi
HandyJSON is a Swift JSON serialization library and data mapper. It functions as an object mapper that converts JSON data into typed Swift models and transforms Swift objects back into JSON strings for storage or transmission. The library uses reflection to automatically map JSON keys to object properties and supports custom mapping metadata to resolve naming differences between APIs and code. It provides capabilities for extracting values from deep nested paths within a JSON structure and supports the transformation of complex types such as dates and URLs. The framework handles both the des
Virtus is a Ruby attribute management and data coercion library used to define object schemas with typed attributes. It functions as a tool for transforming nested JSON structures and complex input formats into structured internal Ruby data types. The project provides a framework for creating value objects that are compared by their attribute values rather than memory identity. It allows for the mapping of complex external data into domain objects and supports the implementation of custom coercion logic to ensure data consistency. The library covers data modeling through schema-driven attrib
Boltons is a comprehensive utility toolkit and extension of the Python standard library. It provides a collection of reusable recipes and specialized data structures, system utilities, and helper libraries designed to support common programming tasks across various domains. The project is distinguished by a standard-library-only dependency model, ensuring maximum portability with zero external dependencies. It provides advanced implementations for data structures, such as immutable mappings and priority queues, alongside recursive data transformation tools for reshaping complex nested diction
Chrono is a JavaScript natural language date parser that converts unstructured text and relative date expressions into structured date objects. It functions as a multi-locale date parser and expression engine designed to resolve time expressions globally. The library is customizable, allowing for the definition of custom regular expression patterns and refinement rules to extract business-specific date formats. It provides mechanisms to resolve relative terms like tomorrow or next Friday based on a specific reference date. The system covers international date formatting across various region
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
Pendulum is a Python datetime library used for creating, manipulating, and formatting date and time objects with native timezone awareness. It extends the native Python datetime class to maintain compatibility while providing a specialized engine for date arithmetic and timezone management. The library features a dedicated ISO 8601 and RFC 3339 parser that converts standardized strings into date objects without requiring manual format strings. It also includes a relative time generator for producing natural language descriptions of time differences and a timezone management tool that automati
MessagePack-CSharp is a high-performance binary serialization library for .NET applications that converts object graphs into the MessagePack format. It functions as a C# data serialization toolkit and a polymorphic binary encoder capable of handling abstract classes and interfaces using union keys to identify concrete derived types. The library provides a binary format transcoder to transform binary data into human-readable JSON for debugging. It supports ahead-of-time formatter generation to avoid runtime overhead and implements LZ4 binary compression to reduce the size of serialized data.
Now is a date and time manipulation library for Go designed to generate precise calendar boundaries and convert time strings into structured objects. It serves as a utility for calculating the start and end timestamps for days, weeks, months, and years. The project provides tools for calculating specific weekdays relative to a reference point and performing date arithmetic to determine time ranges. It includes a toolkit for parsing date and time strings using configurable layouts and formats. The library functions as a wrapper for the standard Go time package to provide an interface for comp
This project is a comprehensive date and time library designed for parsing, formatting, and calculating dates and times with high precision. It provides a multi-calendar system implementation that supports conversions between proleptic Gregorian, Julian, ISO week, and Tabular Islamic calendars. The library is distinguished by its high-precision time clocks and its implementation of the IANA time zone database. It tracks physical time using UTC, TAI, and GPS clocks to account for leap seconds and provides a system for managing geographic time zones and offsets based on IANA data. The capabili
Reactor Core is a reactive programming toolkit and non-blocking foundation for composing asynchronous data pipelines on the JVM. It serves as an asynchronous stream processing framework and a backpressure management system, allowing developers to transform, filter, and combine sequences of events while regulating data flow between producers and consumers to prevent resource exhaustion. The library differentiates itself through a sophisticated concurrency scheduling system and demand-based flow control. It decouples signal processing from specific threads using a scheduler registry and provide
Pendulum is a Python date and time library that provides a simplified interface for date arithmetic, ISO parsing, localization, and timezone management. It serves as a replacement for the standard library datetime module, extending existing classes to maintain compatibility while offering a more intuitive management interface. The library distinguishes itself through a natural language date formatter that translates time differences into localized strings and a dedicated ISO 8601 date parser. It also includes tools for time-dependent logic testing, allowing the system clock to be mocked or fi
Streem is a stream-based programming language and data pipeline orchestrator. It provides a domain-specific language for defining concurrent data flows, allowing users to link data sources to destinations through a sequence of operations that transform and filter individual stream elements. The system uses a custom script syntax to define data-flow connections and pipeline definitions. This allows for the orchestration of concurrent data processing where multiple pipeline stages execute simultaneously to move data elements through the system. The platform covers functional data transformatio
Carbon is a Go library for semantic date and time calculations, formatting, and parsing. It provides a semantic interface to simplify temporal data handling and improve the readability of date and time manipulations. The library is distinguished by its support for multi-calendar date conversion, allowing transformations between Gregorian, Chinese Lunar, Persian, and Hebrew calendar systems. It also includes a localized temporal framework that uses ISO 639-1 codes to format dates and relative time differences across multiple language locales. Additional capabilities cover global time zone man
Fury is a multi-language binary serialization framework designed for encoding domain objects and complex graphs to facilitate cross-language data exchange. It includes an interface definition language compiler that translates schema definitions into idiomatic native types and serialization boilerplate across multiple languages. The project distinguishes itself through a zero-copy binary reader that allows specific fields to be accessed without deserializing the entire object, as well as an object graph serializer that preserves circular references and referential integrity. It also features a
Doctrine Collections is a PHP library that provides object-oriented abstractions for managing and manipulating groups of objects with array-like functionality. It wraps native PHP arrays in an object-oriented interface, enabling cleaner data manipulation through methods for filtering, mapping, and iteration. The library supports callback-driven transformation, applying a callback to every element and returning a new collection with the transformed values. It also enables criteria expression querying, allowing selection of matching elements by applying a criteria object with comparison express
Arrow is a Python date and time library that provides a simplified interface for creating and manipulating timestamps by wrapping the Python standard library. It serves as a tool for managing date objects, handling timezone offsets, and performing relative date calculations. The library is distinguished by its ability to humanize timestamps into natural language relative descriptions across multiple locales and parse human-readable time phrases back into precise date objects. It also features a specialized parser for converting ISO 8601 strings and custom formatted text into date objects. Br
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
Pikaday is a lightweight JavaScript datepicker widget and dependency-free UI component. It provides a graphical calendar interface for selecting dates that binds to form fields without requiring external libraries or frameworks. The project features a localizable calendar interface, allowing for the customization of month names, weekday labels, and regional text directions to support multiple languages. Its programmable API manages input formatting and selection restrictions. The tool covers a broad range of date selection capabilities, including date input validation, range restrictions, an
more-itertools is an extension library for the Python itertools module. It serves as a toolkit for manipulating iterables, providing a wide range of routines for data transformation, combinatorial generation, and iterator state management. The library distinguishes itself through advanced state management and complex sequence generation. It provides capabilities for peeking at future elements, seeking within sequences, and producing unique permutations, combinations, and set partitions from collections that may contain duplicate elements. Its broader capability surface covers data processing
Pikaday is a lightweight JavaScript datepicker library and client-side date input manager. It provides a standalone calendar interface for selecting dates in web applications as a zero-dependency UI component that operates without external frameworks or libraries. The tool features a modular CSS architecture that separates structural logic from visual presentation, allowing for flexible customization of the calendar layout. It includes built-in support for calendar localization, enabling the update of month names and weekday labels to match specific languages or regions. The library manages
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
Tempo is a JavaScript date manipulation library that provides a suite of tools for parsing, formatting, and calculating dates and times. It serves as a date arithmetic engine, a locale-aware formatter, and a timezone offset manager for native JavaScript date objects. The library includes a dedicated ISO 8601 date parser for validating and converting standardized strings into date objects. It handles geographic normalization through IANA timezone offset management and utilizes the native Internationalization API for region-specific date formatting. The project covers a broad range of date and
Sugar is a JavaScript utility library designed to extend native objects and prototypes with additional methods for data manipulation and transformation. It functions as a toolkit for object utilities, date manipulation, string inflection, and the polyfilling of missing or broken standard language features. The library provides the ability to map utility methods directly onto built-in prototypes or wrap values in temporary objects to enable method chaining without modifying global prototypes. It also includes a polyfill system to ensure consistent behavior across different execution environmen
Dollar is a functional programming library for Swift that provides a comprehensive toolkit for collection manipulation, string processing, mathematical calculations, and date and time management. It serves as a utility suite for filtering, aggregating, and restructuring arrays and dictionaries. The project implements functional programming patterns such as currying, memoization, and function composition. It also features a chainable wrapper interface that allows multiple data transformations to be applied sequentially before extracting a final result. The library covers a wide range of capab
Chrono is a Rust date and time library used for managing calendar dates, clock times, and timezone conversions. It functions as a high-precision timestamp tool and temporal data serializer for converting date and time objects into structured formats. The library includes a timezone conversion engine to translate timestamps between different geographical zones and manage local time configurations. Its broader capabilities cover date string formatting, high-precision timing, and the serialization of temporal data for database storage or network transmission.