New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@project-chip/matter.js

Package Overview
Dependencies
Maintainers
4
Versions
264
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@project-chip/matter.js

Matter protocol in pure js

  • 0.8.2-alpha.0-20240429-87252f3d
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
780
decreased by-70.67%
Maintainers
4
Weekly downloads
 
Created
Source

matter.js

Implementation of Matter protocol in typescript with no native dependencies (and very limited dependencies).

This is the JavaScript only Core of the Matter protocol. It is used by other projects to implement Matter Nodes and Clients and add the relevant specific implementations for Network and other elements.

The following features are abstracted away to allow to be implemented environment specific:

  • Network (UDP/MDNS)
  • Crypto (to be split out)
  • Storage
  • Date/Timer
  • Logger (Default uses "console")

Exported functionality

This library exports the Matter protocol functionality as well as some helper functions as named exports:

ExportDescription
@project-chip/matter.jsExports the API to implement a Device or a Controller.
@project-chip/matter.js/behaviorExports Behavior classes (New API) as framework to implement all relevant Logic for clusters and internal logic. Contains auto-generated class structures and also Cluster default implementations.
@project-chip/matter.js/certificateExports Certificate (Root-/PAA/PAI/IAC/DA-Certificates) related functionality
@project-chip/matter.js/clusterExports Matter Cluster definitions and Default Cluster-Handlers
@project-chip/matter.js/codecExports Codecs for e.g. Matter-Messages
@project-chip/matter.js/commonExports certain common functionalities
@project-chip/matter.js/cryptoExports Crypto related abstract functionality that needs to be implemented platform specific!
@project-chip/matter.js/datatypeExports Matter Data types
@project-chip/matter.js/deviceExports Matter Device relevant classes (Legacy API!)
@project-chip/matter.js/devicesExports Matter Device type classes (NEW API!)
@project-chip/matter.js/endpointExports Matter Endpoint structure classes (NEW API!)
@project-chip/matter-.js/environmentExports environment functionalities, which handes central functions like MDNS and configuration
@project-chip/matter.js/fabricExports Matter-Fabric functionality
@project-chip/matter.js/interactionExports Matter Interaction protocol functionality
@project-chip/matter.js/logExports Logging functionality (based on "console")
@project-chip/matter.js/mathExports Math functionality used by Matter
@project-chip/matter.js/mdnsExports Basic MDNS functionality (uses Network implementation)
@project-chip/matter.js/modelExports a JavaScript version of the Matter data model
@project-chip/matter.js/netExports Basic Network abstract functionality that needs to be implemented platform specific!
@project-chip/matter.js/nodeExports Matter Node functionality which is used as basis for a device or controller (NEW API!). It also contains Matter Interaction model abstractions for the new API.
@project-chip/matter.js/protocolExports Basic Matter protocol functionality
@project-chip/matter.js/schemaExports Schema definitions and functionality
@project-chip/matter.js/securechannelExports Secure Channel functionality
@project-chip/matter.js/sessionExports Session and Secure-Session functionality
@project-chip/matter.js/specExports Matter Specification References
@project-chip/matter.js/storageExports Basic Storage abstract functionality that needs to be implemented platform specific!
@project-chip/matter.js/timeExports Basic Time/Timer abstract functionality that needs to be implemented platform specific!
@project-chip/matter.js/tlvExports Matter TLV type definitions
@project-chip/matter.js/utilExports Basic Utility functionality

Both exports and the typings are exported as CommonJS and ES6 modules.

For more details please refer to the API Documentation.

Included Cluster default implementations

Each cluster that has commands also needs to have them implemented based on the chosen feature set.

Matter.js provides a specification-compliant implementation of all Matter 1.1 clusters. For many clusters our implementations perform high-level business logic. For other clusters you provide the needed business logic by extending the Matter.js implementation. In all cases Matter.js takes care of details like the Matter protocol, input and output validation and persistence. The developer can then decide if own functionality needs to be developed and can overwrite and extend these implementations or just use them.

Matter.js allows the following clusters to be used directly with a default implementation for all relevant commands - or the clusters do not need any commands and so the standard feature set of Matter.js for attributes is sufficient. All clusters contained in this list are also verified using the CI YAML project-chip certification tests (if the PICS code is in brackets then no tests are available).

