{"id":19696116,"url":"https://github.com/volijs/mixturejs","last_synced_at":"2026-04-21T01:31:48.979Z","repository":{"id":57298656,"uuid":"52629959","full_name":"VoliJS/mixturejs","owner":"VoliJS","description":"ES6/ES5 mixins, synchronous events, and object manipulation tools.","archived":false,"fork":false,"pushed_at":"2017-01-18T22:28:12.000Z","size":499,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-17T22:41:42.162Z","etag":null,"topics":["events","javascript","mixins","synchronous-events","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VoliJS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-26T20:12:43.000Z","updated_at":"2019-11-09T11:20:38.000Z","dependencies_parsed_at":"2022-08-31T03:01:25.211Z","dependency_job_id":null,"html_url":"https://github.com/VoliJS/mixturejs","commit_stats":null,"previous_names":["volicon/object-plus","volicon/mixturejs"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VoliJS%2Fmixturejs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VoliJS%2Fmixturejs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VoliJS%2Fmixturejs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VoliJS%2Fmixturejs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VoliJS","download_url":"https://codeload.github.com/VoliJS/mixturejs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251493954,"owners_count":21598204,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["events","javascript","mixins","synchronous-events","typescript"],"created_at":"2024-11-11T19:33:49.250Z","updated_at":"2025-12-12T05:49:40.095Z","avatar_url":"https://github.com/VoliJS.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MixtureJS\n\nMixins is very powerful abstraction addressing cross-cutting concerns, which can dramatically simplify inheritance graph when used wisely.\n\nMixtureJS is the toolkit combining React-style mixins, Backbone-style events, and minimal set of Underscore-style object manipulation functions. Just what you need when you're working in modern ES5/ES6 envorinment, packed in API which you already know.\n\nWritten in TypeScript, works with ES5, ES6, and TypeScript.\n\nAPI docs: [here](http://volicon.github.io/mixturejs/)\n\n## Events Performance\n\nMixtureJS _implements_ [Backbone API for Events](http://backbonejs.org/#Events), but internally it's entirely different. Here's the results of the typical\nrun of the [performance tests](/tests) enclosed.\n\n![performance](/perf-chart.jpg)\n\n## Features\n\n- `Mixable`, React-style mixins implementation.\n    - Fine-grained control over member merge rules.\n    - Can mix both classes and plain objects.\n    - Works with and without ES6 class decorators.\n- `Object.extend` to simulate classes in ES5.\n    - 100% backward compatible with Backbone `.extend()`.\n    - Complete `Mixable` support.\n    - Native properties declatations (`properties` specification).\n- `Messenger`, synchronous events.\n    - Can be used as mixin and as a base class.\n    - 100% backward API compatibility with [Backbone Events](http://backbonejs.org/#Events) (passes Backbone 1.2.x unit test)\n    - Much faster than Backbone events.\n- `tools`\n    - Object manipulation tools (`assign`, `defaults`, `mapObject`, etc).\n    - Simple logging API with variable log-level and overridable functions. Defaults to the `console`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolijs%2Fmixturejs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvolijs%2Fmixturejs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolijs%2Fmixturejs/lists"}