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.
Build beautiful and extensible eventing APIs.
npm install --save dot-event
Part of the beauty of the dot-event
API is that it can shrink down to incredibly simple functionality.
Here we have the simplest possible subscriber and emitter:
import Events from "dot-event"
const events = new Events()
events.on(() => {})
events.emit()
Subscription listeners can be asynchronous:
events.on(async () => {})
await events.emit()
The emitter returns a promise that waits for listeners to resolve.
Identify subscriptions by dot-prop string:
events.on("hello.world", () => {})
events.emit("hello.world") // emits
events.emit() // doesn't emit
Dot-props come in handy with the onAny
subscriber, which subscribes to a dot-prop and its child props:
events.onAny("hello", () => {})
events.emit("hello") // emits
events.emit("hello.world") // emits
events.emit() // doesn't emit
Subscription listeners receive a single object argument. To add to that object, use the withOptions
function on emit:
events.on(({ hello }) => {})
events.withOptions({ hello: "world" }).emit()
Or use withOptions
on the subscriber:
events.withOptions({ hello: "world" }).on(({ hello }) => {})
events.emit()
The listener argument also contains an event
property with extra information, such as the emitter arguments:
events.on(({ event }) => {
event.args // [123, true]
})
events.emit(123, true)
An "operation" is a way to namespace your events and make a custom emitter function:
events.withOp("create").on(() => {})
events.create() // emits
Operation functions take the same arguments and behave similar to emit
.
Subscribe to before or after the main subscription listener:
events.before().on(() => {})
events.on(() => {})
events.after().on(() => {})
events.emit()
Subscribe to any emit:
events.onAny(() => {})
events.emit() // emits
events.emit("hello") // emits
events.emit("hello.world") // emits
events.create() // emits
When used with a dot-prop, it subscribes to any child prop emit:
events.onAny("hello", () => {})
events.emit("hello") // emits
events.emit("hello.world") // emits
events.emit() // doesn't emit
Like on
, but emit immediately if a previous emit occurred:
events.emit()
events.onEmitted(() => {}) // emits immediately
events.emit() // emits
Like onAny
, but emit immediately if a previous emit occurred:
events.emit("hello.world")
events.onAnyEmitted("hello", () => {}) // emits immediately
events.emit("hello.world") // emits
events.emit() // doesn't emit
events.once(() => {})
events.emit() // emits
events.emit() // doesn't emit
Like once
, but emit immediately if a previous emit occurred:
events.emit()
events.onceEmitted(() => {}) // emits immediately
events.emit() // doesn't emit
A combination of once
and onAny
:
events.onceAny("hello", () => {})
events.emit("hello.world") // emits
events.emit("hello.world") // doesn't emit
A combination of once
, onAny
, and onEmitted
:
events.emit("hello.world")
events.onceAnyEmitted("hello", () => {}) // emits immediately
events.emit("hello.world") // doesn't emit
Build lots of dot-prop subscriptions at once:
events.on({
hello: () => {},
"hello.world": () => {},
})
Function | Features | Empty | Props | Wildcard | Prop variable | Wildcard op |
---|---|---|---|---|---|---|
after | Subscribes to after emit | ✗ | ✗ | ✗ | ✗ | ✗ |
before | Subscribes to before emit | ✗ | ✗ | ✗ | ✗ | ✗ |
emit | Emits | ✗ | ✗ | ✗ | ✗ | ✗ |
on | Subscribes | ✗ | ✗ | ✗ | ✗ | ✗ |
onAny | Subscribes to child props | ✓ | ✓ | ✓ | ✓ | ✓ |
onAnyEmitted | Subscribes to child prop Emit immediately if emitted | ✓ | ✓ | ✓ | ✓ | ✓ |
onEmitted | Emit immediately if emitted | ✗ | ✗ | ✗ | ✗ | ✗ |
once | Subscribes once Returns promise | ✗ | ✗ | ✗ | ✗ | ✗ |
onceAny | Subscribes to child props once Returns promise | ✓ | ✓ | ✓ | ✓ | ✓ |
onceAnyEmitted | Subscribes to child props once Emit immediately if emitted Returns promise | ✓ | ✓ | ✓ | ✓ | ✓ |
onceEmitted | Subscribes to child props once Emit immediately if emitted Returns promise | ✗ | ✗ | ✗ | ✗ | ✗ |
withOptions | Adds options to emit Adds options to subscribe | ✗ | ✗ | ✗ | ✗ | ✗ |
FAQs
Powerful event emitter
The npm package dot-event receives a total of 90 weekly downloads. As such, dot-event popularity was classified as not popular.
We found that dot-event demonstrated a not healthy version release cadence and project activity because the last version was released 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
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.