PICSCluster nameFeaturesMatter-VersionAdditional Information
(ACL)Access ControlNone1.1No command implementations needed, but ACL checks still pending in matter.js
CADMINAdministrator CommissioningNone, Basic1.1Internal Root cluster implemented, no need to customize
APBSCApplication BasicNone1.1No command implementations needed
BCBallast ConfigurationNone1.1No command implementations needed, Cluster provisional
BINFOBasic InformationNone1.1Internal Root cluster implemented, no need to customize, all events are automatically emitted by matter.js
BindingNone1.1No command implementations needed, support of bindings pending in matter.js
BOOLBoolean StateNone1.1No command implementations needed. If the StateChanged event is enabled it is emitted automatically on state change.
BRBINFOBridged Device Basic InformationNone1.1Internal Root cluster implemented, no need to customize, reachabilityChanged event is automatically emitted by matter.js
DESCDescriptorNone1.1Internal Root cluster implemented, no need to customize, data are automatically manabed by matter.js
CNETEthernet Network DiagnosticsNone1.1No command implementations needed when used without any features
FLABELFixed LabelNone1.1No command implementations needed
FLWFlow MeasurementNone1.1No command implementations needed
CGENGeneral CommissioningNone1.1Internal Root cluster implemented, no need to customize
DGGENGeneral DiagnosticsNone1.1No command implementations needed when used without test event triggers. All mandatory attributes and events supported. Optional attributes, events and Test event triggers needs to be implemented by developer if needed.
IIdentifyNone, IdentifyQuery1.1All mandatory commands implemented. Additionally, state isIdentifying and events start/stopIdentifying are available to easiely extend the server.
ILLIlluminance MeasurementNone1.1No command implementations needed
(RH)Leaf Wetness MeasurementNone1.1No command implementations needed
LVLLevel ControlOnOff, Lighting1.1Default implementation sets currentLevel and remainingTime attributes by respecting the feature requirements on best-effort basis. Use managedTransitionTimeHandling state to true to use transitions managed by matter.js.
LCFGLocalization ConfigurationNone1.1No command implementations needed
LOWPOWERLow PowerNone1.1The default implementation emits the internal event enterLowPowerMode that an implementation can listen too. Alternatively, you can override the sleep command by extending the cluster.
CNETNetwork CommissioningNone1.1No command implementations needed when using with Ethernet network, needs custom implementation for Wi-Fi or Thread, see examples
MODMode SelectOnOff1.1Default implementation sets the new mode when change command is used and automatically handles StartUpMode and OnMode.
OCCOccupancy SensingNone1.1No command implementations needed
OOOnOffNone, LevelControl-For-Lighting1.1LevelControl-For-Lighting feature is enabled automatically in default implementation. offWithEffect currently ignores requested effects and turns off. onWithRecallGlobalScene currently ignores the global scene and turns on.
OnOff Switch ConfigurationNone1.1No command implementations needed
OPCREDSOperational CredentialsNone1.1Internal Root cluster implemented, no need to customize
PSPower SourceNone1.1No command implementations needed. Optional events needs to be emitted by the developer if needed
(PSCFG)Power Source ConfigurationNone1.1No command implementations needed
PRSPressure MeasurementNone1.1No command implementations needed
(PXCFG)Proxy ConfigurationNone1.1No command implementations needed
PCCPump Configuration and ControlNone1.1No command implementations needed, Relevant Events need to be enabled and emitted by the developer when needed, Cluster client dependencies are not yet possible with matter.js
RHRelative Humidity MeasurementNone1.1No command implementations needed
(RH)Soil Moisture MeasurementNone1.1No command implementations needed
SWTCHSwitchNone1.1No command implementations needed. The mandatory feature-dependent events needs to be implemented by the developer.
TMPTemperature MeasurementNone1.1No command implementations needed
TSUICThermostat User InterfaceNone1.1No command implementations needed
LTIMETime Format LocalizationNone1.1No command implementations needed
LUNITUnit LocalizationNone1.1No command implementations needed
ULABELUser LabelNone1.1No command implementations needed
WAKEONLANWakeOnLanNone1.1No command implementations needed
WNCVWindow CoveringNone1.1All commands for all feature sets are implemented. Movements will by default be executed as fast as possible by just setting the new value, so own movement logic needs to be implemented.

More will come over time and can also be contributed by the community!

Typescript note

To have Typescript and your IDE know all the relevant exported functionality you need to use the following in your tsconfig.json:

{
    "compilerOptions": {
        "moduleResolution": "node16", // Required to support package.json exports
        "module": "node16" // Required to make sure all imports are js
    }
}

Additionally, we recommend using "strictNullChecks": true or better for code quality "strict": true to make sure that all types are correctly determined.

matter.js usage

matter.js is used at the core of those two projects:

  • matternode: a light-weight node.js implementation of a Matter Node
  • matter-node.js: a Matter client / server running on node.js compatible with HA (Android / iOs support in progress)

Building

  • npm run build: Build all code and create CommonJS and ES6 variants in dist directory. This will built incrementally and only build the changed files.
  • npm run build-clean: Clean the dist directory and build all code from scratch

Tests

  • npm run test-node: Run tests in node.js
  • npm run test-web: Run tests in the browser
  • npm run test: Run all tests

test-web will create a /coverage directory containing the test code coverage

Keywords

FAQs

Package last updated on 29 Apr 2024

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc