Comparing version 1.0.3 to 1.0.4
## Release notes | ||
__1.0.4__ | ||
No longer using recursion internally. This could potentially lead to "Maximum call stack size exceeded". | ||
__1.0.3__ | ||
@@ -3,0 +5,0 @@ Saving node_cls on process. |
@@ -63,25 +63,24 @@ let fs = require('fs'); | ||
function getAllContexts(asyncId, obj) { | ||
obj = obj || {}; | ||
if (!stack[asyncId]) | ||
return; | ||
for (let ns in stack[asyncId].contexts) { | ||
if (!obj[ns]) { | ||
obj[ns] = stack[asyncId].contexts[ns]; | ||
function getAllContexts(asyncId) { | ||
let obj = {}; | ||
while(stack[asyncId]) { | ||
for (let ns in stack[asyncId].contexts) { | ||
if (!obj[ns]) { | ||
obj[ns] = stack[asyncId].contexts[ns]; | ||
} | ||
} | ||
asyncId = stack[asyncId].parent; | ||
} | ||
getAllContexts(stack[asyncId].parent, obj); | ||
return obj; | ||
} | ||
function getContext(ns, asyncId, cur = []) { | ||
asyncId = asyncId || ah.executionAsyncId(); | ||
let current = stack[asyncId]; | ||
if (!current) | ||
return; | ||
if (current.contexts[ns]) | ||
return current.contexts[ns]; | ||
if (current.parent) { | ||
cur.push(current.parent); | ||
return getContext(ns, current.parent, cur); | ||
function getContext(ns) { | ||
let asyncId = ah.executionAsyncId(); | ||
while(asyncId) { | ||
let current = stack[asyncId]; | ||
if (!current) | ||
return; | ||
if (current.contexts[ns]) | ||
return current.contexts[ns]; | ||
asyncId = current.parent; | ||
} | ||
@@ -104,13 +103,13 @@ } | ||
function exitContextUp(context, ns, asyncId) { | ||
if (!stack[asyncId]) | ||
return; | ||
log(`exit ${ asyncId}`); | ||
let parentId = stack[asyncId].parent; | ||
let parent = stack[parentId]; | ||
if (parent) { | ||
if (parent.contexts[ns] === context) | ||
delete parent.contexts[ns]; | ||
else if (parent.contexts[ns]) | ||
return; | ||
exitContextUp(context, ns, parentId); | ||
while(stack[asyncId]) { | ||
log(`exit ${ asyncId}`); | ||
let parentId = stack[asyncId].parent; | ||
let parent = stack[parentId]; | ||
if (parent) { | ||
if (parent.contexts[ns] === context) | ||
delete parent.contexts[ns]; | ||
else if (parent.contexts[ns]) | ||
return; | ||
asyncId = parentId; | ||
} | ||
} | ||
@@ -117,0 +116,0 @@ } |
{ | ||
"name": "node-cls", | ||
"version": "1.0.3", | ||
"version": "1.0.4", | ||
"description": "Continuation Local Storage based on async_hooks", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
15560
0
322