Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
@matter/model
Advanced tools
This folder contains an object model that captures Matter semantics as precisely as possible. It also includes support logic related to model manipulation and runtime validation.
Other representations of the Matter data model in matter.js offer similar representations with a different focus. The TLV models data with a focus on serialization and manipulation of instance values. The Cluster API models clusters in an operational form and in fact is partially generated from this model.
All references to Matter specification in the object model corpus refer collectively to Matter 1.3 Core Specification, Matter 1.3 Application Cluster Specification, and Matter 1.3 Device Library Specification.
Subfolders support specific functions:
The datatypes in elements model Matter elements using TypeScript types. Elements are a formal component of the Matter specification that describe individual structures in the data model. Our element definitions are subtypes of BaseElement.
For each element definition, a class in models offers a concrete operational implementation. This is the API to use if you need to work with the data model beyond simple data modeling. Our models are all subtypes of Model.
MatterModel is the primary entrypoint to the API.
Obtain a working instance of the model:
import { MatterModel } from "@matter/model";
const matter = new MatterModel();
Retrieve standard definitions from the model:
import { DatatypeModel, ClusterModel } from "@matter/model";
const OnOffCluster = matter.get(ClusterModel, "OnOff");
const uint8 = matter.get(DatatypeModel, "uint8");
Iterate over attributes of a cluster:
for (const attribute of OnOffCluster.attributes) {
// Do something
}
The base model includes global datatypes defined by the Matter specification. We generate other elements of the standard model by merging models in the top-level models package.
To recreate the standard model files:
cd matter.js/codegen
npm run generate-model
Input model spec.ts is the data model defined by the Matter specification.
We generate spec.ts from the Matter specification documents. This ensures our definitions align with the specification and gives us detailed information unavailable elsewhere.
The spec generator is generate-spec.ts. To run:
cd matter.js/codegen
npm run generate-spec
Details we extract from the specification include standard element names, types and detailed documentation including cross references to specification documents. We also extract DSL-based definitions of Matter concepts such as conformance, constraints, etc.
Input model chip.ts is the CHIP data model. CHIP is Project CHIP's connectedhomeip repository. At the time of this writing this is the most robust open-source programmatic definition of Matter elements and serves as a defacto standard for Matter definitions.
We generate chip.ts from CHIP definitions. This ensures our definitions align with CHIP's.
The CHIP generator is generate-chip. To run:
cd matter.js/codegen
npm run generate-chip
Input model local.ts defines elements that are unavailable (or incorrect) in the other models. This partial model is the result of editorial decisions by matter.js contributors.
Unlike above data models, the standard data model in src/model/standard is part of the matter.js public API. This represents our best attempt at a complete Matter data model.
generate-model.ts creates this model by analyzing and combining elements from the models above.
To update the standard model:
cd matter.js/codegen
npm run generate-model
One of the ways we use the Matter Object Model is to generate cluster implementations.
The cluster generator is generate-cluster.ts. To run:
cd matter.js/codegen
npm run generate
Note that this will rebuild the model (above) and the clusters. If you know the model is unchanged you can also just generate the clusters:
cd matter.js/codegen
npm run generate-clusters
This is generally only useful if you are modifying the cluster generation code or if you have already generated the model.
Many of the scripts mentioned above generate models. It is important that these models are accurate.
To this end, there is extensive validation that every generator runs before output. Validation prints detailed information about the state of every element in the model.
Each validation error is associated with an error code. If there are errors, a summary of the errors is printed at the end of validation.
The final model is also validated during testing by MatterTest.
Automatic validation can't find every semantic error but it does ensure the resulting model is functional.
FAQs
Matter data model
The npm package @matter/model receives a total of 12,276 weekly downloads. As such, @matter/model popularity was classified as popular.
We found that @matter/model demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.