mol_conform 0.0.34 → 0.0.35

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
@@ -274,6 +274,32 @@ var $;
274
274
  $.$mol_fail_catch = $mol_fail_catch;
275
275
  })($ || ($ = {}));
276
276
 
277
+ ;
278
+ "use strict";
279
+ var $;
280
+ (function ($) {
281
+ function $mol_try(handler) {
282
+ try {
283
+ return handler();
284
+ }
285
+ catch (error) {
286
+ return error;
287
+ }
288
+ }
289
+ $.$mol_try = $mol_try;
290
+ })($ || ($ = {}));
291
+
292
+ ;
293
+ "use strict";
294
+ var $;
295
+ (function ($) {
296
+ $mol_test({
297
+ 'return result without errors'() {
298
+ $mol_assert_equal($mol_try(() => false), false);
299
+ },
300
+ });
301
+ })($ || ($ = {}));
302
+
277
303
  ;
278
304
  "use strict";
279
305
  var $;
@@ -283,7 +309,7 @@ var $;
283
309
  return false;
284
310
  if (!$mol_fail_catch(error))
285
311
  return false;
286
- console.error(error);
312
+ $mol_try(() => { $mol_fail_hidden(error); });
287
313
  return true;
288
314
  }
289
315
  $.$mol_fail_log = $mol_fail_log;
@@ -421,7 +447,7 @@ var $;
421
447
  get: () => stack_get() + '\n' + [
422
448
  this.cause ?? 'no cause',
423
449
  ...this.errors.flatMap(e => [
424
- e.stack,
450
+ String(e.stack),
425
451
  ...e instanceof $mol_error_mix || !e.cause ? [] : [e.cause]
426
452
  ])
427
453
  ].map(frame_normalize).join('\n')
@@ -790,6 +816,17 @@ var $;
790
816
  $.$mol_dev_format_register = $mol_dev_format_register;
791
817
  $.$mol_dev_format_head = Symbol('$mol_dev_format_head');
792
818
  $.$mol_dev_format_body = Symbol('$mol_dev_format_body');
819
+ function $mol_dev_format_button(label, click) {
820
+ return $mol_dev_format_auto({
821
+ [$.$mol_dev_format_head]() {
822
+ return $mol_dev_format_span({ color: 'cornflowerblue' }, label);
823
+ },
824
+ [$.$mol_dev_format_body]() {
825
+ Promise.resolve().then(click);
826
+ return $mol_dev_format_span({});
827
+ }
828
+ });
829
+ }
793
830
  $mol_dev_format_register({
794
831
  header: (val, config = false) => {
795
832
  if (config)
@@ -807,13 +844,41 @@ var $;
807
844
  if (typeof val === 'function') {
808
845
  return $mol_dev_format_native(val);
809
846
  }
847
+ if (Error.isError(val)) {
848
+ return $mol_dev_format_span({}, $mol_dev_format_native(val), ' ', $mol_dev_format_button('throw', () => $mol_fail_hidden(val)));
849
+ }
850
+ if (val instanceof Promise) {
851
+ return $.$mol_dev_format_shade($mol_dev_format_native(val), ' ', val[Symbol.toStringTag] ?? '');
852
+ }
810
853
  if (Symbol.toStringTag in val) {
811
854
  return $mol_dev_format_native(val);
812
855
  }
813
856
  return null;
814
857
  },
815
- hasBody: val => val[$.$mol_dev_format_body],
816
- body: val => val[$.$mol_dev_format_body](),
858
+ hasBody: (val, config = false) => {
859
+ if (config)
860
+ return false;
861
+ if (!val)
862
+ return false;
863
+ if (val[$.$mol_dev_format_body])
864
+ return true;
865
+ return false;
866
+ },
867
+ body: (val, config = false) => {
868
+ if (config)
869
+ return null;
870
+ if (!val)
871
+ return null;
872
+ if ($.$mol_dev_format_body in val) {
873
+ try {
874
+ return val[$.$mol_dev_format_body]();
875
+ }
876
+ catch (error) {
877
+ return $.$mol_dev_format_accent($mol_dev_format_native(val), '💨', $mol_dev_format_native(error), '');
878
+ }
879
+ }
880
+ return null;
881
+ },
817
882
  });
