mol_mutable 0.0.989 → 0.0.991
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/node.test.js +136 -27
- package/node.test.js.map +1 -1
- package/package.json +1 -1
- package/web.test.js +4 -23
- package/web.test.js.map +1 -1
package/node.test.js
CHANGED
|
@@ -221,6 +221,32 @@ var $;
|
|
|
221
221
|
$.$mol_fail_catch = $mol_fail_catch;
|
|
222
222
|
})($ || ($ = {}));
|
|
223
223
|
|
|
224
|
+
;
|
|
225
|
+
"use strict";
|
|
226
|
+
var $;
|
|
227
|
+
(function ($) {
|
|
228
|
+
function $mol_try(handler) {
|
|
229
|
+
try {
|
|
230
|
+
return handler();
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
return error;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
$.$mol_try = $mol_try;
|
|
237
|
+
})($ || ($ = {}));
|
|
238
|
+
|
|
239
|
+
;
|
|
240
|
+
"use strict";
|
|
241
|
+
var $;
|
|
242
|
+
(function ($) {
|
|
243
|
+
$mol_test({
|
|
244
|
+
'return result without errors'() {
|
|
245
|
+
$mol_assert_equal($mol_try(() => false), false);
|
|
246
|
+
},
|
|
247
|
+
});
|
|
248
|
+
})($ || ($ = {}));
|
|
249
|
+
|
|
224
250
|
;
|
|
225
251
|
"use strict";
|
|
226
252
|
var $;
|
|
@@ -230,7 +256,7 @@ var $;
|
|
|
230
256
|
return false;
|
|
231
257
|
if (!$mol_fail_catch(error))
|
|
232
258
|
return false;
|
|
233
|
-
|
|
259
|
+
$mol_try(() => { $mol_fail_hidden(error); });
|
|
234
260
|
return true;
|
|
235
261
|
}
|
|
236
262
|
$.$mol_fail_log = $mol_fail_log;
|
|
@@ -368,7 +394,7 @@ var $;
|
|
|
368
394
|
get: () => stack_get() + '\n' + [
|
|
369
395
|
this.cause ?? 'no cause',
|
|
370
396
|
...this.errors.flatMap(e => [
|
|
371
|
-
e.stack,
|
|
397
|
+
String(e.stack),
|
|
372
398
|
...e instanceof $mol_error_mix || !e.cause ? [] : [e.cause]
|
|
373
399
|
])
|
|
374
400
|
].map(frame_normalize).join('\n')
|
|
@@ -722,6 +748,17 @@ var $;
|
|
|
722
748
|
$.$mol_dev_format_register = $mol_dev_format_register;
|
|
723
749
|
$.$mol_dev_format_head = Symbol('$mol_dev_format_head');
|
|
724
750
|
$.$mol_dev_format_body = Symbol('$mol_dev_format_body');
|
|
751
|
+
function $mol_dev_format_button(label, click) {
|
|
752
|
+
return $mol_dev_format_auto({
|
|
753
|
+
[$.$mol_dev_format_head]() {
|
|
754
|
+
return $mol_dev_format_span({ color: 'cornflowerblue' }, label);
|
|
755
|
+
},
|
|
756
|
+
[$.$mol_dev_format_body]() {
|
|
757
|
+
Promise.resolve().then(click);
|
|
758
|
+
return $mol_dev_format_span({});
|
|
759
|
+
}
|
|
760
|
+
});
|
|
761
|
+
}
|
|
725
762
|
$mol_dev_format_register({
|
|
726
763
|
header: (val, config = false) => {
|
|
727
764
|
if (config)
|
|
@@ -739,13 +776,41 @@ var $;
|
|
|
739
776
|
if (typeof val === 'function') {
|
|
740
777
|
return $mol_dev_format_native(val);
|
|
741
778
|
}
|
|
779
|
+
if (Error.isError(val)) {
|
|
780
|
+
return $mol_dev_format_span({}, $mol_dev_format_native(val), ' ', $mol_dev_format_button('throw', () => $mol_fail_hidden(val)));
|
|
781
|
+
}
|
|
782
|
+
if (val instanceof Promise) {
|
|
783
|
+
return $.$mol_dev_format_shade($mol_dev_format_native(val), ' ', val[Symbol.toStringTag] ?? '');
|
|
784
|
+
}
|
|
742
785
|
if (Symbol.toStringTag in val) {
|
|
743
786
|
return $mol_dev_format_native(val);
|
|
744
787
|
}
|
|
745
788
|
return null;
|
|
746
789
|
},
|
|
747
|
-
hasBody: val =>
|
|
748
|
-
|
|
790
|
+
hasBody: (val, config = false) => {
|
|
791
|
+
if (config)
|
|
792
|
+
return false;
|
|
793
|
+
if (!val)
|
|
794
|
+
return false;
|
|
795
|
+
if (val[$.$mol_dev_format_body])
|
|
796
|
+
return true;
|
|
797
|
+
return false;
|
|
798
|
+
},
|
|
799
|
+
body: (val, config = false) => {
|
|
800
|
+
if (config)
|
|
801
|
+
return null;
|
|
802
|
+
if (!val)
|
|
803
|
+
return null;
|
|
804
|
+
if ($.$mol_dev_format_body in val) {
|
|
805
|
+
try {
|
|
806
|
+
return val[$.$mol_dev_format_body]();
|
|
807
|
+
}
|
|
808
|
+
catch (error) {
|
|
809
|
+
return $.$mol_dev_format_accent($mol_dev_format_native(val), '💨', $mol_dev_format_native(error), '');
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
return null;
|
|
813
|
+
},
|
|
749
814
|
});
|
|
750
815
|
function $mol_dev_format_native(obj) {
|
|
751
816
|
if (typeof obj === 'undefined')
|
|
@@ -811,6 +876,69 @@ var $;
|
|
|
811
876
|
$.$mol_dev_format_indent = $.$mol_dev_format_div.bind(null, {
|
|
812
877
|
'margin-left': '13px'
|
|
813
878
|
});
|
|
879
|
+
class Stack extends Array {
|
|
880
|
+
toString() {
|
|
881
|
+
return this.join('\n');
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
class Call extends Object {
|
|
885
|
+
type;
|
|
886
|
+
function;
|
|
887
|
+
method;
|
|
888
|
+
eval;
|
|
889
|
+
source;
|
|
890
|
+
offset;
|
|
891
|
+
pos;
|
|
892
|
+
object;
|
|
893
|
+
flags;
|
|
894
|
+
[Symbol.toStringTag];
|
|
895
|
+
constructor(call) {
|
|
896
|
+
super();
|
|
897
|
+
this.type = call.getTypeName() ?? '';
|
|
898
|
+
this.function = call.getFunctionName() ?? '';
|
|
899
|
+
this.method = call.getMethodName() ?? '';
|
|
900
|
+
if (this.method === this.function)
|
|
901
|
+
this.method = '';
|
|
902
|
+
this.pos = [call.getEnclosingLineNumber() ?? 0, call.getEnclosingColumnNumber() ?? 0];
|
|
903
|
+
this.eval = call.getEvalOrigin() ?? '';
|
|
904
|
+
this.source = call.getScriptNameOrSourceURL() ?? '';
|
|
905
|
+
this.object = call.getThis();
|
|
906
|
+
this.offset = call.getPosition();
|
|
907
|
+
const flags = [];
|
|
908
|
+
if (call.isAsync())
|
|
909
|
+
flags.push('async');
|
|
910
|
+
if (call.isConstructor())
|
|
911
|
+
flags.push('constructor');
|
|
912
|
+
if (call.isEval())
|
|
913
|
+
flags.push('eval');
|
|
914
|
+
if (call.isNative())
|
|
915
|
+
flags.push('native');
|
|
916
|
+
if (call.isPromiseAll())
|
|
917
|
+
flags.push('PromiseAll');
|
|
918
|
+
if (call.isToplevel())
|
|
919
|
+
flags.push('top');
|
|
920
|
+
this.flags = flags;
|
|
921
|
+
const type = this.type ? this.type + '.' : '';
|
|
922
|
+
const func = this.function || '<anon>';
|
|
923
|
+
const method = this.method ? ' [' + this.method + '] ' : '';
|
|
924
|
+
this[Symbol.toStringTag] = `${type}${func}${method}`;
|
|
925
|
+
}
|
|
926
|
+
[Symbol.toPrimitive]() {
|
|
927
|
+
return this.toString();
|
|
928
|
+
}
|
|
929
|
+
toString() {
|
|
930
|
+
const object = this.object || '';
|
|
931
|
+
const label = this[Symbol.toStringTag];
|
|
932
|
+
const source = `${this.source}:${this.pos.join(':')} #${this.offset}`;
|
|
933
|
+
return `\tat ${object}${label} (${source})`;
|
|
934
|
+
}
|
|
935
|
+
[$.$mol_dev_format_head]() {
|
|
936
|
+
return $.$mol_dev_format_div({}, $mol_dev_format_native(this), $.$mol_dev_format_shade(' '), ...this.object ? [
|
|
937
|
+
$mol_dev_format_native(this.object),
|
|
938
|
+
] : [], ...this.method ? [$.$mol_dev_format_shade(' ', ' [', this.method, ']')] : [], $.$mol_dev_format_shade(' ', this.flags.join(', ')));
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
Error.prepareStackTrace ??= (error, stack) => new Stack(...stack.map(call => new Call(call)));
|
|
814
942
|
})($ || ($ = {}));
|
|
815
943
|
|
|
816
944
|
;
|
|
@@ -2775,7 +2903,7 @@ var $;
|
|
|
2775
2903
|
if (left instanceof RegExp)
|
|
2776
2904
|
return left.source === right.source && left.flags === right.flags;
|
|
2777
2905
|
if (left instanceof Error)
|
|
2778
|
-
return left.message === right.message && left.stack
|
|
2906
|
+
return left.message === right.message && $mol_compare_deep(left.stack, right.stack);
|
|
2779
2907
|
let left_cache = $.$mol_compare_deep_cache.get(left);
|
|
2780
2908
|
if (left_cache) {
|
|
2781
2909
|
const right_cache = left_cache.get(right);
|
|
@@ -3037,7 +3165,7 @@ var $;
|
|
|
3037
3165
|
catch (error) {
|
|
3038
3166
|
$.$mol_fail = fail;
|
|
3039
3167
|
if (typeof ErrorRight === 'string') {
|
|
3040
|
-
$mol_assert_equal(error.message, ErrorRight);
|
|
3168
|
+
$mol_assert_equal(error.message ?? error, ErrorRight);
|
|
3041
3169
|
}
|
|
3042
3170
|
else {
|
|
3043
3171
|
$mol_assert_equal(error instanceof ErrorRight, true);
|
|
@@ -3061,7 +3189,7 @@ var $;
|
|
|
3061
3189
|
continue;
|
|
3062
3190
|
if (!$mol_compare_deep(args[i], args[j]))
|
|
3063
3191
|
continue;
|
|
3064
|
-
$mol_fail(new Error(`
|
|
3192
|
+
return $mol_fail(new Error(`Uniquesess assertion failure`, { cause: { [i]: args[i], [i]: args[i] } }));
|
|
3065
3193
|
}
|
|
3066
3194
|
}
|
|
3067
3195
|
}
|
|
@@ -3072,29 +3200,10 @@ var $;
|
|
|
3072
3200
|
continue;
|
|
3073
3201
|
if (args[0] instanceof $mol_dom_context.Element && args[i] instanceof $mol_dom_context.Element && args[0].outerHTML === args[i].outerHTML)
|
|
3074
3202
|
continue;
|
|
3075
|
-
return $mol_fail(new Error(`args[0]
|
|
3203
|
+
return $mol_fail(new Error(`Equality assertion failure`, { cause: { 0: args[0], [i]: args[i] } }));
|
|
3076
3204
|
}
|
|
3077
3205
|
}
|
|
3078
3206
|
$.$mol_assert_equal = $mol_assert_equal;
|
|
3079
|
-
const print = (val) => {
|
|
3080
|
-
if (!val)
|
|
3081
|
-
return val;
|
|
3082
|
-
if (typeof val === 'bigint')
|
|
3083
|
-
return String(val) + 'n';
|
|
3084
|
-
if (typeof val === 'symbol')
|
|
3085
|
-
return `Symbol(${val.description})`;
|
|
3086
|
-
if (typeof val !== 'object')
|
|
3087
|
-
return val;
|
|
3088
|
-
if ('outerHTML' in val)
|
|
3089
|
-
return val.outerHTML;
|
|
3090
|
-
try {
|
|
3091
|
-
return JSON.stringify(val, (k, v) => typeof v === 'bigint' ? String(v) : v, '\t');
|
|
3092
|
-
}
|
|
3093
|
-
catch (error) {
|
|
3094
|
-
console.error(error);
|
|
3095
|
-
return val;
|
|
3096
|
-
}
|
|
3097
|
-
};
|
|
3098
3207
|
})($ || ($ = {}));
|
|
3099
3208
|
|
|
3100
3209
|
;
|