nodexh 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/main.js CHANGED
@@ -1,19 +1,14 @@
1
1
  (function() {
2
2
  'use strict';
3
- var FS, GUY, PATH, _exit_handler, _get_context, alert, bold, cyan, debug, echo, exit_handler, fetch_mapped_location, get_context, get_error_callsites, get_stacktracey, gold, green, grey, help, info, inspect, isa, load_source_map, log, plain, praise, red, reverse, rpr, show_error_with_source_context, show_stacktracey, steel, type_of, types, underline, urge, warn, whisper, white, write_to_stderr, yellow;
3
+ var FS, GUY, PATH, _exit_handler, _get_context, alert, bold, cyan, debug, echo, exit_handler, fetch_mapped_location, get_context, get_error_callsites, gold, green, grey, inspect, load_source_map, log, red, reverse, rpr, show_error_with_source_context, steel, underline, white, write_to_stderr, yellow;
4
4
 
5
5
  //###########################################################################################################
6
6
  GUY = require('guy');
7
7
 
8
- ({alert, debug, help, info, plain, praise, urge, warn, whisper} = GUY.trm.get_loggers('NODEXH'));
8
+ ({alert, debug} = GUY.trm.get_loggers('NODEXH'));
9
9
 
10
10
  ({rpr, inspect, echo, log} = GUY.trm);
11
11
 
12
- types = new (require('intertype')).Intertype();
13
-
14
- ({isa, type_of} = types);
15
-
16
- // stackman = ( require 'stackman' )()
17
12
  get_error_callsites = require('error-callsites');
18
13
 
19
14
  load_source_map = (require('util')).promisify(require('load-source-map'));
@@ -40,8 +35,6 @@
40
35
  });
41
36
  } catch (error1) {
42
37
  error = error1;
43
- // warn '^7763-3^', "!!!!!!!!!!!!!!!!!", { path, }
44
- // warn '^7763-3^', "!!!!!!!!!!!!!!!!!", error.message
45
38
  return {path, linenr, colnr};
46
39
  }
47
40
  //.........................................................................................................
@@ -72,7 +65,6 @@
72
65
  };
73
66
 
74
67
  //-----------------------------------------------------------------------------------------------------------
75
- // return [ ( red "!!! #{rpr error.message} !!!" ), ]
76
68
  _get_context = function(path, linenr, colnr, width) {
77
69
  /* TAINT perform line length adjustment, hiliting in dedicated method */
78
70
  var R, c0, c1, coldelta, delta, effect, first_idx, hilite, i, idx, last_idx, len, line, lines, ref, this_linenr, this_linenr_txt, width2;
@@ -107,7 +99,6 @@
107
99
  }
108
100
  R.push(`${grey(this_linenr_txt)}${cyan(line)}`);
109
101
  }
110
- // R = R.join '\n'
111
102
  return R;
112
103
  };
113
104
 
@@ -115,10 +106,6 @@
115
106
  show_error_with_source_context = async function(error, headline) {
116
107
  /* TAINT use proper methods to format with multiple colors */
117
108
  var arrowhead, arrowshaft, callsite, callsites, colnr, context_line, fname, fname_txt, i, j, len, len1, linenr, path, ref, ref1, ref2, relpath, width, width1;
118
- /* From https://github.com/watson/stackman#gotchas: "This module works because V8 (the JavaScript engine
119
- behind Node.js) allows us to hook into the stack trace generator function before that stack trace is
120
- generated. It's triggered by accessing the .stack property on the Error object, so please don't do
121
- that before parsing the error to stackman, else this will not work!" */
122
109
  alert('^77765-1^', reverse(bold(headline)));
123
110
  arrowhead = white('▲');
124
111
  arrowshaft = white('│');
@@ -150,8 +137,6 @@
150
137
  continue;
151
138
  }
152
139
  //.......................................................................................................
153
- // write_to_stderr()
154
- // write_to_stderr steel bold reverse ( "#{relpath} ##{linenr}:" ).padEnd 108
155
140
  fname = (ref = (ref1 = callsite.getFunctionName()) != null ? ref1 : callsite.getMethodName()) != null ? ref : null;
156
141
  ({path, linenr, colnr} = (await fetch_mapped_location(path, linenr, colnr)));
157
142
  relpath = PATH.relative(process.cwd(), path);
@@ -169,26 +154,13 @@
169
154
  }
170
155
  }
171
156
  alert('^77765-2^', reverse(bold(headline)));
172
- // urge "^94843^ error.stack:", rpr error.stack
173
- // urge "^94843^ error.message:", rpr error.message
174
- // urge "^94843^ error.code:", rpr error.code
175
- // urge "^94843^ error.name:", rpr error.name
176
- // urge "^94843^ error.type:", rpr error.type
177
- // urge "^94843^ error.toString():", rpr error.toString()
178
- // urge "^94843^ error:", rpr error
179
- // CATALOGUING = require '../../multimix/lib/cataloguing'
180
- // urge "^94843^", ( CATALOGUING.all_keys_of error )
181
157
  return null;
