mol_tree2 1.0.1163 → 1.0.1165

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 CHANGED
@@ -1581,6 +1581,32 @@ var $;
1581
1581
  $.$mol_fail_catch = $mol_fail_catch;
1582
1582
  })($ || ($ = {}));
1583
1583
 
1584
+ ;
1585
+ "use strict";
1586
+ var $;
1587
+ (function ($) {
1588
+ function $mol_try(handler) {
1589
+ try {
1590
+ return handler();
1591
+ }
1592
+ catch (error) {
1593
+ return error;
1594
+ }
1595
+ }
1596
+ $.$mol_try = $mol_try;
1597
+ })($ || ($ = {}));
1598
+
1599
+ ;
1600
+ "use strict";
1601
+ var $;
1602
+ (function ($) {
1603
+ $mol_test({
1604
+ 'return result without errors'() {
1605
+ $mol_assert_equal($mol_try(() => false), false);
1606
+ },
1607
+ });
1608
+ })($ || ($ = {}));
1609
+
1584
1610
  ;
1585
1611
  "use strict";
1586
1612
  var $;
@@ -1590,7 +1616,7 @@ var $;
1590
1616
  return false;
1591
1617
  if (!$mol_fail_catch(error))
1592
1618
  return false;
1593
- console.error(error);
1619
+ $mol_try(() => { $mol_fail_hidden(error); });
1594
1620
  return true;
1595
1621
  }
1596
1622
  $.$mol_fail_log = $mol_fail_log;
@@ -2325,7 +2351,7 @@ var $;
2325
2351
  if (left instanceof RegExp)
2326
2352
  return left.source === right.source && left.flags === right.flags;
2327
2353
  if (left instanceof Error)
2328
- return left.message === right.message && left.stack === right.stack;
2354
+ return left.message === right.message && $mol_compare_deep(left.stack, right.stack);
2329
2355
  let left_cache = $.$mol_compare_deep_cache.get(left);
2330
2356
  if (left_cache) {
2331
2357
  const right_cache = left_cache.get(right);
@@ -2587,7 +2613,7 @@ var $;
2587
2613
  catch (error) {
2588
2614
  $.$mol_fail = fail;
2589
2615
  if (typeof ErrorRight === 'string') {
2590
- $mol_assert_equal(error.message, ErrorRight);
2616
+ $mol_assert_equal(error.message ?? error, ErrorRight);
2591
2617
  }
2592
2618
  else {
2593
2619
  $mol_assert_equal(error instanceof ErrorRight, true);
@@ -2611,7 +2637,7 @@ var $;
2611
2637
  continue;
2612
2638
  if (!$mol_compare_deep(args[i], args[j]))
2613
2639
  continue;
2614
- $mol_fail(new Error(`args[${i}] = args[${j}] = ${print(args[i])}`));
2640
+ return $mol_fail(new Error(`Uniquesess assertion failure`, { cause: { [i]: args[i], [i]: args[i] } }));
2615
2641
  }
2616
2642
  }
2617
2643
  }
@@ -2622,29 +2648,10 @@ var $;
2622
2648
  continue;
2623
2649
  if (args[0] instanceof $mol_dom_context.Element && args[i] instanceof $mol_dom_context.Element && args[0].outerHTML === args[i].outerHTML)
2624
2650
  continue;
2625
- return $mol_fail(new Error(`args[0] ≠ args[${i}]\n${print(args[0])}\n---\n${print(args[i])}`));
2651
+ return $mol_fail(new Error(`Equality assertion failure`, { cause: { 0: args[0], [i]: args[i] } }));
2626
2652
  }
2627
2653
  }
2628
2654
  $.$mol_assert_equal = $mol_assert_equal;
2629
- const print = (val) => {
2630
- if (!val)
2631
- return val;
2632
- if (typeof val === 'bigint')
2633
- return String(val) + 'n';
2634
- if (typeof val === 'symbol')
2635
- return `Symbol(${val.description})`;
2636
- if (typeof val !== 'object')
2637
- return val;
2638
- if ('outerHTML' in val)
2639
- return val.outerHTML;
2640
- try {
2641
- return JSON.stringify(val, (k, v) => typeof v === 'bigint' ? String(v) : v, '\t');
2642
- }
2643
- catch (error) {
2644
- console.error(error);
2645
- return val;
2646
- }
2647
- };
2648
2655
  })($ || ($ = {}));
2649
2656
 
2650
2657
  ;
@@ -2887,7 +2894,7 @@ var $;
2887
2894
  get: () => stack_get() + '\n' + [
2888
2895
  this.cause ?? 'no cause',
2889
2896
  ...this.errors.flatMap(e => [
2890
- e.stack,
2897
+ String(e.stack),
2891
2898
  ...e instanceof $mol_error_mix || !e.cause ? [] : [e.cause]
2892
2899
  ])
2893
2900
  ].map(frame_normalize).join('\n')
@@ -3110,6 +3117,17 @@ var $;
3110
3117
  $.$mol_dev_format_register = $mol_dev_format_register;
3111
3118
  $.$mol_dev_format_head = Symbol('$mol_dev_format_head');
3112
3119
  $.$mol_dev_format_body = Symbol('$mol_dev_format_body');