818
883
  function $mol_dev_format_native(obj) {
819
884
  if (typeof obj === 'undefined')
@@ -879,6 +944,69 @@ var $;
879
944
  $.$mol_dev_format_indent = $.$mol_dev_format_div.bind(null, {
880
945
  'margin-left': '13px'
881
946
  });
947
+ class Stack extends Array {
948
+ toString() {
949
+ return this.join('\n');
950
+ }
951
+ }
952
+ class Call extends Object {
953
+ type;
954
+ function;
955
+ method;
956
+ eval;
957
+ source;
958
+ offset;
959
+ pos;
960
+ object;
961
+ flags;
962
+ [Symbol.toStringTag];
963
+ constructor(call) {
964
+ super();
965
+ this.type = call.getTypeName() ?? '';
966
+ this.function = call.getFunctionName() ?? '';
967
+ this.method = call.getMethodName() ?? '';
968
+ if (this.method === this.function)
969
+ this.method = '';
970
+ this.pos = [call.getEnclosingLineNumber() ?? 0, call.getEnclosingColumnNumber() ?? 0];
971
+ this.eval = call.getEvalOrigin() ?? '';
972
+ this.source = call.getScriptNameOrSourceURL() ?? '';
973
+ this.object = call.getThis();
974
+ this.offset = call.getPosition();
975
+ const flags = [];
976
+ if (call.isAsync())
977
+ flags.push('async');
978
+ if (call.isConstructor())
979
+ flags.push('constructor');
980
+ if (call.isEval())
981
+ flags.push('eval');
982
+ if (call.isNative())
983
+ flags.push('native');
984
+ if (call.isPromiseAll())
985
+ flags.push('PromiseAll');
986
+ if (call.isToplevel())
987
+ flags.push('top');
988
+ this.flags = flags;
989
+ const type = this.type ? this.type + '.' : '';
990
+ const func = this.function || '<anon>';
991
+ const method = this.method ? ' [' + this.method + '] ' : '';
992
+ this[Symbol.toStringTag] = `${type}${func}${method}`;
993
+ }
994
+ [Symbol.toPrimitive]() {
995
+ return this.toString();
996
+ }
997
+ toString() {
998
+ const object = this.object || '';
999
+ const label = this[Symbol.toStringTag];
1000
+ const source = `${this.source}:${this.pos.join(':')} #${this.offset}`;
1001
+ return `\tat ${object}${label} (${source})`;
1002
+ }
1003
+ [$.$mol_dev_format_head]() {
1004
+ return $.$mol_dev_format_div({}, $mol_dev_format_native(this), $.$mol_dev_format_shade(' '), ...this.object ? [
1005
+ $mol_dev_format_native(this.object),
1006
+ ] : [], ...this.method ? [$.$mol_dev_format_shade(' ', ' [', this.method, ']')] : [], $.$mol_dev_format_shade(' ', this.flags.join(', ')));
1007
+ }
1008
+ }
1009
+ Error.prepareStackTrace ??= (error, stack) => new Stack(...stack.map(call => new Call(call)));
882
1010
  })($ || ($ = {}));
883
1011
 
884
1012
  ;
@@ -2843,7 +2971,7 @@ var $;
2843
2971
  if (left instanceof RegExp)
2844
2972
  return left.source === right.source && left.flags === right.flags;
2845
2973
  if (left instanceof Error)
2846
- return left.message === right.message && left.stack === right.stack;
2974
+ return left.message === right.message && $mol_compare_deep(left.stack, right.stack);
2847
2975
  let left_cache = $.$mol_compare_deep_cache.get(left);
2848
2976
  if (left_cache) {
2849
2977
  const right_cache = left_cache.get(right);
@@ -3105,7 +3233,7 @@ var $;
3105
3233
  catch (error) {
3106
3234
  $.$mol_fail = fail;
3107
3235
  if (typeof ErrorRight === 'string') {
3108
- $mol_assert_equal(error.message, ErrorRight);
3236
+ $mol_assert_equal(error.message ?? error, ErrorRight);
3109
3237
  }
3110
3238
  else {
3111
3239
  $mol_assert_equal(error instanceof ErrorRight, true);
@@ -3129,7 +3257,7 @@ var $;
3129
3257
  continue;
3130
3258
  if (!$mol_compare_deep(args[i], args[j]))
3131
3259
  continue;
3132
- $mol_fail(new Error(`args[${i}] = args[${j}] = ${print(args[i])}`));
3260
+ return $mol_fail(new Error(`Uniquesess assertion failure`, { cause: { [i]: args[i], [i]: args[i] } }));
3133
3261
  }
3134
3262
  }
3135
3263
  }
@@ -3140,29 +3268,10 @@ var $;
3140
3268
  continue;
3141
3269
  if (args[0] instanceof $mol_dom_context.Element && args[i] instanceof $mol_dom_context.Element && args[0].outerHTML === args[i].outerHTML)
3142
3270
  continue;
3143
- return $mol_fail(new Error(`args[0] ≠ args[${i}]\n${print(args[0])}\n---\n${print(args[i])}`));
3271
+ return $mol_fail(new Error(`Equality assertion failure`, { cause: { 0: args[0], [i]: args[i] } }));
3144
3272
  }
3145
3273
  }
3146
3274
  $.$mol_assert_equal = $mol_assert_equal;
3147
- const print = (val) => {
3148
- if (!val)
3149
- return val;
3150
- if (typeof val === 'bigint')
3151
- return String(val) + 'n';
3152
- if (typeof val === 'symbol')
3153
- return `Symbol(${val.description})`;
3154
- if (typeof val !== 'object')
3155
- return val;
3156
- if ('outerHTML' in val)
3157
- return val.outerHTML;
3158
- try {
3159
- return JSON.stringify(val, (k, v) => typeof v === 'bigint' ? String(v) : v, '\t');
3160
- }
3161
- catch (error) {
3162
- console.error(error);
3163
- return val;
3164
- }
3165
- };
3166
3275
  })($ || ($ = {}));
3167
3276
 
3168
3277
  ;