182
158
  };
183
159
 
184
160
  //-----------------------------------------------------------------------------------------------------------
185
161
  _exit_handler = async function(error, origin) {
186
- var message, ref, ref1, ref2, type;
187
162
  /* TAINT origin never used */
188
- // show_stacktracey error
189
- // debug '^4488^', error
190
- // debug '^4488^', await origin
191
- // return null
163
+ var message, ref, ref1, ref2, type;
192
164
  type = (ref = (ref1 = error.code) != null ? ref1 : error.name) != null ? ref : 'EXCEPTION';
193
165
  message = ` ${type}: ` + ((ref2 = error != null ? error.message : void 0) != null ? ref2 : "an unrecoverable condition occurred");
194
166
  await show_error_with_source_context(error, message);
@@ -204,61 +176,6 @@
204
176
  return null;
205
177
  };
206
178
 
207
- //###########################################################################################################
208
- //###########################################################################################################
209
- //###########################################################################################################
210
- get_stacktracey = function(error) {
211
- var R, StackTracey, d, i, idx, ref, s, stack;
212
- StackTracey = require('stacktracey');
213
- stack = (new StackTracey(error)).withSources();
214
- // stack = stack.clean()
215
- R = [];
216
- for (idx = i = ref = stack.items.length - 1; i >= 0; idx = i += -1) {
217
- d = stack.items[idx];
218
- // debug '^2798^', ( k for k of d )
219
- s = {
220
- // target_path: d.file
221
- relpath: d.fileRelative, // fileShort
222
- native: d.native,
223
- // is_nodejs: d.native
224
- is_other: d.thirdParty,
225
- line: d.line,
226
- column: d.column,
227
- source: d.sourceLine,
228
- error: d.error
229
- };
230
- // for k in [ 'sourceLine', 'native', 'file', 'line', 'column', 'calleeShort', 'fileRelative', 'fileShort', 'fileName', 'thirdParty', 'name',]
231
- // debug k, rpr d[ k ]
232
- R.push(s);
233
- }
234
- // info '\n' + stack.asTable()
235
- return R;
236
- };
237
-
238
- show_stacktracey = function(error) {
239
- var d, i, len, ref, ref1;
240
- ref = get_stacktracey(error);
241
- for (i = 0, len = ref.length; i < len; i++) {
242
- d = ref[i];
243
- echo(steel('^44872^ ' + `${d.relpath} @ ${d.line}:${d.column}`));
244
- /* NOTE errors:
245
- ENOENT: no such file or directory
246
- EISDIR: illegal operation on a directory, read
247
- 'Cannot read property 'originalPositionFor' of undefined'
248
- */
249
- if (d.error != null) {
250
- echo(red('^44873^ ' + ((ref1 = d.error.message) != null ? ref1 : "an error occurred")));
251
- } else {
252
- echo(yellow('^44874^ ' + `${rpr(d.source.slice(0, 101))}`));
253
- }
254
- }
255
- return null;
256
- };
257
-
258
- //###########################################################################################################
259
- //###########################################################################################################
260
- //###########################################################################################################
261
-
262
179
  //###########################################################################################################
263
180
  if (global[Symbol.for('cnd-exception-handler')] == null) {
264
181
  null;
@@ -267,33 +184,7 @@
267
184
  process.once('unhandledRejection', exit_handler);
268
185
  }
269
186
 
270
- // do =>
271
- // process.stderr.on 'data', ( data ) => debug "^6863-1^ (stderr.on 'data'):", rpr data
272
- // process.stdout.on 'data', ( data ) => debug "^6863-2^ (stdout.on 'data'):", rpr data
273
- // process.stderr.on 'end', => debug "^6863-1^ (stderr.on 'end')"
274
- // process.stdout.on 'end', => debug "^6863-2^ (stdout.on 'end')"
275
- // debug '^6456^'
276
- // echo "^4564^ echo to stdout"
277
- // warn "^4564^ warn to stderr"
278
- // process.stderr.write "this goes to stderr\n"
279
- // process.stdout.write "this goes to stdout\n"
280
- // process.on 'message', ( message ) -> debug "^6863-3^' (process.on 'message'):", rpr message
281
- // process.on 'warning', ( warning ) -> debug "^6863-3^' (process.on 'warning'):", rpr warning
282
- /*
283
- callsite.getThis() - returns the value of this
284
- callsite.getTypeName() - returns the type of this as a string. This is the name of the function stored in the constructor field of this, if available, otherwise the object's [[Class]] internal property.
285
- callsite.getFunction() - returns the current function
286
- callsite.getFunctionName() - returns the name of the current function, typically its name property. If a name property is not available an attempt will be made to try to infer a name from the function's context.
287
- callsite.getMethodName() - returns the name of the property of this or one of its prototypes that holds the current function
288
- callsite.getFileName() - if this function was defined in a script returns the name of the script
289
- callsite.getLineNumber() - if this function was defined in a script returns the current line number
290
- callsite.getColumnNumber() - if this function was defined in a script returns the current column number
291
- callsite.getEvalOrigin() - if this function was created using a call to eval returns a CallSite object representing the location where eval was called
292
- callsite.isToplevel() - is this a toplevel invocation, that is, is this the global object?
293
- callsite.isEval() - does this call take place in code defined by a call to eval?
294
- callsite.isNative() - is this call in native V8 code?
295
- callsite.isConstructor() - is this a constructor c
296
- */
187
+ //###########################################################################################################
297
188
  module.exports = {exit_handler, _exit_handler};
