
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.
simplify-dag
Advanced tools
Given a directed acyclic graph, simplify straight-line runs into single vertices.
const simplify = require('simplify-dag')
const digraph = require('digraph-tag')
let graph = digraph`
A -> B
B -> C
C -> D
X -> Y
Y -> Z
Z -> D
D -> U
U -> V
`
let simplified = simplify(graph)
/*
A X
↓ ↓
B Y
↓ ↓ [A, B, C] [X, Y, Z]
C Z \___ ___/
\ / \ /
Y ---> Y
↓ ↓
D [D, U, V]
↓
U
↓
V
*/
Note: passing a graph with cycles to this module will mostly likely result in an infinite loop. Be sure to remove cycles from your graph before applying this module.
Map<Vertex → Set<Edge>> → EdgesA Map from Vertex (whatever type you provide) to Edge will be defined as Edges.
{vertices: Set<Vertex>, outgoing: Edges, incoming: Edges} → GraphAn object with the properties vertices, outgoing, and incoming, whose types are
Set<Vertex> and Edges respectively will be known as a Graph. Incoming Edges will
map a given Vertex instance to every incoming Edge, and outgoing Edges will map Vertex
instances to every outgoing Edge. Edge and Vertex types are user-defined – that is,
you should provide instructions to this module on how to treat these types.
Array<Vertex> → DerivedVertexDerivedVertex instances represent straight-line runs of Vertex instances from the original
graph. This module will only produce DerivedVertex instances.
{copyEdge: Function?, {s,g}et{From,To}: Function?}? → InterfaceAn Interface is defined as an object that optionally defines copyEdge, getFrom, and
getTo properties.
copyEdge takes the original Edge object, and should return a new copy of it.getFrom takes an Edge and returns the source of the edge. If not defined it will treat
edges as 2-element arrays, and attempt to take the first element as the source.getTo takes an Edge and returns the destination of the edge. As above, if not defined
it will treat edges as a 2-element array and return the second element as the destination.setFrom takes an Edge and a Vertex and should mutate the Edge such
that it originates from the vertex.setTo takes an Edge and a Vertex and should mutate the Edge such
that it terminates in the vertex.simplify(vertices: Set<Vertex>, incoming: Edges, outgoing: Edges, interface: Interface) → GraphGiven a set of vertices, a map from vertex to incoming edges, a map from vertex to outgoing
edges, and optionally an interface for Vertex and Edge interaction, return a new Graph
instance representing a simplified DAG.
MIT
FAQs
given a directed acyclic graph, contract straight-line runs to single vertices
The npm package simplify-dag receives a total of 1 weekly downloads. As such, simplify-dag popularity was classified as not popular.
We found that simplify-dag 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
Malicious PyPI package sympy-dev targets SymPy users, a Python symbolic math library with 85 million monthly downloads.

Security News
Node.js 25.4.0 makes require(esm) stable, formalizing CommonJS and ESM compatibility across supported Node versions.

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.