
Research
Namastex.ai npm Packages Hit with TeamPCP-Style CanisterWorm Malware
Malicious Namastex.ai npm packages appear to replicate TeamPCP-style Canister Worm tradecraft, including exfiltration and self-propagation.
@erafx-tech/capacitor-media-session-capacitor6
Advanced tools
Temporary forked version of @jofr/capacitor-media-session to support capacitor 6
Capacitor plugin for Media Sessions on Web, Android and iOS. Just like the Media Session Web API this enables
This plugin is necessary for Capacitor apps because the Android WebView does not support the Media Session Web API (if you don't need Android support you could just use the Web API directly on Web and iOS). On Web and iOS this plugin is actually just a very thin wrapper around the Web API and uses it directly, only Android needs a native implementation.
Another problem with audio playback (using web standards, e.g. an <audio> element) in Capacitor apps on Android is that it does not work reliably in the background. If your app is in the background Android will force your app to go to sleep even if audio is currently playing in the WebView. This plugin also tries to solve this problem by starting a foreground service for active Media Sessions enabling background playback.
If you are using Capacitor 5 just install the latest 3.x version of this plugin using
npm install @jofr/capacitor-media-session
npx cap sync
For Capacitor 4 you can install the 2.x version of this plugin instead (npm install @jofr/capacitor-media-session@2) and for Capacitor 3 the 1.x version of this plugin (npm install @jofr/capacitor-media-session@1).
The API of this plugin is modeled after the already widely supported Media Session Web API. That way most available documentation for this web standard should be easily adaptable to this Capacitor plugin and it should be easy to use if you are already familiar with it. If your are not yet familiar with the concepts you can read more about that on MDN or on web.dev.
There is one notable difference compared to the Web API: You have to explicitly set the playback state to "playing" (using setPlaybackState()) for the notification to start showing. You also have to explicitly set action handlers for play/pause (using setActionHandler()) for the controls in the notification to show up and work. For simple cases on the Web platform (e.g. playing audio using an <audio> element) the browser detects playback and wires simple actions like play/pause automatically up. Using this plugin you have to wire up the <audio> element manually because the plugin cannot detect audio playback in the WebView on Android automatically. There is an example app included in the repository that shows how to do that.
setMetadata(...)setPlaybackState(...)setActionHandler(...)setPositionState(...)setMetadata(options: MetadataOptions) => Promise<void>
Sets metadata of the currently playing media. Analogue to setting the metadata property of the MediaSession interface when using the Media Session API directly.
| Param | Type |
|---|---|
options | MetadataOptions |
setPlaybackState(options: PlaybackStateOptions) => Promise<void>
Indicate whether media is playing or not. Analogue to setting the playbackState property of the MediaSession interface when using the Media Session API directly.
| Param | Type |
|---|---|
options | PlaybackStateOptions |
setActionHandler(options: ActionHandlerOptions, handler: ActionHandler | null) => Promise<void>
Sets handler for media session actions (e.g. initiated via onscreen media controls or physical buttons). Analogue to calling setActionHandler() of the MediaSession interface when using the Media Session API directly.
| Param | Type |
|---|---|
options | ActionHandlerOptions |
handler | ActionHandler | null |
setPositionState(options: PositionStateOptions) => Promise<void>
Update current media playback position, duration and speed. Analogue to calling setPositionState() of the MediaSession interface when using the Media Session API directly.
| Param | Type |
|---|---|
options | PositionStateOptions |
| Prop | Type |
|---|---|
album | string |
artist | string |
artwork | any[] |
title | string |
| Prop | Type |
|---|---|
playbackState | MediaSessionPlaybackState |
| Prop | Type |
|---|---|
action | MediaSessionAction |
| Prop | Type |
|---|---|
action | MediaSessionAction |
seekTime | number | null |
| Prop | Type |
|---|---|
duration | number |
playbackRate | number |
position | number |
(details: ActionDetails): void
FAQs
Temporary forked version of @jofr/capacitor-media-session to support capacitor 6
We found that @erafx-tech/capacitor-media-session-capacitor6 demonstrated a not healthy version release cadence and project activity because the last version was released 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
Malicious Namastex.ai npm packages appear to replicate TeamPCP-style Canister Worm tradecraft, including exfiltration and self-propagation.

Product
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.