298
189
 
299
190
  }).call(this);
package/lib/main.js.map CHANGED
@@ -6,8 +6,8 @@
6
6
  "../src/main.coffee"
7
7
  ],
8
8
  "names": [],
9
- "mappings": "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",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "\n'use strict'\n\n\n############################################################################################################\nGUY = require 'guy'\n{ alert\n debug\n help\n info\n plain\n praise\n urge\n warn\n whisper } = GUY.trm.get_loggers 'NODEXH'\n{ rpr\n inspect\n echo\n log } = GUY.trm\ntypes = new ( require 'intertype' ).Intertype()\n{ isa\n type_of } = types\n# stackman = ( require 'stackman' )()\nget_error_callsites = require 'error-callsites'\nload_source_map = ( require 'util' ).promisify ( require 'load-source-map' )\nFS = require 'fs'\nPATH = require 'path'\n{ red\n green\n steel\n grey\n cyan\n bold\n gold\n white\n yellow\n reverse\n underline\n bold } = GUY.trm\n\n#-----------------------------------------------------------------------------------------------------------\nwrite_to_stderr = ( P... ) -> process.stderr.write ' ' + ( GUY.trm.pen P... ) + '\\n'\n\n#-----------------------------------------------------------------------------------------------------------\nfetch_mapped_location = ( path, linenr, colnr ) ->\n try\n sourcemap = await load_source_map path\n smp = sourcemap.originalPositionFor { line: linenr, column: colnr, }\n catch error\n # warn '^7763-3^', \"!!!!!!!!!!!!!!!!!\", { path, }\n # warn '^7763-3^', \"!!!!!!!!!!!!!!!!!\", error.message\n return { path, linenr, colnr, }\n #.........................................................................................................\n if ( smp? ) and ( smp.source? ) and ( smp.source isnt '' ) and ( smp.line? ) and ( smp.column? )\n mapped_path = PATH.join ( PATH.dirname path ), smp.source\n return { path: mapped_path, linenr: smp.line, colnr: smp.column, }\n #.........................................................................................................\n return { path, linenr, colnr, }\n\n#-----------------------------------------------------------------------------------------------------------\nget_context = ( path, linenr, colnr, width ) ->\n try return ( _get_context path, linenr, colnr, width ) catch error\n throw error unless error.code is 'ENOENT'\n # return [ ( red \"!!! #{rpr error.message} !!!\" ), ]\n return []\n\n#-----------------------------------------------------------------------------------------------------------\n_get_context = ( path, linenr, colnr, width ) ->\n lines = ( FS.readFileSync path, { encoding: 'utf-8' } ).split '\\n'\n delta = 1\n coldelta = 5\n effect = reverse\n first_idx = Math.max 0, linenr - 1 - delta\n last_idx = Math.min lines.length - 1, linenr - 1 + delta\n R = []\n for line, idx in lines[ first_idx .. last_idx ]\n this_linenr = first_idx + idx + 1\n this_linenr_txt = ( this_linenr.toString().padStart 4 ) + '│ '\n if this_linenr isnt linenr\n ### TAINT should adjust overlong context lines as well ###\n R.push \"#{grey this_linenr_txt}#{grey line}\"\n continue\n ### TAINT perform line length adjustment, hiliting in dedicated method ###\n c0 = colnr - 1\n c1 = colnr + coldelta\n hilite = effect line[ c0 ... c1 ]\n line = line[ ... c0 ] + hilite + line[ c1 .. ]\n if c1 > width\n width2 = Math.floor width / 2\n line = '... ' + line[ c1 - width2 .. c1 + hilite.length - ( c1 - c0 ) + width2 ] + ' ...'\n else\n line = line[ .. width ]\n R.push \"#{grey this_linenr_txt}#{cyan line}\"\n # R = R.join '\\n'\n return R\n\n#-----------------------------------------------------------------------------------------------------------\nshow_error_with_source_context = ( error, headline ) ->\n ### From https://github.com/watson/stackman#gotchas: \"This module works because V8 (the JavaScript engine\n behind Node.js) allows us to hook into the stack trace generator function before that stack trace is\n generated. It's triggered by accessing the .stack property on the Error object, so please don't do\n that before parsing the error to stackman, else this will not work!\" ###\n alert '^77765-1^', reverse bold headline\n arrowhead = white '▲'\n arrowshaft = white '│'\n width = process.stdout.columns\n callsites = get_error_callsites error\n #.........................................................................................................\n if ( not callsites? ) or ( callsites.length is 0 )\n write_to_stderr red reverse \"^455756^ error has no associated callsites:\"\n write_to_stderr red reverse rpr error\n return null\n #.........................................................................................................\n callsites.reverse()\n #.........................................................................................................\n for callsite in callsites\n path = callsite.getFileName()\n #.......................................................................................................\n unless path?\n write_to_stderr grey '—'.repeat 108\n continue\n #.......................................................................................................\n linenr = callsite.getLineNumber()\n colnr = callsite.getColumnNumber()\n #.......................................................................................................\n if ( path.startsWith 'node:internal/' ) or ( path.startsWith 'internal/' )\n write_to_stderr arrowhead, grey \"#{path} @ #{linenr},#{colnr}\"\n continue\n #.......................................................................................................\n # write_to_stderr()\n # write_to_stderr steel bold reverse ( \"#{relpath} ##{linenr}:\" ).padEnd 108\n fname = callsite.getFunctionName() ? callsite.getMethodName() ? null\n { path\n linenr\n colnr } = await fetch_mapped_location path, linenr, colnr\n relpath = PATH.relative process.cwd(), path\n if fname?\n ### TAINT use proper methods to format with multiple colors ###\n fname_txt = steel fname\n width1 = width + ( fname_txt.length - fname.length )\n write_to_stderr arrowhead, gold ( \"#{relpath} @ #{linenr},#{colnr}: #{fname_txt}() \\x1b[38;05;234m\".padEnd width1, '—' )\n else\n write_to_stderr arrowhead, gold ( \"#{relpath} @ #{linenr},#{colnr}: \\x1b[38;05;234m\".padEnd width, '—' )\n for context_line in await get_context path, linenr, colnr, width\n write_to_stderr arrowshaft, context_line\n alert '^77765-2^', reverse bold headline\n # urge \"^94843^ error.stack:\", rpr error.stack\n # urge \"^94843^ error.message:\", rpr error.message\n # urge \"^94843^ error.code:\", rpr error.code\n # urge \"^94843^ error.name:\", rpr error.name\n # urge \"^94843^ error.type:\", rpr error.type\n # urge \"^94843^ error.toString():\", rpr error.toString()\n # urge \"^94843^ error:\", rpr error\n # CATALOGUING = require '../../multimix/lib/cataloguing'\n # urge \"^94843^\", ( CATALOGUING.all_keys_of error )\n return null\n\n#-----------------------------------------------------------------------------------------------------------\n_exit_handler = ( error, origin ) ->\n ### TAINT origin never used ###\n # show_stacktracey error\n # debug '^4488^', error\n # debug '^4488^', await origin\n # return null\n type = error.code ? error.name ? 'EXCEPTION'\n message = \" #{type}: \" + ( error?.message ? \"an unrecoverable condition occurred\" )\n await show_error_with_source_context error, message\n return null\n\n#-----------------------------------------------------------------------------------------------------------\nexit_handler = ( error, origin ) ->\n await _exit_handler error, origin\n setImmediate ( -> process.exit 111 )\n return null\n\n############################################################################################################\n############################################################################################################\n############################################################################################################\n\nget_stacktracey = ( error ) ->\n StackTracey = require 'stacktracey'\n stack = ( new StackTracey error ).withSources()\n # stack = stack.clean()\n R = []\n for idx in [ stack.items.length - 1 .. 0 ] by -1\n d = stack.items[ idx ]\n # debug '^2798^', ( k for k of d )\n s =\n # target_path: d.file\n relpath: d.fileRelative # fileShort\n native: d.native\n # is_nodejs: d.native\n is_other: d.thirdParty\n line: d.line\n column: d.column\n source: d.sourceLine\n error: d.error\n # for k in [ 'sourceLine', 'native', 'file', 'line', 'column', 'calleeShort', 'fileRelative', 'fileShort', 'fileName', 'thirdParty', 'name',]\n # debug k, rpr d[ k ]\n R.push s\n # info '\\n' + stack.asTable()\n return R\n\nshow_stacktracey = ( error ) ->\n for d in get_stacktracey error\n echo steel '^44872^ ' + \"#{d.relpath} @ #{d.line}:#{d.column}\"\n ### NOTE errors:\n ENOENT: no such file or directory\n EISDIR: illegal operation on a directory, read\n 'Cannot read property 'originalPositionFor' of undefined'\n ###\n if d.error? then echo red '^44873^ ' + ( d.error.message ? \"an error occurred\" )\n else echo yellow '^44874^ ' + \"#{rpr d.source[ .. 100 ]}\"\n return null\n\n############################################################################################################\n############################################################################################################\n############################################################################################################\n\n\n############################################################################################################\nunless global[ Symbol.for 'cnd-exception-handler' ]?\n null\n global[ Symbol.for 'cnd-exception-handler' ] = true\n process.once 'uncaughtException', exit_handler\n process.once 'unhandledRejection', exit_handler\n\n # do =>\n # process.stderr.on 'data', ( data ) => debug \"^6863-1^ (stderr.on 'data'):\", rpr data\n # process.stdout.on 'data', ( data ) => debug \"^6863-2^ (stdout.on 'data'):\", rpr data\n # process.stderr.on 'end', => debug \"^6863-1^ (stderr.on 'end')\"\n # process.stdout.on 'end', => debug \"^6863-2^ (stdout.on 'end')\"\n # debug '^6456^'\n # echo \"^4564^ echo to stdout\"\n # warn \"^4564^ warn to stderr\"\n # process.stderr.write \"this goes to stderr\\n\"\n # process.stdout.write \"this goes to stdout\\n\"\n # process.on 'message', ( message ) -> debug \"^6863-3^' (process.on 'message'):\", rpr message\n # process.on 'warning', ( warning ) -> debug \"^6863-3^' (process.on 'warning'):\", rpr warning\n###\ncallsite.getThis() - returns the value of this\ncallsite.getTypeName() - returns the type of this as a string. This is the name of the function stored in the constructor field of this, if available, otherwise the object's [[Class]] internal property.\ncallsite.getFunction() - returns the current function\ncallsite.getFunctionName() - returns the name of the current function, typically its name property. If a name property is not available an attempt will be made to try to infer a name from the function's context.\ncallsite.getMethodName() - returns the name of the property of this or one of its prototypes that holds the current function\ncallsite.getFileName() - if this function was defined in a script returns the name of the script\ncallsite.getLineNumber() - if this function was defined in a script returns the current line number\ncallsite.getColumnNumber() - if this function was defined in a script returns the current column number\ncallsite.getEvalOrigin() - if this function was created using a call to eval returns a CallSite object representing the location where eval was called\ncallsite.isToplevel() - is this a toplevel invocation, that is, is this the global object?\ncallsite.isEval() - does this call take place in code defined by a call to eval?\ncallsite.isNative() - is this call in native V8 code?\ncallsite.isConstructor() - is this a constructor c\n###\n\nmodule.exports = { exit_handler, _exit_handler, }\n"
11
+ "\n'use strict'\n\n\n############################################################################################################\nGUY = require 'guy'\n{ alert\n debug } = GUY.trm.get_loggers 'NODEXH'\n{ rpr\n inspect\n echo\n log } = GUY.trm\nget_error_callsites = require 'error-callsites'\nload_source_map = ( require 'util' ).promisify ( require 'load-source-map' )\nFS = require 'fs'\nPATH = require 'path'\n{ red\n green\n steel\n grey\n cyan\n bold\n gold\n white\n yellow\n reverse\n underline\n bold } = GUY.trm\n\n#-----------------------------------------------------------------------------------------------------------\nwrite_to_stderr = ( P... ) -> process.stderr.write ' ' + ( GUY.trm.pen P... ) + '\\n'\n\n#-----------------------------------------------------------------------------------------------------------\nfetch_mapped_location = ( path, linenr, colnr ) ->\n try\n sourcemap = await load_source_map path\n smp = sourcemap.originalPositionFor { line: linenr, column: colnr, }\n catch error\n return { path, linenr, colnr, }\n #.........................................................................................................\n if ( smp? ) and ( smp.source? ) and ( smp.source isnt '' ) and ( smp.line? ) and ( smp.column? )\n mapped_path = PATH.join ( PATH.dirname path ), smp.source\n return { path: mapped_path, linenr: smp.line, colnr: smp.column, }\n #.........................................................................................................\n return { path, linenr, colnr, }\n\n#-----------------------------------------------------------------------------------------------------------\nget_context = ( path, linenr, colnr, width ) ->\n try return ( _get_context path, linenr, colnr, width ) catch error\n throw error unless error.code is 'ENOENT'\n return []\n\n#-----------------------------------------------------------------------------------------------------------\n_get_context = ( path, linenr, colnr, width ) ->\n lines = ( FS.readFileSync path, { encoding: 'utf-8' } ).split '\\n'\n delta = 1\n coldelta = 5\n effect = reverse\n first_idx = Math.max 0, linenr - 1 - delta\n last_idx = Math.min lines.length - 1, linenr - 1 + delta\n R = []\n for line, idx in lines[ first_idx .. last_idx ]\n this_linenr = first_idx + idx + 1\n this_linenr_txt = ( this_linenr.toString().padStart 4 ) + '│ '\n if this_linenr isnt linenr\n ### TAINT should adjust overlong context lines as well ###\n R.push \"#{grey this_linenr_txt}#{grey line}\"\n continue\n ### TAINT perform line length adjustment, hiliting in dedicated method ###\n c0 = colnr - 1\n c1 = colnr + coldelta\n hilite = effect line[ c0 ... c1 ]\n line = line[ ... c0 ] + hilite + line[ c1 .. ]\n if c1 > width\n width2 = Math.floor width / 2\n line = '... ' + line[ c1 - width2 .. c1 + hilite.length - ( c1 - c0 ) + width2 ] + ' ...'\n else\n line = line[ .. width ]\n R.push \"#{grey this_linenr_txt}#{cyan line}\"\n return R\n\n#-----------------------------------------------------------------------------------------------------------\nshow_error_with_source_context = ( error, headline ) ->\n alert '^77765-1^', reverse bold headline\n arrowhead = white '▲'\n arrowshaft = white '│'\n width = process.stdout.columns\n callsites = get_error_callsites error\n #.........................................................................................................\n if ( not callsites? ) or ( callsites.length is 0 )\n write_to_stderr red reverse \"^455756^ error has no associated callsites:\"\n write_to_stderr red reverse rpr error\n return null\n #.........................................................................................................\n callsites.reverse()\n #.........................................................................................................\n for callsite in callsites\n path = callsite.getFileName()\n #.......................................................................................................\n unless path?\n write_to_stderr grey '—'.repeat 108\n continue\n #.......................................................................................................\n linenr = callsite.getLineNumber()\n colnr = callsite.getColumnNumber()\n #.......................................................................................................\n if ( path.startsWith 'node:internal/' ) or ( path.startsWith 'internal/' )\n write_to_stderr arrowhead, grey \"#{path} @ #{linenr},#{colnr}\"\n continue\n #.......................................................................................................\n fname = callsite.getFunctionName() ? callsite.getMethodName() ? null\n { path\n linenr\n colnr } = await fetch_mapped_location path, linenr, colnr\n relpath = PATH.relative process.cwd(), path\n if fname?\n ### TAINT use proper methods to format with multiple colors ###\n fname_txt = steel fname\n width1 = width + ( fname_txt.length - fname.length )\n write_to_stderr arrowhead, gold ( \"#{relpath} @ #{linenr},#{colnr}: #{fname_txt}() \\x1b[38;05;234m\".padEnd width1, '—' )\n else\n write_to_stderr arrowhead, gold ( \"#{relpath} @ #{linenr},#{colnr}: \\x1b[38;05;234m\".padEnd width, '—' )\n for context_line in await get_context path, linenr, colnr, width\n write_to_stderr arrowshaft, context_line\n alert '^77765-2^', reverse bold headline\n return null\n\n#-----------------------------------------------------------------------------------------------------------\n_exit_handler = ( error, origin ) ->\n ### TAINT origin never used ###\n type = error.code ? error.name ? 'EXCEPTION'\n message = \" #{type}: \" + ( error?.message ? \"an unrecoverable condition occurred\" )\n await show_error_with_source_context error, message\n return null\n\n#-----------------------------------------------------------------------------------------------------------\nexit_handler = ( error, origin ) ->\n await _exit_handler error, origin\n setImmediate ( -> process.exit 111 )\n return null\n\n\n\n############################################################################################################\nunless global[ Symbol.for 'cnd-exception-handler' ]?\n null\n global[ Symbol.for 'cnd-exception-handler' ] = true\n process.once 'uncaughtException', exit_handler\n process.once 'unhandledRejection', exit_handler\n\n\n############################################################################################################\nmodule.exports = { exit_handler, _exit_handler, }\n\n"
12
12
  ]
