nodexh 3.0.0 → 3.2.0
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/bin/nodexh +3 -2
- package/lib/main.js +32 -10
- package/package.json +1 -1
- package/src/main.coffee +17 -7
- package/lib/main.js.map +0 -13
package/bin/nodexh
CHANGED
|
@@ -16,13 +16,14 @@ realpath() {
|
|
|
16
16
|
|
|
17
17
|
node \
|
|
18
18
|
--require "$(realpath "$0")"/../../lib/main.js \
|
|
19
|
+
--no-warnings=ExperimentalWarning \
|
|
19
20
|
--trace-warnings \
|
|
20
|
-
--disable-warning='ExperimentalWarning' \
|
|
21
|
-
--experimental-require-module \
|
|
22
21
|
--enable-source-maps \
|
|
23
22
|
--stack-trace-limit=100 \
|
|
24
23
|
--expose-gc \
|
|
25
24
|
"$@"
|
|
25
|
+
# --disable-warning='ExperimentalWarning' \
|
|
26
|
+
# --experimental-require-module \
|
|
26
27
|
# --nouse_idle_notification \
|
|
27
28
|
# --trace_gc \
|
|
28
29
|
|
package/lib/main.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
'use strict';
|
|
3
|
-
var FS, GUY, PATH, _exit_handler, _get_context, alert, blue, 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;
|
|
3
|
+
var FS, GUY, PATH, _exit_handler, _get_context, alert, blue, bold, cyan, debug, echo, exit_handler, fetch_mapped_location, get_context, get_error_callsites, gold, green, grey, inspect, lime, load_source_map, log, modules_path_color, orange, outside_path_color, own_path_color, plum, red, reverse, rpr, show_error_with_source_context, steel, underline, white, write_to_stderr, yellow;
|
|
4
4
|
|
|
5
5
|
//###########################################################################################################
|
|
6
6
|
GUY = require('guy');
|
|
@@ -17,7 +17,22 @@
|
|
|
17
17
|
|
|
18
18
|
PATH = require('path');
|
|
19
19
|
|
|
20
|
-
({red, green, steel,
|
|
20
|
+
({red, green, steel, cyan, bold, lime, gold, white, plum, orange, blue, yellow, reverse, underline, bold} = GUY.trm); // Слава Україні // Слава Україні
|
|
21
|
+
|
|
22
|
+
grey = GUY.trm.BASE1;
|
|
23
|
+
|
|
24
|
+
//-----------------------------------------------------------------------------------------------------------
|
|
25
|
+
modules_path_color = function(...P) {
|
|
26
|
+
return reverse(bold(orange('', ...P, '')));
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
outside_path_color = function(...P) {
|
|
30
|
+
return reverse(bold(plum('', ...P, '')));
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
own_path_color = function(...P) {
|
|
34
|
+
return reverse(bold(lime('', ...P, '')));
|
|
35
|
+
};
|
|
21
36
|
|
|
22
37
|
//-----------------------------------------------------------------------------------------------------------
|
|
23
38
|
write_to_stderr = function(...P) {
|
|
@@ -132,20 +147,26 @@
|
|
|
132
147
|
linenr = callsite.getLineNumber();
|
|
133
148
|
colnr = callsite.getColumnNumber();
|
|
134
149
|
//.......................................................................................................
|
|
135
|
-
if ((path.startsWith('node:
|
|
150
|
+
if ((path.startsWith('node:')) || (path.startsWith('internal/'))) {
|
|
136
151
|
write_to_stderr(arrowhead, grey(`${path} @ ${linenr},${colnr}`));
|
|
137
152
|
continue;
|
|
138
153
|
}
|
|
139
154
|
//.......................................................................................................
|
|
140
|
-
if (/\/node_modules\//.test(path)) {
|
|
141
|
-
path_color = yellow;
|
|
142
|
-
} else {
|
|
143
|
-
path_color = gold;
|
|
144
|
-
}
|
|
145
|
-
//.......................................................................................................
|
|
146
155
|
fname = (ref = (ref1 = callsite.getFunctionName()) != null ? ref1 : callsite.getMethodName()) != null ? ref : null;
|
|
147
156
|
({path, linenr, colnr} = (await fetch_mapped_location(path, linenr, colnr)));
|
|
148
157
|
relpath = PATH.relative(process.cwd(), path);
|
|
158
|
+
//.......................................................................................................
|
|
159
|
+
switch (true) {
|
|
160
|
+
case /\/node_modules\//.test(path):
|
|
161
|
+
path_color = modules_path_color;
|
|
162
|
+
break;
|
|
163
|
+
case relpath.startsWith('../'):
|
|
164
|
+
path_color = outside_path_color;
|
|
165
|
+
break;
|
|
166
|
+
default:
|
|
167
|
+
path_color = own_path_color;
|
|
168
|
+
}
|
|
169
|
+
//.......................................................................................................
|
|
149
170
|
if (fname != null) {
|
|
150
171
|
fname_txt = steel(fname);
|
|
151
172
|
width1 = width + (fname_txt.length - fname.length);
|
|
@@ -195,4 +216,5 @@
|
|
|
195
216
|
|
|
196
217
|
}).call(this);
|
|
197
218
|
|
|
198
|
-
//# sourceMappingURL=main.js.map
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21haW4uY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBO0VBQUE7QUFBQSxNQUFBLEVBQUEsRUFBQSxHQUFBLEVBQUEsSUFBQSxFQUFBLGFBQUEsRUFBQSxZQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUEsWUFBQSxFQUFBLHFCQUFBLEVBQUEsV0FBQSxFQUFBLG1CQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxlQUFBLEVBQUEsR0FBQSxFQUFBLGtCQUFBLEVBQUEsTUFBQSxFQUFBLGtCQUFBLEVBQUEsY0FBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUEsT0FBQSxFQUFBLEdBQUEsRUFBQSw4QkFBQSxFQUFBLEtBQUEsRUFBQSxTQUFBLEVBQUEsS0FBQSxFQUFBLGVBQUEsRUFBQSxNQUFBOzs7RUFJQSxHQUFBLEdBQTRCLE9BQUEsQ0FBUSxLQUFSOztFQUM1QixDQUFBLENBQUUsS0FBRixFQUNFLEtBREYsQ0FBQSxHQUM0QixHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVIsQ0FBb0IsUUFBcEIsQ0FENUI7O0VBRUEsQ0FBQSxDQUFFLEdBQUYsRUFDRSxPQURGLEVBRUUsSUFGRixFQUdFLEdBSEYsQ0FBQSxHQUc0QixHQUFHLENBQUMsR0FIaEM7O0VBSUEsbUJBQUEsR0FBNEIsT0FBQSxDQUFRLGlCQUFSOztFQUM1QixlQUFBLEdBQTRCLENBQUUsT0FBQSxDQUFRLE1BQVIsQ0FBRixDQUFrQixDQUFDLFNBQW5CLENBQStCLE9BQUEsQ0FBUSxpQkFBUixDQUEvQjs7RUFDNUIsRUFBQSxHQUE0QixPQUFBLENBQVEsSUFBUjs7RUFDNUIsSUFBQSxHQUE0QixPQUFBLENBQVEsTUFBUjs7RUFDNUIsQ0FBQSxDQUFFLEdBQUYsRUFDRSxLQURGLEVBRUUsS0FG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QyxPQUFBLEdBQVUsRUFBQSxDQUFBLENBQUksSUFBSixDQUFBLEVBQUEsQ0FBQSxHQUFlLGtFQUFtQixxQ0FBbkI7SUFDekIsTUFBTSw4QkFBQSxDQUErQixLQUEvQixFQUFzQyxPQUF0QztBQUNOLFdBQU87RUFMTyxFQS9JaEI7OztFQXVKQSxZQUFBLEdBQWUsTUFBQSxRQUFBLENBQUUsS0FBRixFQUFTLE1BQVQsQ0FBQTtJQUNiLE1BQU0sYUFBQSxDQUFjLEtBQWQsRUFBcUIsTUFBckI7SUFDTixZQUFBLENBQWEsQ0FBRSxRQUFBLENBQUEsQ0FBQTthQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsR0FBYjtJQUFILENBQUYsQ0FBYjtBQUNBLFdBQU87RUFITSxFQXZKZjs7O0VBK0pBLElBQU8sbURBQVA7SUFDRTtJQUNBLE1BQU0sQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLHVCQUFYLENBQUYsQ0FBTixHQUErQztJQUMvQyxPQUFPLENBQUMsSUFBUixDQUFhLG1CQUFiLEVBQW1DLFlBQW5DO0lBQ0EsT0FBTyxDQUFDLElBQVIsQ0FBYSxvQkFBYixFQUFtQyxZQUFuQyxFQUpGO0dBL0pBOzs7RUF1S0EsTUFBTSxDQUFDLE9BQVAsR0FBaUIsQ0FBRSxZQUFGLEVBQWdCLGFBQWhCO0FBdktqQiIsInNvdXJjZXNDb250ZW50IjpbIlxuJ3VzZSBzdHJpY3QnXG5cblxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5HVVkgICAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSAnZ3V5J1xueyBhbGVydFxuICBkZWJ1ZyAgIH0gICAgICAgICAgICAgICA9IEdVWS50cm0uZ2V0X2xvZ2dlcnMgJ05PREVYSCdcbnsgcnByXG4gIGluc3BlY3RcbiAgZWNob1xuICBsb2cgICAgIH0gICAgICAgICAgICAgICA9IEdVWS50cm1cbmdldF9lcnJvcl9jYWxsc2l0ZXMgICAgICAgPSByZXF1aXJlICdlcnJvci1jYWxsc2l0ZXMnXG5sb2FkX3NvdXJjZV9tYXAgICAgICAgICAgID0gKCByZXF1aXJlICd1dGlsJyApLnByb21pc2lmeSAoIHJlcXVpcmUgJ2xvYWQtc291cmNlLW1hcCcgKVxuRlMgICAgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUgJ2ZzJ1xuUEFUSCAgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUgJ3BhdGgnXG57IHJlZFxuICBncmVlblxuICBzdGVlbFxuICBjeWFuXG4gIGJvbGRcbiAgbGltZVxuICBnb2xkXG4gIHdoaXRlXG4gIHBsdW1cbiAgb3JhbmdlXG4gIGJsdWUgICAgIyDQodC70LDQstCwINCj0LrRgNCw0ZfQvdGWXG4gIHllbGxvdyAgIyDQodC70LDQstCwINCj0LrRgNCw0ZfQvdGWXG4gIHJldmVyc2VcbiAgdW5kZXJsaW5lXG4gIGJvbGQgfSAgICAgICAgICAgICAgICAgID0gR1VZLnRybVxuZ3JleSAgICAgICAgICAgICAgICAgICAgICA9IEdVWS50cm0uQkFTRTFcblxuXG4jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbm1vZHVsZXNfcGF0aF9jb2xvciAgPSAoIFAuLi4gKSAtPiByZXZlcnNlIGJvbGQgb3JhbmdlICcnLCBQLi4uLCAnJ1xub3V0c2lkZV9wYXRoX2NvbG9yICA9ICggUC4uLiApIC0+IHJldmVyc2UgYm9sZCBwbHVtICAgJycsIFAuLi4sICcnXG5vd25fcGF0aF9jb2xvciAgICAgID0gKCBQLi4uICkgLT4gcmV2ZXJzZSBib2xkIGxpbWUgICAnJywgUC4uLiwgJydcblxuIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG53cml0ZV90b19zdGRlcnIgPSAoIFAuLi4gKSAtPiBwcm9jZXNzLnN0ZGVyci53cml0ZSAnICcgKyAoIEdVWS50cm0ucGVuIFAuLi4gKSArICdcXG4nXG5cbiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZmV0Y2hfbWFwcGVkX2xvY2F0aW9uID0gKCBwYXRoLCBsaW5lbnIsIGNvbG5yICkgLT5cbiAgdHJ5XG4gICAgc291cmNlbWFwID0gYXdhaXQgbG9hZF9zb3VyY2VfbWFwIHBhdGhcbiAgICBzbXAgICAgICAgPSBzb3VyY2VtYXAub3JpZ2luYWxQb3NpdGlvbkZvciB7IGxpbmU6IGxpbmVuciwgY29sdW1uOiBjb2xuciwgfVxuICBjYXRjaCBlcnJvclxuICAgIHJldHVybiB7IHBhdGgsIGxpbmVuciwgY29sbnIsIH1cbiAgIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLlxuICBpZiAoIHNtcD8gKSBhbmQgKCBzbXAuc291cmNlPyApIGFuZCAoIHNtcC5zb3VyY2UgaXNudCAnJyApIGFuZCAoIHNtcC5saW5lPyApIGFuZCAoIHNtcC5jb2x1bW4/IClcbiAgICBtYXBwZWRfcGF0aCA9IFBBVEguam9pbiAoIFBBVEguZGlybmFtZSBwYXRoICksIHNtcC5zb3VyY2VcbiAgICByZXR1cm4geyBwYXRoOiBtYXBwZWRfcGF0aCwgbGluZW5yOiBzbXAubGluZSwgY29sbnI6IHNtcC5jb2x1bW4sIH1cbiAgIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLlxuICByZXR1cm4geyBwYXRoLCBsaW5lbnIsIGNvbG5yLCB9XG5cbiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZ2V0X2NvbnRleHQgPSAoIHBhdGgsIGxpbmVuciwgY29sbnIsIHdpZHRoICkgLT5cbiAgdHJ5IHJldHVybiAoIF9nZXRfY29udGV4dCBwYXRoLCBsaW5lbnIsIGNvbG5yLCB3aWR0aCApIGNhdGNoIGVycm9yXG4gICAgdGhyb3cgZXJyb3IgdW5sZXNzIGVycm9yLmNvZGUgaXMgJ0VOT0VOVCdcbiAgcmV0dXJuIFtdXG5cbiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX2dldF9jb250ZXh0ID0gKCBwYXRoLCBsaW5lbnIsIGNvbG5yLCB3aWR0aCApIC0+XG4gIGxpbmVzICAgICA9ICggRlMucmVhZEZpbGVTeW5jIHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSApLnNwbGl0ICdcXG4nXG4gIGRlbHRhICAgICA9IDFcbiAgY29sZGVsdGEgID0gNVxuICBlZmZlY3QgICAgPSByZXZlcnNlXG4gIGZpcnN0X2lkeCA9IE1hdGgubWF4IDAsIGxpbmVuciAtIDEgLSBkZWx0YVxuICBsYXN0X2lkeCAgPSBNYXRoLm1pbiBsaW5lcy5sZW5ndGggLSAxLCBsaW5lbnIgLSAxICsgZGVsdGFcbiAgUiAgICAgICAgID0gW11cbiAgZm9yIGxpbmUsIGlkeCBpbiBsaW5lc1sgZmlyc3RfaWR4IC4uIGxhc3RfaWR4IF1cbiAgICB0aGlzX2xpbmVuciAgICAgPSBmaXJzdF9pZHggKyBpZHggKyAxXG4gICAgdGhpc19saW5lbnJfdHh0ID0gKCB0aGlzX2xpbmVuci50b1N0cmluZygpLnBhZFN0YXJ0IDQgKSArICfilIIgJ1xuICAgIGlmIHRoaXNfbGluZW5yIGlzbnQgbGluZW5yXG4gICAgICAjIyMgVEFJTlQgc2hvdWxkIGFkanVzdCBvdmVybG9uZyBjb250ZXh0IGxpbmVzIGFzIHdlbGwgIyMjXG4gICAgICBSLnB1c2ggIFwiI3tncmV5IHRoaXNfbGluZW5yX3R4dH0je2dyZXkgbGluZX1cIlxuICAgICAgY29udGludWVcbiAgICAjIyMgVEFJTlQgcGVyZm9ybSBsaW5lIGxlbmd0aCBhZGp1c3RtZW50LCBoaWxpdGluZyBpbiBkZWRpY2F0ZWQgbWV0aG9kICMjI1xuICAgIGMwICAgICAgPSBjb2xuciAtIDFcbiAgICBjMSAgICAgID0gY29sbnIgKyBjb2xkZWx0YVxuICAgIGhpbGl0ZSAgPSBlZmZlY3QgbGluZVsgYzAgLi4uIGMxIF1cbiAgICBsaW5lICAgID0gbGluZVsgLi4uIGMwIF0gKyBoaWxpdGUgKyBsaW5lWyBjMSAuLiBdXG4gICAgaWYgYzEgPiB3aWR0aFxuICAgICAgd2lkdGgyICA9IE1hdGguZmxvb3Igd2lkdGggLyAyXG4gICAgICBsaW5lICAgID0gJy4uLiAnICsgbGluZVsgYzEgLSB3aWR0aDIgLi4gYzEgKyBoaWxpdGUubGVuZ3RoIC0gKCBjMSAtIGMwICkgKyB3aWR0aDIgXSArICcgLi4uJ1xuICAgIGVsc2VcbiAgICAgIGxpbmUgID0gbGluZVsgLi4gd2lkdGggXVxuICAgIFIucHVzaCAgXCIje2dyZXkgdGhpc19saW5lbnJfdHh0fSN7Y3lhbiBsaW5lfVwiXG4gIHJldHVybiBSXG5cbiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuc2hvd19lcnJvcl93aXRoX3NvdXJjZV9jb250ZXh0ID0gKCBlcnJvciwgaGVhZGxpbmUgKSAtPlxuICBhbGVydCAnXjc3NzY1LTFeJywgcmV2ZXJzZSBib2xkIGhlYWRsaW5lXG4gIGFycm93aGVhZCAgID0gd2hpdGUgJ+KWsidcbiAgYXJyb3dzaGFmdCAgPSB3aGl0ZSAn4pSCJ1xuICB3aWR0aCAgICAgICA9IHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnNcbiAgY2FsbHNpdGVzICAgPSBnZXRfZXJyb3JfY2FsbHNpdGVzIGVycm9yXG4gICMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5cbiAgaWYgKCBub3QgY2FsbHNpdGVzPyApIG9yICggY2FsbHNpdGVzLmxlbmd0aCBpcyAwIClcbiAgICB3cml0ZV90b19zdGRlcnIgcmVkIHJldmVyc2UgXCJeNDU1NzU2XiBlcnJvciBoYXMgbm8gYXNzb2NpYXRlZCBjYWxsc2l0ZXM6XCJcbiAgICB3cml0ZV90b19zdGRlcnIgcmVkIHJldmVyc2UgcnByIGVycm9yXG4gICAgcmV0dXJuIG51bGxcbiAgIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLlxuICBjYWxsc2l0ZXMucmV2ZXJzZSgpXG4gICMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5cbiAgZm9yIGNhbGxzaXRlIGluIGNhbGxzaXRlc1xuICAgIHBhdGggPSBjYWxsc2l0ZS5nZXRGaWxlTmFtZSgpXG4gICAgIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5cbiAgICB1bmxlc3MgcGF0aD9cbiAgICAgIHdyaXRlX3RvX3N0ZGVyciBncmV5ICfigJQnLnJlcGVhdCAxMDhcbiAgICAgIGNvbnRpbnVlXG4gICAgIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5cbiAgICBsaW5lbnIgICAgICA9IGNhbGxzaXRlLmdldExpbmVOdW1iZXIoKVxuICAgIGNvbG5yICAgICAgID0gY2FsbHNpdGUuZ2V0Q29sdW1uTnVtYmVyKClcbiAgICAjLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLlxuICAgIGlmICggcGF0aC5zdGFydHNXaXRoICdub2RlOicgKSBvciAoIHBhdGguc3RhcnRzV2l0aCAnaW50ZXJuYWwvJyApXG4gICAgICB3cml0ZV90b19zdGRlcnIgYXJyb3doZWFkLCBncmV5IFwiI3twYXRofSBAICN7bGluZW5yfSwje2NvbG5yfVwiXG4gICAgICBjb250aW51ZVxuICAgICMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXG4gICAgZm5hbWUgPSBjYWxsc2l0ZS5nZXRGdW5jdGlvbk5hbWUoKSA/IGNhbGxzaXRlLmdldE1ldGhvZE5hbWUoKSA/IG51bGxcbiAgICB7IHBhdGhcbiAgICAgIGxpbmVuclxuICAgICAgY29sbnIgICB9ID0gYXdhaXQgZmV0Y2hfbWFwcGVkX2xvY2F0aW9uIHBhdGgsIGxpbmVuciwgY29sbnJcbiAgICByZWxwYXRoICAgICA9IFBBVEgucmVsYXRpdmUgcHJvY2Vzcy5jd2QoKSwgcGF0aFxuICAgICMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXG4gICAgc3dpdGNoIHRydWVcbiAgICAgIHdoZW4gKCAvXFwvbm9kZV9tb2R1bGVzXFwvLy50ZXN0IHBhdGggKSB0aGVuICBwYXRoX2NvbG9yID0gbW9kdWxlc19wYXRoX2NvbG9yXG4gICAgICB3aGVuICggcmVscGF0aC5zdGFydHNXaXRoICcuLi8nICAgICApIHRoZW4gIHBhdGhfY29sb3IgPSBvdXRzaWRlX3BhdGhfY29sb3JcbiAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb2xvciA9IG93bl9wYXRoX2NvbG9yXG4gICAgIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5cbiAgICBpZiBmbmFtZT9cbiAgICAgICMjIyBUQUlOVCB1c2UgcHJvcGVyIG1ldGhvZHMgdG8gZm9ybWF0IHdpdGggbXVsdGlwbGUgY29sb3JzICMjI1xuICAgICAgZm5hbWVfdHh0ID0gc3RlZWwgZm5hbWVcbiAgICAgIHdpZHRoMSAgICA9IHdpZHRoICsgKCBmbmFtZV90eHQubGVuZ3RoIC0gZm5hbWUubGVuZ3RoIClcbiAgICAgIHdyaXRlX3RvX3N0ZGVyciBhcnJvd2hlYWQsIHBhdGhfY29sb3IgKCBcIiN7cmVscGF0aH0gQCAje2xpbmVucn0sI3tjb2xucn06ICN7Zm5hbWVfdHh0fSgpIFxceDFiWzM4OzA1OzIzNG1cIi5wYWRFbmQgd2lkdGgxLCAn4oCUJyApXG4gICAgZWxzZVxuICAgICAgd3JpdGVfdG9fc3RkZXJyIGFycm93aGVhZCwgcGF0aF9jb2xvciAoIFwiI3tyZWxwYXRofSBAICN7bGluZW5yfSwje2NvbG5yfTogXFx4MWJbMzg7MDU7MjM0bVwiLnBhZEVuZCB3aWR0aCwgJ+KAlCcgKVxuICAgIGZvciBjb250ZXh0X2xpbmUgaW4gYXdhaXQgZ2V0X2NvbnRleHQgcGF0aCwgbGluZW5yLCBjb2xuciwgd2lkdGhcbiAgICAgIHdyaXRlX3RvX3N0ZGVyciBhcnJvd3NoYWZ0LCBjb250ZXh0X2xpbmVcbiAgYWxlcnQgJ143Nzc2NS0yXicsIHJldmVyc2UgYm9sZCBoZWFkbGluZVxuICByZXR1cm4gbnVsbFxuXG4jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9leGl0X2hhbmRsZXIgPSAoIGVycm9yLCBvcmlnaW4gKSAtPlxuICAjIyMgVEFJTlQgb3JpZ2luIG5ldmVyIHVzZWQgIyMjXG4gIHR5cGUgICAgPSBlcnJvci5jb2RlID8gZXJyb3IubmFtZSA/ICdFWENFUFRJT04nXG4gIG1lc3NhZ2UgPSBcIiAje3R5cGV9OiBcIiArICggZXJyb3I/Lm1lc3NhZ2UgPyBcImFuIHVucmVjb3ZlcmFibGUgY29uZGl0aW9uIG9jY3VycmVkXCIgKVxuICBhd2FpdCBzaG93X2Vycm9yX3dpdGhfc291cmNlX2NvbnRleHQgZXJyb3IsIG1lc3NhZ2VcbiAgcmV0dXJuIG51bGxcblxuIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leGl0X2hhbmRsZXIgPSAoIGVycm9yLCBvcmlnaW4gKSAtPlxuICBhd2FpdCBfZXhpdF9oYW5kbGVyIGVycm9yLCBvcmlnaW5cbiAgc2V0SW1tZWRpYXRlICggLT4gcHJvY2Vzcy5leGl0IDExMSApXG4gIHJldHVybiBudWxsXG5cblxuXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbnVubGVzcyBnbG9iYWxbIFN5bWJvbC5mb3IgJ2NuZC1leGNlcHRpb24taGFuZGxlcicgXT9cbiAgbnVsbFxuICBnbG9iYWxbIFN5bWJvbC5mb3IgJ2NuZC1leGNlcHRpb24taGFuZGxlcicgXSA9IHRydWVcbiAgcHJvY2Vzcy5vbmNlICd1bmNhdWdodEV4Y2VwdGlvbicsICBleGl0X2hhbmRsZXJcbiAgcHJvY2Vzcy5vbmNlICd1bmhhbmRsZWRSZWplY3Rpb24nLCBleGl0X2hhbmRsZXJcblxuXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbm1vZHVsZS5leHBvcnRzID0geyBleGl0X2hhbmRsZXIsIF9leGl0X2hhbmRsZXIsIH1cblxuIl19
|
|
220
|
+
//# sourceURL=../src/main.coffee
|
package/package.json
CHANGED
package/src/main.coffee
CHANGED
|
@@ -17,16 +17,25 @@ PATH = require 'path'
|
|
|
17
17
|
{ red
|
|
18
18
|
green
|
|
19
19
|
steel
|
|
20
|
-
grey
|
|
21
20
|
cyan
|
|
22
21
|
bold
|
|
22
|
+
lime
|
|
23
23
|
gold
|
|
24
24
|
white
|
|
25
|
+
plum
|
|
26
|
+
orange
|
|
25
27
|
blue # Слава Україні
|
|
26
28
|
yellow # Слава Україні
|
|
27
29
|
reverse
|
|
28
30
|
underline
|
|
29
31
|
bold } = GUY.trm
|
|
32
|
+
grey = GUY.trm.BASE1
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
#-----------------------------------------------------------------------------------------------------------
|
|
36
|
+
modules_path_color = ( P... ) -> reverse bold orange '', P..., ''
|
|
37
|
+
outside_path_color = ( P... ) -> reverse bold plum '', P..., ''
|
|
38
|
+
own_path_color = ( P... ) -> reverse bold lime '', P..., ''
|
|
30
39
|
|
|
31
40
|
#-----------------------------------------------------------------------------------------------------------
|
|
32
41
|
write_to_stderr = ( P... ) -> process.stderr.write ' ' + ( GUY.trm.pen P... ) + '\n'
|
|
@@ -105,20 +114,21 @@ show_error_with_source_context = ( error, headline ) ->
|
|
|
105
114
|
linenr = callsite.getLineNumber()
|
|
106
115
|
colnr = callsite.getColumnNumber()
|
|
107
116
|
#.......................................................................................................
|
|
108
|
-
if ( path.startsWith 'node:
|
|
117
|
+
if ( path.startsWith 'node:' ) or ( path.startsWith 'internal/' )
|
|
109
118
|
write_to_stderr arrowhead, grey "#{path} @ #{linenr},#{colnr}"
|
|
110
119
|
continue
|
|
111
120
|
#.......................................................................................................
|
|
112
|
-
if ( /\/node_modules\//.test path )
|
|
113
|
-
path_color = yellow
|
|
114
|
-
else
|
|
115
|
-
path_color = gold
|
|
116
|
-
#.......................................................................................................
|
|
117
121
|
fname = callsite.getFunctionName() ? callsite.getMethodName() ? null
|
|
118
122
|
{ path
|
|
119
123
|
linenr
|
|
120
124
|
colnr } = await fetch_mapped_location path, linenr, colnr
|
|
121
125
|
relpath = PATH.relative process.cwd(), path
|
|
126
|
+
#.......................................................................................................
|
|
127
|
+
switch true
|
|
128
|
+
when ( /\/node_modules\//.test path ) then path_color = modules_path_color
|
|
129
|
+
when ( relpath.startsWith '../' ) then path_color = outside_path_color
|
|
130
|
+
else path_color = own_path_color
|
|
131
|
+
#.......................................................................................................
|
|
122
132
|
if fname?
|
|
123
133
|
### TAINT use proper methods to format with multiple colors ###
|
|
124
134
|
fname_txt = steel fname
|
package/lib/main.js.map
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"file": "",
|
|
4
|
-
"sourceRoot": "",
|
|
5
|
-
"sources": [
|
|
6
|
-
"../src/main.coffee"
|
|
7
|
-
],
|
|
8
|
-
"names": [],
|
|
9
|
-
"mappings": "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",
|
|
10
|
-
"sourcesContent": [
|
|
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 blue # Слава Україні\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 if ( /\\/node_modules\\//.test path )\n path_color = yellow\n else\n path_color = gold\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, path_color ( \"#{relpath} @ #{linenr},#{colnr}: #{fname_txt}() \\x1b[38;05;234m\".padEnd width1, '—' )\n else\n write_to_stderr arrowhead, path_color ( \"#{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
|
-
]
|
|
13
|
-
}
|