3120
+ function $mol_dev_format_button(label, click) {
3121
+ return $mol_dev_format_auto({
3122
+ [$.$mol_dev_format_head]() {
3123
+ return $mol_dev_format_span({ color: 'cornflowerblue' }, label);
3124
+ },
3125
+ [$.$mol_dev_format_body]() {
3126
+ Promise.resolve().then(click);
3127
+ return $mol_dev_format_span({});
3128
+ }
3129
+ });
3130
+ }
3113
3131
  $mol_dev_format_register({
3114
3132
  header: (val, config = false) => {
3115
3133
  if (config)
@@ -3127,13 +3145,41 @@ var $;
3127
3145
  if (typeof val === 'function') {
3128
3146
  return $mol_dev_format_native(val);
3129
3147
  }
3148
+ if (Error.isError(val)) {
3149
+ return $mol_dev_format_span({}, $mol_dev_format_native(val), ' ', $mol_dev_format_button('throw', () => $mol_fail_hidden(val)));
3150
+ }
3151
+ if (val instanceof Promise) {
3152
+ return $.$mol_dev_format_shade($mol_dev_format_native(val), ' ', val[Symbol.toStringTag] ?? '');
3153
+ }
3130
3154
  if (Symbol.toStringTag in val) {
3131
3155
  return $mol_dev_format_native(val);
3132
3156
  }
3133
3157
  return null;
3134
3158
  },
3135
- hasBody: val => val[$.$mol_dev_format_body],
3136
- body: val => val[$.$mol_dev_format_body](),
3159
+ hasBody: (val, config = false) => {
3160
+ if (config)
3161
+ return false;
3162
+ if (!val)
3163
+ return false;
3164
+ if (val[$.$mol_dev_format_body])
3165
+ return true;
3166
+ return false;
3167
+ },
3168
+ body: (val, config = false) => {
3169
+ if (config)
3170
+ return null;
3171
+ if (!val)
3172
+ return null;
3173
+ if ($.$mol_dev_format_body in val) {
3174
+ try {
3175
+ return val[$.$mol_dev_format_body]();
3176
+ }
3177
+ catch (error) {
3178
+ return $.$mol_dev_format_accent($mol_dev_format_native(val), '💨', $mol_dev_format_native(error), '');
3179
+ }
3180
+ }
3181
+ return null;
3182
+ },
3137
3183
  });
3138
3184
  function $mol_dev_format_native(obj) {
3139
3185
  if (typeof obj === 'undefined')
@@ -3199,6 +3245,69 @@ var $;
3199
3245
  $.$mol_dev_format_indent = $.$mol_dev_format_div.bind(null, {
3200
3246
  'margin-left': '13px'
3201
3247
  });
3248
+ class Stack extends Array {
3249
+ toString() {
3250
+ return this.join('\n');
3251
+ }
3252
+ }
3253
+ class Call extends Object {
3254
+ type;
3255
+ function;
3256
+ method;
3257
+ eval;
3258
+ source;
3259
+ offset;
3260
+ pos;
3261
+ object;
3262
+ flags;
3263
+ [Symbol.toStringTag];
3264
+ constructor(call) {
3265
+ super();
3266
+ this.type = call.getTypeName() ?? '';
3267
+ this.function = call.getFunctionName() ?? '';
3268
+ this.method = call.getMethodName() ?? '';
3269
+ if (this.method === this.function)
3270
+ this.method = '';
3271
+ this.pos = [call.getEnclosingLineNumber() ?? 0, call.getEnclosingColumnNumber() ?? 0];
3272
+ this.eval = call.getEvalOrigin() ?? '';
3273
+ this.source = call.getScriptNameOrSourceURL() ?? '';
3274
+ this.object = call.getThis();
3275
+ this.offset = call.getPosition();
3276
+ const flags = [];
3277
+ if (call.isAsync())
3278
+ flags.push('async');
3279
+ if (call.isConstructor())
3280
+ flags.push('constructor');
3281
+ if (call.isEval())
3282
+ flags.push('eval');
3283
+ if (call.isNative())
3284
+ flags.push('native');
3285
+ if (call.isPromiseAll())
3286
+ flags.push('PromiseAll');
3287
+ if (call.isToplevel())
3288
+ flags.push('top');
3289
+ this.flags = flags;
3290
+ const type = this.type ? this.type + '.' : '';
3291
+ const func = this.function || '<anon>';
3292
+ const method = this.method ? ' [' + this.method + '] ' : '';
3293
+ this[Symbol.toStringTag] = `${type}${func}${method}`;
3294
+ }
3295
+ [Symbol.toPrimitive]() {
3296
+ return this.toString();
3297
+ }
3298
+ toString() {
3299
+ const object = this.object || '';
3300
+ const label = this[Symbol.toStringTag];
3301
+ const source = `${this.source}:${this.pos.join(':')} #${this.offset}`;
3302
+ return `\tat ${object}${label} (${source})`;
3303
+ }
3304
+ [$.$mol_dev_format_head]() {
3305
+ return $.$mol_dev_format_div({}, $mol_dev_format_native(this), $.$mol_dev_format_shade(' '), ...this.object ? [
3306
+ $mol_dev_format_native(this.object),
3307
+ ] : [], ...this.method ? [$.$mol_dev_format_shade(' ', ' [', this.method, ']')] : [], $.$mol_dev_format_shade(' ', this.flags.join(', ')));
3308
+ }
3309
+ }
3310
+ Error.prepareStackTrace ??= (error, stack) => new Stack(...stack.map(call => new Call(call)));
3202
3311
  })($ || ($ = {}));
3203
3312
 
3204
3313
  ;