13
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodexh",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "a wrapper around the `node` executable for better stacktraces with sourcemaps, sourcecode excerpts",
5
5
  "main": "lib/main.js",
6
6
  "bin": {
@@ -24,8 +24,7 @@
24
24
  "homepage": "https://github.com/loveencounterflow/nodexh",
25
25
  "dependencies": {
26
26
  "error-callsites": "^2.0.3",
27
- "guy": "^12.3.0",
28
- "intertype": "^0.111.0",
27
+ "guy": "^13.7.1",
29
28
  "load-source-map": "3.0.1",
30
29
  "stacktracey": "^2.0.14"
31
30
  },
package/src/main.coffee CHANGED
@@ -5,22 +5,11 @@
5
5
  ############################################################################################################
6
6
  GUY = require 'guy'
7
7
  { alert
8
- debug
9
- help
10
- info
11
- plain
12
- praise
13
- urge
14
- warn
15
- whisper } = GUY.trm.get_loggers 'NODEXH'
8
+ debug } = GUY.trm.get_loggers 'NODEXH'
16
9
  { rpr
17
10
  inspect
18
11
  echo
19
12
  log } = GUY.trm
20
- types = new ( require 'intertype' ).Intertype()
21
- { isa
22
- type_of } = types
23
- # stackman = ( require 'stackman' )()
24
13
  get_error_callsites = require 'error-callsites'
