MCPcopy
hub / github.com/Unitech/pm2 / parse

Method parse

modules/pm2-io-agent/src/Utility.js:137–186  ·  view source on GitHub ↗
(stack)

Source from the content-addressed store, hash-verified

135 }
136
137 parse (stack) {
138 if (!stack || stack.length === 0) return false
139
140 for (var i = 0, len = stack.length; i < len; i++) {
141 var callsite = stack[i]
142
143 // avoid null values
144 if (typeof callsite !== 'object') continue
145 if (!callsite.file_name || !callsite.line_number) continue
146
147 var type = this.isAbsolute(callsite.file_name) || callsite.file_name[0] === '.' ? 'user' : 'core'
148
149 // only use the callsite if its inside user space
150 if (!callsite || type === 'core' || callsite.file_name.indexOf('node_modules') > -1 ||
151 callsite.file_name.indexOf('vxx') > -1) {
152 continue
153 }
154
155 // get the whole context (all lines) and cache them if necessary
156 var context = this._cache.get(callsite.file_name)
157 var source = []
158 if (context && context.length > 0) {
159 // get line before the call
160 var preLine = callsite.line_number - this._context_size - 1
161 var pre = context.slice(preLine > 0 ? preLine : 0, callsite.line_number - 1)
162 if (pre && pre.length > 0) {
163 pre.forEach(function (line) {
164 source.push(line.replace(/\t/g, ' '))
165 })
166 }
167 // get the line where the call has been made
168 if (context[callsite.line_number - 1]) {
169 source.push(context[callsite.line_number - 1].replace(/\t/g, ' ').replace(' ', '>>'))
170 }
171 // and get the line after the call
172 var postLine = callsite.line_number + this._context_size
173 var post = context.slice(callsite.line_number, postLine)
174 if (post && post.length > 0) {
175 post.forEach(function (line) {
176 source.push(line.replace(/\t/g, ' '))
177 })
178 }
179 }
180 return {
181 context: source.length > 0 ? source.join('\n') : 'cannot retrieve source context',
182 callsite: [ callsite.file_name, callsite.line_number ].join(':')
183 }
184 }
185 return false
186 }
187
188 attachContext (error) {
189 if (!error) return error

Callers 15

attachContextMethod · 0.95
vizion.jsFile · 0.45
websocket.mocha.jsFile · 0.45
retrieveConfMethod · 0.45
decipherMessageMethod · 0.45
openMethod · 0.45
getOrSetConfMethod · 0.45
_onMessageMethod · 0.45
parseStacktraceMethod · 0.45
_sendFileMethod · 0.45

Calls 4

isAbsoluteMethod · 0.95
indexOfMethod · 0.80
sliceMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected