nodexh 2.0.0-pre → 2.1.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/README.md CHANGED
@@ -56,4 +56,9 @@ Use `nodexh path/to/file.js` instead of `node path/to/file.js`, and you're good
56
56
  * [ ] fix async stacktraces (probably not yet handled correctly; might be issue with `stackman`?)
57
57
  * [ ] consider [utf8ize-sourcemaps](https://github.com/twada/utf8ize-sourcemaps) in case there should be
58
58
  problems w/ 32bit characters
59
+ * [ ] truncate long lines in context
60
+ * [ ] offer capabilities of NodeXH as API so applications (such as test libraries) can easily retrieve
61
+ source code, display source lines with contexts
62
+
63
+
59
64
 
package/bin/nodexh CHANGED
@@ -1,3 +1,29 @@
1
1
  #!/usr/bin/env bash
2
- node --require "$(realpath "$0")"/../../lib/main.js --trace-warnings --enable-source-maps --stack-trace-limit=100 "$@"
2
+
3
+ realpath() {
4
+ # thx to https://github.com/whatwg/html-build/issues/90
5
+ OURPWD=$PWD
6
+ cd "$(dirname "$1")"
7
+ LINK=$(readlink "$(basename "$1")")
8
+ while [ "$LINK" ]; do
9
+ cd "$(dirname "$LINK")"
10
+ LINK=$(readlink "$(basename "$1")")
11
+ done
12
+ REALPATH="$PWD/$(basename "$1")"
13
+ cd "$OURPWD"
14
+ echo "$REALPATH"
15
+ }
16
+
17
+ node \
18
+ --require "$(realpath "$0")"/../../lib/main.js \
19
+ --trace-warnings \
20
+ --enable-source-maps \
21
+ --stack-trace-limit=100 \
22
+ --expose-gc \
23
+ "$@"
24
+ # --nouse_idle_notification \
25
+ # --trace_gc \
26
+
27
+
28
+
3
29
 
package/lib/main.js CHANGED
@@ -1,6 +1,6 @@
1
1
  (function() {
2
2
  'use strict';
3
- var CND, FS, PATH, StackTracey, _get_context, alert, badge, bold, cyan, debug, echo, exit_handler, fetch_mapped_location, get_context, get_error_callsites, get_stacktracey, gold, green, grey, help, info, load_source_map, log, red, reverse, rpr, show_error_with_source_context, show_stacktracey, steel, underline, urge, warn, whisper, white, write_to_stderr, yellow;
3
+ var CND, FS, PATH, _get_context, alert, badge, bold, cyan, debug, echo, exit_handler, fetch_mapped_location, get_context, get_error_callsites, get_stacktracey, gold, green, grey, help, info, load_source_map, log, red, reverse, rpr, show_error_with_source_context, show_stacktracey, steel, underline, urge, warn, whisper, white, write_to_stderr, yellow;
4
4
 
5
5
  //###########################################################################################################
6
6
  CND = require('cnd');
@@ -57,7 +57,8 @@
57
57
  });
58
58
  } catch (error1) {
59
59
  error = error1;
60
- warn('^7763-3^', "!!!!!!!!!!!!!!!!!", error.message);
60
+ // warn '^7763-3^', "!!!!!!!!!!!!!!!!!", { path, }
61
+ // warn '^7763-3^', "!!!!!!!!!!!!!!!!!", error.message
61
62
  return {path, linenr, colnr};
62
63
  }
63
64
  //.........................................................................................................
@@ -129,7 +130,8 @@
129
130
 
130
131
  //-----------------------------------------------------------------------------------------------------------
131
132
  show_error_with_source_context = async function(error, headline) {
132
- var arrowhead, arrowshaft, callsite, callsites, colnr, context_line, i, j, len, len1, linenr, path, ref, relpath, width;
133
+ /* TAINT use proper methods to format with multiple colors */
134
+ var arrowhead, arrowshaft, callsite, callsites, colnr, context_line, fname, fname_txt, i, j, len, len1, linenr, path, ref, ref1, ref2, relpath, width, width1;
133
135
  /* From https://github.com/watson/stackman#gotchas: "This module works because V8 (the JavaScript engine
134
136
  behind Node.js) allows us to hook into the stack trace generator function before that stack trace is
135
137
  generated. It's triggered by accessing the .stack property on the Error object, so please don't do
@@ -141,7 +143,7 @@
141
143
  callsites = get_error_callsites(error);
142
144
  //.........................................................................................................
143
145
  if ((callsites == null) || (callsites.length === 0)) {
144
- write_to_stderr(CND.red(CND.reverse("error has no associated callsites:")));
146
+ write_to_stderr(CND.red(CND.reverse("^455756^ error has no associated callsites:")));
145
147
  write_to_stderr(CND.red(CND.reverse(rpr(error))));
146
148
  return null;
147
149
  }
@@ -160,24 +162,39 @@
160
162
  linenr = callsite.getLineNumber();
161
163
  colnr = callsite.getColumnNumber();
162
164
  //.......................................................................................................
163
- if (path.startsWith('internal/')) {
165
+ if ((path.startsWith('node:internal/')) || (path.startsWith('internal/'))) {
164
166
  write_to_stderr(arrowhead, grey(`${path} @ ${linenr},${colnr}`));
165
167
  continue;
166
168
  }
167
169
  //.......................................................................................................
168
170
  // write_to_stderr()
169
171
  // write_to_stderr steel bold reverse ( "#{relpath} ##{linenr}:" ).padEnd 108
172
+ fname = (ref = (ref1 = callsite.getFunctionName()) != null ? ref1 : callsite.getMethodName()) != null ? ref : null;
170
173
  ({path, linenr, colnr} = (await fetch_mapped_location(path, linenr, colnr)));
171
174
  relpath = PATH.relative(process.cwd(), path);
172
- write_to_stderr(arrowhead, gold(`${relpath} @ ${linenr},${colnr}: \x1b[38;05;234m`.padEnd(width, '—')));
173
- ref = (await get_context(path, linenr, colnr, width));
174
- for (j = 0, len1 = ref.length; j < len1; j++) {
175
- context_line = ref[j];
175
+ if (fname != null) {
176
+ fname_txt = steel(fname);
177
+ width1 = width + (fname_txt.length - fname.length);
178
+ write_to_stderr(arrowhead, gold(`${relpath} @ ${linenr},${colnr}: ${fname_txt}() \x1b[38;05;234m`.padEnd(width1, '—')));
179
+ } else {
180
+ write_to_stderr(arrowhead, gold(`${relpath} @ ${linenr},${colnr}: \x1b[38;05;234m`.padEnd(width, '—')));
181
+ }
182
+ ref2 = (await get_context(path, linenr, colnr, width));
183
+ for (j = 0, len1 = ref2.length; j < len1; j++) {
184
+ context_line = ref2[j];
176
185
  write_to_stderr(arrowshaft, context_line);
177
186
  }
178
187
  }
179
188
  alert('^77765-2^', reverse(bold(headline)));
180
- // if error?.message?
189
+ // urge "^94843^ error.stack:", rpr error.stack
190
+ // urge "^94843^ error.message:", rpr error.message
191
+ // urge "^94843^ error.code:", rpr error.code
192
+ // urge "^94843^ error.name:", rpr error.name
193
+ // urge "^94843^ error.type:", rpr error.type
194
+ // urge "^94843^ error.toString():", rpr error.toString()
195
+ // urge "^94843^ error:", rpr error
196
+ // CATALOGUING = require '../../multimix/lib/cataloguing'
197
+ // urge "^94843^", ( CATALOGUING.all_keys_of error )
181
198
  return null;
182
199
  };
183
200
 
@@ -185,7 +202,10 @@
185
202
  exit_handler = async function(error, origin) {
186
203
  var message, ref, ref1, ref2, type;
187
204
  /* TAINT origin never used */
188
- show_stacktracey(error);
205
+ // show_stacktracey error
206
+ // debug '^4488^', error
207
+ // debug '^4488^', await origin
208
+ // return null
189
209
  type = (ref = (ref1 = error.code) != null ? ref1 : error.name) != null ? ref : 'EXCEPTION';
190
210
  message = ` ${type}: ` + ((ref2 = error != null ? error.message : void 0) != null ? ref2 : "an unrecoverable condition occurred");
191
211
  await show_error_with_source_context(error, message);
@@ -198,10 +218,9 @@
198
218
  //###########################################################################################################
199
219
  //###########################################################################################################
200
220
  //###########################################################################################################
201
- StackTracey = require('stacktracey');
202
-
203
221
  get_stacktracey = function(error) {
204
- var R, d, i, idx, ref, s, stack;
222
+ var R, StackTracey, d, i, idx, ref, s, stack;
223
+ StackTracey = require('stacktracey');
205
224
  stack = (new StackTracey(error)).withSources();
206
225
  // stack = stack.clean()
207
226
  R = [];
@@ -232,16 +251,16 @@
232
251
  ref = get_stacktracey(error);
233
252
  for (i = 0, len = ref.length; i < len; i++) {
234
253
  d = ref[i];
235
- echo(CND.steel(`${d.relpath} @ ${d.line}:${d.column}`));
254
+ echo(CND.steel('^44872^ ' + `${d.relpath} @ ${d.line}:${d.column}`));
236
255
  /* NOTE errors:
237
256
  ENOENT: no such file or directory
238
257
  EISDIR: illegal operation on a directory, read
239
258
  'Cannot read property 'originalPositionFor' of undefined'
240
259
  */
241
260
  if (d.error != null) {
242
- echo(CND.red((ref1 = d.error.message) != null ? ref1 : "an error occurred"));
261
+ echo(CND.red('^44873^ ' + ((ref1 = d.error.message) != null ? ref1 : "an error occurred")));
243
262
  } else {
244
- echo(CND.yellow(`${rpr(d.source.slice(0, 101))}`));
263
+ echo(CND.yellow('^44874^ ' + `${rpr(d.source.slice(0, 101))}`));
245
264
  }
246
265
  }
247
266
  return null;
@@ -253,12 +272,25 @@
253
272
 
254
273
  //###########################################################################################################
255
274
  if (global[Symbol.for('cnd-exception-handler')] == null) {
275
+ null;
256
276
  global[Symbol.for('cnd-exception-handler')] = true;
257
277
  process.once('uncaughtException', exit_handler);
258
278
  process.once('unhandledRejection', exit_handler);
259
279
  }
260
280
 
261
- /*
281
+ // do =>
282
+ // process.stderr.on 'data', ( data ) => debug "^6863-1^ (stderr.on 'data'):", rpr data
283
+ // process.stdout.on 'data', ( data ) => debug "^6863-2^ (stdout.on 'data'):", rpr data
284
+ // process.stderr.on 'end', => debug "^6863-1^ (stderr.on 'end')"
285
+ // process.stdout.on 'end', => debug "^6863-2^ (stdout.on 'end')"
286
+ // debug '^6456^'
287
+ // echo "^4564^ echo to stdout"
288
+ // warn "^4564^ warn to stderr"
289
+ // process.stderr.write "this goes to stderr\n"
290
+ // process.stdout.write "this goes to stdout\n"
291
+ // process.on 'message', ( message ) -> debug "^6863-3^' (process.on 'message'):", rpr message
292
+ // process.on 'warning', ( warning ) -> debug "^6863-3^' (process.on 'warning'):", rpr warning
293
+ /*
262
294
  callsite.getThis() - returns the value of this
263
295
  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.
264
296
  callsite.getFunction() - returns the current function
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\n'use strict'\n\n\n############################################################################################################\nCND = require 'cnd'\nrpr = CND.rpr\nbadge = 'nodexh'\nlog = CND.get_logger 'plain', badge\ndebug = CND.get_logger 'debug', badge\ninfo = CND.get_logger 'info', badge\nwarn = CND.get_logger 'warn', badge\nalert = CND.get_logger 'alert', badge\nhelp = CND.get_logger 'help', badge\nurge = CND.get_logger 'urge', badge\nwhisper = CND.get_logger 'whisper', badge\necho = CND.echo.bind CND\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 } = CND\n# types = new ( require '../../intertype' ).Intertype()\n# { isa } = types.export()\n\n#-----------------------------------------------------------------------------------------------------------\nwrite_to_stderr = ( P... ) -> process.stderr.write ' ' + CND.pen P...\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^', \"!!!!!!!!!!!!!!!!!\", 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 CND.red CND.reverse \"error has no associated callsites:\"\n write_to_stderr CND.red CND.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 '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 { path\n linenr\n colnr } = await fetch_mapped_location path, linenr, colnr\n relpath = PATH.relative process.cwd(), path\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 # if error?.message?\n return null\n\n#-----------------------------------------------------------------------------------------------------------\nexit_handler = ( error, origin ) ->\n ### TAINT origin never used ###\n show_stacktracey error\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 setImmediate ( -> process.exit 111 )\n return null\n\n############################################################################################################\n############################################################################################################\n############################################################################################################\nStackTracey = require 'stacktracey'\n\nget_stacktracey = ( error ) ->\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 CND.steel \"#{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 CND.red d.error.message ? \"an error occurred\"\n else echo CND.yellow \"#{rpr d.source[ .. 100 ]}\"\n return null\n\n############################################################################################################\n############################################################################################################\n############################################################################################################\n\n\n############################################################################################################\nunless global[ Symbol.for 'cnd-exception-handler' ]?\n global[ Symbol.for 'cnd-exception-handler' ] = true\n process.once 'uncaughtException', exit_handler\n process.once 'unhandledRejection', exit_handler\n\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\n"
11
+ "\n\n'use strict'\n\n\n############################################################################################################\nCND = require 'cnd'\nrpr = CND.rpr\nbadge = 'nodexh'\nlog = CND.get_logger 'plain', badge\ndebug = CND.get_logger 'debug', badge\ninfo = CND.get_logger 'info', badge\nwarn = CND.get_logger 'warn', badge\nalert = CND.get_logger 'alert', badge\nhelp = CND.get_logger 'help', badge\nurge = CND.get_logger 'urge', badge\nwhisper = CND.get_logger 'whisper', badge\necho = CND.echo.bind CND\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 } = CND\n# types = new ( require '../../intertype' ).Intertype()\n# { isa } = types.export()\n\n#-----------------------------------------------------------------------------------------------------------\nwrite_to_stderr = ( P... ) -> process.stderr.write ' ' + CND.pen P...\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 CND.red CND.reverse \"^455756^ error has no associated callsites:\"\n write_to_stderr CND.red CND.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#-----------------------------------------------------------------------------------------------------------\nexit_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 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 CND.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 CND.red '^44873^ ' + ( d.error.message ? \"an error occurred\" )\n else echo CND.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\n"
12
12
  ]
13
13
  }
package/package.json CHANGED
@@ -1,14 +1,11 @@
1
1
  {
2
2
  "name": "nodexh",
3
- "version": "2.0.0-pre",
3
+ "version": "2.1.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": {
7
7
  "nodexh": "bin/nodexh"
8
8
  },
9
- "scripts": {
10
- "build": "coffee --map -o lib -c src"
11
- },
12
9
  "repository": {
13
10
  "type": "git",
14
11
  "url": "https://github.com/loveencounterflow/nodexh.git"
@@ -28,7 +25,10 @@
28
25
  "dependencies": {
29
26
  "cnd": "^9.1.0",
30
27
  "error-callsites": "^2.0.3",
31
- "load-source-map": "^2.0.0",
28
+ "load-source-map": "3.0.1",
32
29
  "stacktracey": "^2.0.14"
30
+ },
31
+ "scripts": {
32
+ "build": "coffee --map -o lib -c src"
33
33
  }
34
- }
34
+ }
package/pnpm-lock.yaml ADDED
@@ -0,0 +1,105 @@
1
+ lockfileVersion: 5.4
2
+
3
+ specifiers:
4
+ cnd: ^9.1.0
5
+ error-callsites: ^2.0.3
6
+ load-source-map: 3.0.1
7
+ stacktracey: ^2.0.14
8
+
9
+ dependencies:
10
+ cnd: 9.2.2
11
+ error-callsites: 2.0.4
12
+ load-source-map: 3.0.1
13
+ stacktracey: 2.1.8
14
+
15
+ packages:
16
+
17
+ /as-table/1.0.55:
18
+ resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==}
19
+ dependencies:
20
+ printable-characters: 1.0.42
21
+ dev: false
22
+
23
+ /cnd/9.2.2:
24
+ resolution: {integrity: sha512-F+/H+7luk4fZkvN0+MT0I2nwn80YM/EtfMttNUFxENR50XJH4g0KgQevzeyEJ8B6t6l8Tb4Xti6QAksa8DmePA==}
25
+ hasBin: true
26
+ dependencies:
27
+ jsx-number-format: 0.1.4
28
+ dev: false
29
+
30
+ /data-uri-to-buffer/2.0.2:
31
+ resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
32
+ dev: false
33
+
34
+ /error-callsites/2.0.4:
35
+ resolution: {integrity: sha512-V877Ch4FC4FN178fDK1fsrHN4I1YQIBdtjKrHh3BUHMnh3SMvwUVrqkaOgDpUuevgSNna0RBq6Ox9SGlxYrigA==}
36
+ engines: {node: '>=6.x'}
37
+ dev: false
38
+
39
+ /get-source/2.0.12:
40
+ resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
41
+ dependencies:
42
+ data-uri-to-buffer: 2.0.2
43
+ source-map: 0.6.1
44
+ dev: false
45
+
46
+ /jsx-number-format/0.1.4:
47
+ resolution: {integrity: sha512-uPc/Q90XqZoRE7Cu1OLFQB2cSrA2Dy8+okzPOtML8vbagNFDSipbndIPme+q0odBjEhL+wf3WH3Wo52was4Tsg==}
48
+ dev: false
49
+
50
+ /load-source-map/3.0.1:
51
+ resolution: {integrity: sha512-TMYgVXwivT/VeOk0h+chnlhgCclG9xaB8v0Z07gOGDuvE1Vg60fW4NOIPMQ+h64jYYgfgenp0AsdczQWfRAoVw==}
52
+ engines: {node: '>=12'}
53
+ dependencies:
54
+ source-map: 0.8.0-beta.0
55
+ dev: false
56
+
57
+ /lodash.sortby/4.7.0:
58
+ resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
59
+ dev: false
60
+
61
+ /printable-characters/1.0.42:
62
+ resolution: {integrity: sha1-Pxjpd6m9jrN/zE/1ZZ176Qhos9g=}
63
+ dev: false
64
+
65
+ /punycode/2.1.1:
66
+ resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
67
+ engines: {node: '>=6'}
68
+ dev: false
69
+
70
+ /source-map/0.6.1:
71
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
72
+ engines: {node: '>=0.10.0'}
73
+ dev: false
74
+
75
+ /source-map/0.8.0-beta.0:
76
+ resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
77
+ engines: {node: '>= 8'}
78
+ dependencies:
79
+ whatwg-url: 7.1.0
80
+ dev: false
81
+
82
+ /stacktracey/2.1.8:
83
+ resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
84
+ dependencies:
85
+ as-table: 1.0.55
86
+ get-source: 2.0.12
87
+ dev: false
88
+
89
+ /tr46/1.0.1:
90
+ resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
91
+ dependencies:
92
+ punycode: 2.1.1
93
+ dev: false
94
+
95
+ /webidl-conversions/4.0.2:
96
+ resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
97
+ dev: false
98
+
99
+ /whatwg-url/7.1.0:
100
+ resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
101
+ dependencies:
102
+ lodash.sortby: 4.7.0
103
+ tr46: 1.0.1
104
+ webidl-conversions: 4.0.2
105
+ dev: false
package/src/main.coffee CHANGED
@@ -45,7 +45,8 @@ fetch_mapped_location = ( path, linenr, colnr ) ->
45
45
  sourcemap = await load_source_map path
46
46
  smp = sourcemap.originalPositionFor { line: linenr, column: colnr, }
47
47
  catch error
48
- warn '^7763-3^', "!!!!!!!!!!!!!!!!!", error.message
48
+ # warn '^7763-3^', "!!!!!!!!!!!!!!!!!", { path, }
49
+ # warn '^7763-3^', "!!!!!!!!!!!!!!!!!", error.message
49
50
  return { path, linenr, colnr, }
50
51
  #.........................................................................................................
51
52
  if ( smp? ) and ( smp.source? ) and ( smp.source isnt '' ) and ( smp.line? ) and ( smp.column? )
@@ -104,7 +105,7 @@ show_error_with_source_context = ( error, headline ) ->
104
105
  callsites = get_error_callsites error
105
106
  #.........................................................................................................
106
107
  if ( not callsites? ) or ( callsites.length is 0 )
107
- write_to_stderr CND.red CND.reverse "error has no associated callsites:"
108
+ write_to_stderr CND.red CND.reverse "^455756^ error has no associated callsites:"
108
109
  write_to_stderr CND.red CND.reverse rpr error
109
110
  return null
110
111
  #.........................................................................................................
@@ -120,27 +121,45 @@ show_error_with_source_context = ( error, headline ) ->
120
121
  linenr = callsite.getLineNumber()
121
122
  colnr = callsite.getColumnNumber()
122
123
  #.......................................................................................................
123
- if path.startsWith 'internal/'
124
+ if ( path.startsWith 'node:internal/' ) or ( path.startsWith 'internal/' )
124
125
  write_to_stderr arrowhead, grey "#{path} @ #{linenr},#{colnr}"
125
126
  continue
126
127
  #.......................................................................................................
127
128
  # write_to_stderr()
128
129
  # write_to_stderr steel bold reverse ( "#{relpath} ##{linenr}:" ).padEnd 108
130
+ fname = callsite.getFunctionName() ? callsite.getMethodName() ? null
129
131
  { path
130
132
  linenr
131
133
  colnr } = await fetch_mapped_location path, linenr, colnr
132
134
  relpath = PATH.relative process.cwd(), path
133
- write_to_stderr arrowhead, gold ( "#{relpath} @ #{linenr},#{colnr}: \x1b[38;05;234m".padEnd width, '—' )
135
+ if fname?
136
+ ### TAINT use proper methods to format with multiple colors ###
137
+ fname_txt = steel fname
138
+ width1 = width + ( fname_txt.length - fname.length )
139
+ write_to_stderr arrowhead, gold ( "#{relpath} @ #{linenr},#{colnr}: #{fname_txt}() \x1b[38;05;234m".padEnd width1, '—' )
140
+ else
141
+ write_to_stderr arrowhead, gold ( "#{relpath} @ #{linenr},#{colnr}: \x1b[38;05;234m".padEnd width, '—' )
134
142
  for context_line in await get_context path, linenr, colnr, width
135
143
  write_to_stderr arrowshaft, context_line
136
144
  alert '^77765-2^', reverse bold headline
137
- # if error?.message?
145
+ # urge "^94843^ error.stack:", rpr error.stack
146
+ # urge "^94843^ error.message:", rpr error.message
147
+ # urge "^94843^ error.code:", rpr error.code
148
+ # urge "^94843^ error.name:", rpr error.name
149
+ # urge "^94843^ error.type:", rpr error.type
150
+ # urge "^94843^ error.toString():", rpr error.toString()
151
+ # urge "^94843^ error:", rpr error
152
+ # CATALOGUING = require '../../multimix/lib/cataloguing'
153
+ # urge "^94843^", ( CATALOGUING.all_keys_of error )
138
154
  return null
139
155
 
140
156
  #-----------------------------------------------------------------------------------------------------------
141
157
  exit_handler = ( error, origin ) ->
142
158
  ### TAINT origin never used ###
143
- show_stacktracey error
159
+ # show_stacktracey error
160
+ # debug '^4488^', error
161
+ # debug '^4488^', await origin
162
+ # return null
144
163
  type = error.code ? error.name ? 'EXCEPTION'
145
164
  message = " #{type}: " + ( error?.message ? "an unrecoverable condition occurred" )
146
165
  await show_error_with_source_context error, message
@@ -150,9 +169,9 @@ exit_handler = ( error, origin ) ->
150
169
  ############################################################################################################
151
170
  ############################################################################################################
152
171
  ############################################################################################################
153
- StackTracey = require 'stacktracey'
154
172
 
155
173
  get_stacktracey = ( error ) ->
174
+ StackTracey = require 'stacktracey'
156
175
  stack = ( new StackTracey error ).withSources()
157
176
  # stack = stack.clean()
158
177
  R = []
@@ -177,14 +196,14 @@ get_stacktracey = ( error ) ->
177
196
 
178
197
  show_stacktracey = ( error ) ->
179
198
  for d in get_stacktracey error
180
- echo CND.steel "#{d.relpath} @ #{d.line}:#{d.column}"
199
+ echo CND.steel '^44872^ ' + "#{d.relpath} @ #{d.line}:#{d.column}"
181
200
  ### NOTE errors:
182
201
  ENOENT: no such file or directory
183
202
  EISDIR: illegal operation on a directory, read
184
203
  'Cannot read property 'originalPositionFor' of undefined'
185
204
  ###
186
- if d.error? then echo CND.red d.error.message ? "an error occurred"
187
- else echo CND.yellow "#{rpr d.source[ .. 100 ]}"
205
+ if d.error? then echo CND.red '^44873^ ' + ( d.error.message ? "an error occurred" )
206
+ else echo CND.yellow '^44874^ ' + "#{rpr d.source[ .. 100 ]}"
188
207
  return null
189
208
 
190
209
  ############################################################################################################
@@ -194,10 +213,23 @@ show_stacktracey = ( error ) ->
194
213
 
195
214
  ############################################################################################################
196
215
  unless global[ Symbol.for 'cnd-exception-handler' ]?
216
+ null
197
217
  global[ Symbol.for 'cnd-exception-handler' ] = true
198
218
  process.once 'uncaughtException', exit_handler
199
219
  process.once 'unhandledRejection', exit_handler
200
220
 
221
+ # do =>
222
+ # process.stderr.on 'data', ( data ) => debug "^6863-1^ (stderr.on 'data'):", rpr data
223
+ # process.stdout.on 'data', ( data ) => debug "^6863-2^ (stdout.on 'data'):", rpr data
224
+ # process.stderr.on 'end', => debug "^6863-1^ (stderr.on 'end')"
225
+ # process.stdout.on 'end', => debug "^6863-2^ (stdout.on 'end')"
226
+ # debug '^6456^'
227
+ # echo "^4564^ echo to stdout"
228
+ # warn "^4564^ warn to stderr"
229
+ # process.stderr.write "this goes to stderr\n"
230
+ # process.stdout.write "this goes to stdout\n"
231
+ # process.on 'message', ( message ) -> debug "^6863-3^' (process.on 'message'):", rpr message
232
+ # process.on 'warning', ( warning ) -> debug "^6863-3^' (process.on 'warning'):", rpr warning
201
233
  ###
202
234
  callsite.getThis() - returns the value of this
203
235
  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.