25
14
  load_source_map = ( require 'util' ).promisify ( require 'load-source-map' )
26
15
  FS = require 'fs'
@@ -47,8 +36,6 @@ fetch_mapped_location = ( path, linenr, colnr ) ->
47
36
  sourcemap = await load_source_map path
48
37
  smp = sourcemap.originalPositionFor { line: linenr, column: colnr, }
49
38
  catch error
50
- # warn '^7763-3^', "!!!!!!!!!!!!!!!!!", { path, }
51
- # warn '^7763-3^', "!!!!!!!!!!!!!!!!!", error.message
52
39
  return { path, linenr, colnr, }
53
40
  #.........................................................................................................
54
41
  if ( smp? ) and ( smp.source? ) and ( smp.source isnt '' ) and ( smp.line? ) and ( smp.column? )
@@ -61,7 +48,6 @@ fetch_mapped_location = ( path, linenr, colnr ) ->
61
48
  get_context = ( path, linenr, colnr, width ) ->
62
49
  try return ( _get_context path, linenr, colnr, width ) catch error
63
50
  throw error unless error.code is 'ENOENT'
64
- # return [ ( red "!!! #{rpr error.message} !!!" ), ]
65
51
  return []
66
52
 
67
53
  #-----------------------------------------------------------------------------------------------------------
@@ -91,15 +77,10 @@ _get_context = ( path, linenr, colnr, width ) ->
91
77
  else
92
78
  line = line[ .. width ]
93
79
  R.push "#{grey this_linenr_txt}#{cyan line}"
94
- # R = R.join '\n'
95
80
  return R
96
81
 
97
82
  #-----------------------------------------------------------------------------------------------------------
98
83
  show_error_with_source_context = ( error, headline ) ->
99
- ### From https://github.com/watson/stackman#gotchas: "This module works because V8 (the JavaScript engine
100
- behind Node.js) allows us to hook into the stack trace generator function before that stack trace is
101
- generated. It's triggered by accessing the .stack property on the Error object, so please don't do
102
- that before parsing the error to stackman, else this will not work!" ###
103
84
  alert '^77765-1^', reverse bold headline
104
85
  arrowhead = white '▲'
105
86
  arrowshaft = white '│'
@@ -127,8 +108,6 @@ show_error_with_source_context = ( error, headline ) ->
127
108
  write_to_stderr arrowhead, grey "#{path} @ #{linenr},#{colnr}"
128
109
  continue
129
110
  #.......................................................................................................
130
- # write_to_stderr()
131
- # write_to_stderr steel bold reverse ( "#{relpath} ##{linenr}:" ).padEnd 108
132
111
  fname = callsite.getFunctionName() ? callsite.getMethodName() ? null
