
Research
PyPI Package Impersonates SymPy to Deliver Cryptomining Malware
Malicious PyPI package sympy-dev targets SymPy users, a Python symbolic math library with 85 million monthly downloads.
@mvc-react/mvc
Advanced tools
Toolkit for defining MVC applications in Typescript.
npm install --save-dev @mvc-react/mvc
When properly implemented, this framework:
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.

Research
Malicious PyPI package sympy-dev targets SymPy users, a Python symbolic math library with 85 million monthly downloads.

Product
Create and share saved alert views with custom tabs on the org alerts page, making it easier for teams to return to consistent, named filter sets.

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