
Product
Rust Support in Socket Is Now Generally Available
Socket’s Rust and Cargo support is now generally available, providing dependency analysis and supply chain visibility for Rust projects.
@mvc-react/mvc
Advanced tools
Toolkit for defining MVC applications in Typescript.
npm install --save-dev @mvc-react/mvc
When properly implemented, this framework:
@mvc-react ecosystem when integrated with them.ModelThe Model type encapsulates the essence of any item that can be viewed or interacted with, e.g. a book, a repository, a component, etc. It represents the item's archetype, that is, it defines the item's overall pattern and its properties. It generally consists of a ModelView—which is where the model's properties are articulated.
import { Model } from @mvc-react/mvc;
// Our custom ModelView
interface BookView {
title: string;
author: string;
isbn: string;
}
// Our custom Model definition
type BookModel = Model<BookView>;
const book: BookModel = {
modelView: {
title: "Screwtape Letters",
author: "C.S. Lewis",
isbn: "XXXX-XXXXX-XXXXX"
}
}
ReadonlyModelThe ReadonlyModel type represents a Model with an immutable modelView.
InteractiveModelThe InteractiveModel type represents a Model whose modelView changes according to specified model 'interactions'. It consists of an additional interact function, which takes a single ModelInteraction object as an argument and mutates the model's modelView accordingly.
A ModelInteraction basically comes in two forms: as a simple ModelInteraction which has a single property, type—which specifies the type of interaction to be executed; or as an InputModelInteraction which, as aptly named, contains an additional input property which encapsulates the interaction's input data if there is any.
import { InteractiveModel, Model, InputModelInteraction } from @mvc-react/mvc;
// Our custom ModelView definition
interface CalculatorView {
display: number;
}
// The interactions our model will handle
type CalculatorInteraction = (
InputModelInteraction<"add", {x: number, y: number}> |
InputModelInteraction<"subtract", {x: number, y: number}>
)
// Our custom Model definition
type CalculatorModel = InteractiveModel<
CalculatorView,
CalculatorInteraction
>;
// Implemented
class Calculator implements CalculatorModel {
private _modelView: {
display: 0,
}
get modelView() {
return this._modelView;
}
interact(interaction: CalculatorInteraction) {
switch (interaction.type) {
case "add": {
const { x, y } = interaction.input!;
this._modelView = { display: x + y };
break;
}
case "subtract": {
const { x, y } = interaction.input!;
this._modelView = { display: x - y };
break;
}
}
}
}
// Result
const calculator = new Calculator();
calculator.interact({ type: "add", input: { x: 2, y: 3 } });
console.log(calculator.modelView); // { display: 5 }
newReadonlyModel()Convenience function for constructing a new ReadonlyModel
FAQs
Toolkit for defining MVC applications
The npm package @mvc-react/mvc receives a total of 19 weekly downloads. As such, @mvc-react/mvc popularity was classified as not popular.
We found that @mvc-react/mvc demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket’s Rust and Cargo support is now generally available, providing dependency analysis and supply chain visibility for Rust projects.

Security News
Chrome 144 introduces the Temporal API, a modern approach to date and time handling designed to fix long-standing issues with JavaScript’s Date object.

Research
Five coordinated Chrome extensions enable session hijacking and block security controls across enterprise HR and ERP platforms.