133
112
  { path
134
113
  linenr
@@ -144,24 +123,11 @@ show_error_with_source_context = ( error, headline ) ->
144
123
  for context_line in await get_context path, linenr, colnr, width
145
124
  write_to_stderr arrowshaft, context_line
146
125
  alert '^77765-2^', reverse bold headline
147
- # urge "^94843^ error.stack:", rpr error.stack
148
- # urge "^94843^ error.message:", rpr error.message
149
- # urge "^94843^ error.code:", rpr error.code
150
- # urge "^94843^ error.name:", rpr error.name
151
- # urge "^94843^ error.type:", rpr error.type
152
- # urge "^94843^ error.toString():", rpr error.toString()
153
- # urge "^94843^ error:", rpr error
154
- # CATALOGUING = require '../../multimix/lib/cataloguing'
155
- # urge "^94843^", ( CATALOGUING.all_keys_of error )
156
126
  return null
157
127
 
158
128
  #-----------------------------------------------------------------------------------------------------------
159
129
  _exit_handler = ( error, origin ) ->
160
130
  ### TAINT origin never used ###
161
- # show_stacktracey error
162
- # debug '^4488^', error
163
- # debug '^4488^', await origin
164
- # return null
165
131
  type = error.code ? error.name ? 'EXCEPTION'
166
132
  message = " #{type}: " + ( error?.message ? "an unrecoverable condition occurred" )
167
133
  await show_error_with_source_context error, message
@@ -173,49 +139,6 @@ exit_handler = ( error, origin ) ->
173
139
  setImmediate ( -> process.exit 111 )
174
140
  return null
175
141
 
176
- ############################################################################################################
177
- ############################################################################################################
178
- ############################################################################################################
179
-
180
- get_stacktracey = ( error ) ->
181
- StackTracey = require 'stacktracey'
182
- stack = ( new StackTracey error ).withSources()
183
- # stack = stack.clean()
184
- R = []
185
- for idx in [ stack.items.length - 1 .. 0 ] by -1
186
- d = stack.items[ idx ]
187
- # debug '^2798^', ( k for k of d )
188
- s =
189
- # target_path: d.file
190
- relpath: d.fileRelative # fileShort
191
- native: d.native
192
- # is_nodejs: d.native
193
- is_other: d.thirdParty
194
- line: d.line
195
- column: d.column
196
- source: d.sourceLine
197
- error: d.error
198
- # for k in [ 'sourceLine', 'native', 'file', 'line', 'column', 'calleeShort', 'fileRelative', 'fileShort', 'fileName', 'thirdParty', 'name',]
199
- # debug k, rpr d[ k ]
200
- R.push s
201
- # info '\n' + stack.asTable()
202
- return R
203
-
204
- show_stacktracey = ( error ) ->
205
- for d in get_stacktracey error
206
- echo steel '^44872^ ' + "#{d.relpath} @ #{d.line}:#{d.column}"
207
- ### NOTE errors:
208
- ENOENT: no such file or directory
209
- EISDIR: illegal operation on a directory, read
210
- 'Cannot read property 'originalPositionFor' of undefined'
211
- ###
212
- if d.error? then echo red '^44873^ ' + ( d.error.message ? "an error occurred" )
213
- else echo yellow '^44874^ ' + "#{rpr d.source[ .. 100 ]}"
214
- return null
215
-
216
- ############################################################################################################
217
- ############################################################################################################
218
- ############################################################################################################
219
142
 
220
143
 
221
144
  ############################################################################################################
@@ -225,32 +148,7 @@ unless global[ Symbol.for 'cnd-exception-handler' ]?
225
148
  process.once 'uncaughtException', exit_handler
226
149
  process.once 'unhandledRejection', exit_handler
227
150
 
228
- # do =>
229
- # process.stderr.on 'data', ( data ) => debug "^6863-1^ (stderr.on 'data'):", rpr data
230
- # process.stdout.on 'data', ( data ) => debug "^6863-2^ (stdout.on 'data'):", rpr data
231
- # process.stderr.on 'end', => debug "^6863-1^ (stderr.on 'end')"
232
- # process.stdout.on 'end', => debug "^6863-2^ (stdout.on 'end')"
233
- # debug '^6456^'
234
- # echo "^4564^ echo to stdout"
235
- # warn "^4564^ warn to stderr"
236
- # process.stderr.write "this goes to stderr\n"
237
- # process.stdout.write "this goes to stdout\n"
238
- # process.on 'message', ( message ) -> debug "^6863-3^' (process.on 'message'):", rpr message
239
- # process.on 'warning', ( warning ) -> debug "^6863-3^' (process.on 'warning'):", rpr warning
240
- ###
241
- callsite.getThis() - returns the value of this
242
- callsite.getTypeName() - returns the type of this as a string. This is the name of the function stored in the constructor field of this, if available, otherwise the object's [[Class]] internal property.
243
- callsite.getFunction() - returns the current function
244
- callsite.getFunctionName() - returns the name of the current function, typically its name property. If a name property is not available an attempt will be made to try to infer a name from the function's context.
245
- callsite.getMethodName() - returns the name of the property of this or one of its prototypes that holds the current function
246
- callsite.getFileName() - if this function was defined in a script returns the name of the script
247
- callsite.getLineNumber() - if this function was defined in a script returns the current line number
248
- callsite.getColumnNumber() - if this function was defined in a script returns the current column number
249
- callsite.getEvalOrigin() - if this function was created using a call to eval returns a CallSite object representing the location where eval was called
250
- callsite.isToplevel() - is this a toplevel invocation, that is, is this the global object?
251
- callsite.isEval() - does this call take place in code defined by a call to eval?
252
- callsite.isNative() - is this call in native V8 code?
253
- callsite.isConstructor() - is this a constructor c
254
- ###
255
151
 
152
+ ############################################################################################################
256
153
  module.exports = { exit_handler, _exit_handler, }
154
+