
Research
Node.js Fixes AsyncLocalStorage Crash Bug That Could Take Down Production Servers
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.
dag-to-layers
Advanced tools
Given a directed, acyclic graph, apply a layering. The returned value will be an array of sets of vertices representing the layer assignments. Edges outgoing from each layer may only point to vertices from earlier layers.
const toLayers = require('dag-to-layers')
const digraph = require('digraph-tag')
const graph = digraph`
A -> B
B -> C
C -> D
X -> Y
Y -> Z
Z -> D
D -> U
U -> V
`
let layers = toLayers(graph.vertices, graph.incoming, graph.outgoing)
/*
NB: vertex order within a given layer is not guaranteed:
L6: X X
L5: Y A |
L4: Z B Y A
L3: C | |
L2: D Z B
L1: U | |
L0: V | C
\ /
Y
|
D
|
U
|
V
*/
Map<Vertex → Set<Edge>> :: EdgesA map from Vertex to a Set of Edges is known as Edges.
[Set<Vertex>, ...] :: LayeringAn array representing a valid layering of a graph. From the above example, the layering would look something like this:
[ Set<V>, // ← layer zero
Set<U>,
Set<D>,
Set<C>,
Set<Z, B>,
Set<Y, A>,
Set<X> ] // ← layer six
assignLayers(v: Set<Vertices>, to: Edges, from: Edges[, i: Interface]) → LayeringCreate a Layering from a graph represented by a set of vertices v, a map of vertices to incoming edges, a map of vertices to outgoing edges, and an optional interface.
(Edge → Vertex) :: E2VA mapping function from edge to vertex.
{[getFrom:E2V][, getTo:E2V]} :: InterfaceAn object containing methods necessary for implementing the layer assignment algorithm.
getFrom should return the source vertex of an edge, getTo should return the destination
vertex.
The default values act as follows:
const getFrom = edge => edge[0]
const getTo = edge => edge[1]
MIT
FAQs
assign each vertex of a dag to a layer, inserting dummy vertices
We found that dag-to-layers 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
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.

Research
/Security News
A malicious Chrome extension steals newly created MEXC API keys, exfiltrates them to Telegram, and enables full account takeover with trading and withdrawal rights.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.