@vitest/utils 0.28.4 → 0.29.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/dist/helpers.d.ts CHANGED
@@ -2,6 +2,7 @@ import { Nullable, Arrayable } from './types.js';
2
2
 
3
3
  declare function assertTypes(value: unknown, name: string, types: string[]): void;
4
4
  declare function slash(path: string): string;
5
+ declare function parseRegexp(input: string): RegExp;
5
6
  declare function toArray<T>(array?: Nullable<Arrayable<T>>): Array<T>;
6
7
  declare function isObject(item: unknown): boolean;
7
8
  declare function getType(value: unknown): string;
@@ -16,4 +17,4 @@ type DeferPromise<T> = Promise<T> & {
16
17
  };
17
18
  declare function createDefer<T>(): DeferPromise<T>;
18
19
 
19
- export { assertTypes, clone, createDefer, deepClone, getOwnProperties, getType, isObject, noop, objectAttr, slash, toArray };
20
+ export { assertTypes, clone, createDefer, deepClone, getOwnProperties, getType, isObject, noop, objectAttr, parseRegexp, slash, toArray };
package/dist/helpers.js CHANGED
@@ -7,6 +7,14 @@ function assertTypes(value, name, types) {
7
7
  function slash(path) {
8
8
  return path.replace(/\\/g, "/");
9
9
  }
10
+ function parseRegexp(input) {
11
+ const m = input.match(/(\/?)(.+)\1([a-z]*)/i);
12
+ if (!m)
13
+ return /$^/;
14
+ if (m[3] && !/^(?!.*?(.).*?\1)[gmixXsuUAJ]+$/.test(m[3]))
15
+ return RegExp(input);
16
+ return new RegExp(m[2], m[3]);
17
+ }
10
18
  function toArray(array) {
11
19
  if (array === null || array === void 0)
12
20
  array = [];
@@ -84,4 +92,4 @@ function createDefer() {
84
92
  return p;
85
93
  }
86
94
 
87
- export { assertTypes, clone, createDefer, deepClone, getOwnProperties, getType, isObject, noop, objectAttr, slash, toArray };
95
+ export { assertTypes, clone, createDefer, deepClone, getOwnProperties, getType, isObject, noop, objectAttr, parseRegexp, slash, toArray };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { assertTypes, clone, createDefer, deepClone, getOwnProperties, getType, isObject, noop, objectAttr, slash, toArray } from './helpers.js';
1
+ export { assertTypes, clone, createDefer, deepClone, getOwnProperties, getType, isObject, noop, objectAttr, parseRegexp, slash, toArray } from './helpers.js';
2
2
  export { ArgumentsType, Arrayable, Awaitable, Constructable, DeepMerge, MergeInsertions, MutableArray, Nullable } from './types.js';
3
3
  import { PrettyFormatOptions } from 'pretty-format';
4
4
  import p from 'picocolors';
@@ -8,10 +8,13 @@ declare function stringify(object: unknown, maxDepth?: number, { maxLength, ...o
8
8
  }): string;
9
9
 
10
10
  declare function getSafeTimers(): {
11
+ nextTick: any;
11
12
  setTimeout: any;
12
13
  setInterval: any;
13
14
  clearInterval: any;
14
15
  clearTimeout: any;
16
+ setImmediate: any;
17
+ clearImmediate: any;
15
18
  };
16
19
  declare function setSafeTimers(): void;
17
20
 
@@ -27,4 +30,15 @@ declare const SAFE_COLORS_SYMBOL: unique symbol;
27
30
  declare function getColors(): typeof p;
28
31
  declare function setColors(colors: typeof p): void;
29
32
 
30
- export { SAFE_COLORS_SYMBOL, SAFE_TIMERS_SYMBOL, format, getColors, getSafeTimers, inspect, objDisplay, setColors, setSafeTimers, shuffle, stringify };
33
+ interface ErrorOptions {
34
+ message?: string;
35
+ stackTraceLimit?: number;
36
+ }
37
+ /**
38
+ * Get original stacktrace without source map support the most performant way.
39
+ * - Create only 1 stack frame.
40
+ * - Rewrite prepareStackTrace to bypass "support-stack-trace" (usually takes ~250ms).
41
+ */
42
+ declare function createSimpleStackTrace(options?: ErrorOptions): string;
43
+
44
+ export { SAFE_COLORS_SYMBOL, SAFE_TIMERS_SYMBOL, createSimpleStackTrace, format, getColors, getSafeTimers, inspect, objDisplay, setColors, setSafeTimers, shuffle, stringify };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { assertTypes, clone, createDefer, deepClone, getOwnProperties, getType, isObject, noop, objectAttr, slash, toArray } from './helpers.js';
1
+ export { assertTypes, clone, createDefer, deepClone, getOwnProperties, getType, isObject, noop, objectAttr, parseRegexp, slash, toArray } from './helpers.js';
2
2
  import { format as format$1, plugins } from 'pretty-format';
3
3
  import util from 'util';
4
4
  import loupeImport from 'loupe';
@@ -49,13 +49,21 @@ function getSafeTimers() {
49
49
  setTimeout: safeSetTimeout,
50
50
  setInterval: safeSetInterval,
51
51
  clearInterval: safeClearInterval,
52
- clearTimeout: safeClearTimeout
52
+ clearTimeout: safeClearTimeout,
53
+ setImmediate: safeSetImmediate,
54
+ clearImmediate: safeClearImmediate
53
55
  } = globalThis[SAFE_TIMERS_SYMBOL] || globalThis;
56
+ const {
57
+ nextTick: safeNextTick
58
+ } = globalThis[SAFE_TIMERS_SYMBOL] || globalThis.process || { nextTick: (cb) => cb() };
54
59
  return {
60
+ nextTick: safeNextTick,
55
61
  setTimeout: safeSetTimeout,
56
62
  setInterval: safeSetInterval,
57
63
  clearInterval: safeClearInterval,
58
- clearTimeout: safeClearTimeout
64
+ clearTimeout: safeClearTimeout,
65
+ setImmediate: safeSetImmediate,
66
+ clearImmediate: safeClearImmediate
59
67
  };
60
68
  }
61
69
  function setSafeTimers() {
@@ -63,13 +71,21 @@ function setSafeTimers() {
63
71
  setTimeout: safeSetTimeout,
64
72
  setInterval: safeSetInterval,
65
73
  clearInterval: safeClearInterval,
66
- clearTimeout: safeClearTimeout
74
+ clearTimeout: safeClearTimeout,
75
+ setImmediate: safeSetImmediate,
76
+ clearImmediate: safeClearImmediate
67
77
  } = globalThis;
78
+ const {
79
+ nextTick: safeNextTick
80
+ } = globalThis.process || { nextTick: (cb) => cb() };
68
81
  const timers = {
82
+ nextTick: safeNextTick,
69
83
  setTimeout: safeSetTimeout,
70
84
  setInterval: safeSetInterval,
71
85
  clearInterval: safeClearInterval,
72
- clearTimeout: safeClearTimeout
86
+ clearTimeout: safeClearTimeout,
87
+ setImmediate: safeSetImmediate,
88
+ clearImmediate: safeClearImmediate
73
89
  };
74
90
  globalThis[SAFE_TIMERS_SYMBOL] = timers;
75
91
  }
@@ -161,4 +177,17 @@ function setColors(colors2) {
161
177
  globalThis[SAFE_COLORS_SYMBOL] = colors2;
162
178
  }
163
179
 
164
- export { SAFE_COLORS_SYMBOL, SAFE_TIMERS_SYMBOL, format, getColors, getSafeTimers, inspect, objDisplay, setColors, setSafeTimers, shuffle, stringify };
180
+ function createSimpleStackTrace(options) {
181
+ const { message = "error", stackTraceLimit = 1 } = options || {};
182
+ const limit = Error.stackTraceLimit;
183
+ const prepareStackTrace = Error.prepareStackTrace;
184
+ Error.stackTraceLimit = stackTraceLimit;
185
+ Error.prepareStackTrace = (e) => e.stack;
186
+ const err = new Error(message);
187
+ const stackTrace = err.stack || "";
188
+ Error.prepareStackTrace = prepareStackTrace;
189
+ Error.stackTraceLimit = limit;
190
+ return stackTrace;
191
+ }
192
+
193
+ export { SAFE_COLORS_SYMBOL, SAFE_TIMERS_SYMBOL, createSimpleStackTrace, format, getColors, getSafeTimers, inspect, objDisplay, setColors, setSafeTimers, shuffle, stringify };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/utils",
3
3
  "type": "module",
4
- "version": "0.28.4",
4
+ "version": "0.29.0",
5
5
  "description": "Shared Vitest utility functions",
6
6
  "license": "MIT",
7
7
  "repository": {