vitest 0.3.0 → 0.3.1

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/entry.js CHANGED
@@ -1421,7 +1421,7 @@ async function setupGlobalEnv(config) {
1421
1421
  setupConsoleLogSpy();
1422
1422
  await setupChai();
1423
1423
  if (config.globals)
1424
- (await import('./globals-a1c78816.js')).registerApiGlobally();
1424
+ (await import('./globals-b87ef70d.js')).registerApiGlobally();
1425
1425
  }
1426
1426
  function setupConsoleLogSpy() {
1427
1427
  const stdout = new Writable({
@@ -1,5 +1,5 @@
1
- import { g as globalApis } from './constants-259a41c8.js';
2
- import { i as index } from './index-afc85128.js';
1
+ import { g as globalApis } from './constants-8fcbf9b6.js';
2
+ import { i as index } from './index-e32575f8.js';
3
3
  import 'url';
4
4
  import './index-f55e7b59.js';
5
5
  import 'path';
@@ -20,4 +20,4 @@ function registerApiGlobally() {
20
20
  }
21
21
 
22
22
  export { registerApiGlobally };
23
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFscy1hMWM3ODgxNi5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2ludGVncmF0aW9ucy9nbG9iYWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdsb2JhbEFwaXMgfSBmcm9tICcuLi9jb25zdGFudHMnXG5pbXBvcnQgKiBhcyBpbmRleCBmcm9tICcuLi9pbmRleCdcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQXBpR2xvYmFsbHkoKSB7XG4gIGdsb2JhbEFwaXMuZm9yRWFjaCgoYXBpKSA9PiB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBJIGtub3cgd2hhdCBJIGFtIGRvaW5nIDpQXG4gICAgZ2xvYmFsVGhpc1thcGldID0gaW5kZXhbYXBpXVxuICB9KVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUVPLFNBQVMsbUJBQW1CLEdBQUc7QUFDdEMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLO0FBQzlCLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxHQUFHLENBQUMsQ0FBQztBQUNMOzsifQ==
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFscy1iODdlZjcwZC5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2ludGVncmF0aW9ucy9nbG9iYWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdsb2JhbEFwaXMgfSBmcm9tICcuLi9jb25zdGFudHMnXG5pbXBvcnQgKiBhcyBpbmRleCBmcm9tICcuLi9pbmRleCdcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQXBpR2xvYmFsbHkoKSB7XG4gIGdsb2JhbEFwaXMuZm9yRWFjaCgoYXBpKSA9PiB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBJIGtub3cgd2hhdCBJIGFtIGRvaW5nIDpQXG4gICAgZ2xvYmFsVGhpc1thcGldID0gaW5kZXhbYXBpXVxuICB9KVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUVPLFNBQVMsbUJBQW1CLEdBQUc7QUFDdEMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLO0FBQzlCLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxHQUFHLENBQUMsQ0FBQztBQUNMOzsifQ==
@@ -1,7 +1,7 @@
1
1
  import { g as getCurrentSuite, w as withTimeout, a as getDefaultHookTimeout, b as getState, s as setState, c as suite, t as test, d as describe, i as it, v as vitest, e as vi } from './vi-93df942a.js';
2
2
  import chai, { assert, should } from 'chai';
3
3
  import { spies, isMockFunction, spyOn, fn } from './jest-mock.js';
4
- import { c as configDefaults } from './constants-259a41c8.js';
4
+ import { c as configDefaults } from './constants-8fcbf9b6.js';
5
5
 
6
6
  const beforeAll = (fn, timeout) => getCurrentSuite().on("beforeAll", withTimeout(fn, timeout ?? getDefaultHookTimeout()));
7
7
  const afterAll = (fn, timeout) => getCurrentSuite().on("afterAll", withTimeout(fn, timeout ?? getDefaultHookTimeout()));
@@ -41,4 +41,4 @@ var index = /*#__PURE__*/Object.freeze({
41
41
  });
42
42
 
43
43
  export { afterAll as a, beforeAll as b, beforeEach as c, afterEach as d, expect as e, index as i };
44
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtYWZjODUxMjguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lL2hvb2tzLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3VpdGVIb29rcyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEhvb2tUaW1lb3V0LCB3aXRoVGltZW91dCB9IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCB7IGdldEN1cnJlbnRTdWl0ZSB9IGZyb20gJy4vc3VpdGUnXG5cbi8vIHN1aXRlIGhvb2tzXG5leHBvcnQgY29uc3QgYmVmb3JlQWxsID0gKGZuOiBTdWl0ZUhvb2tzWydiZWZvcmVBbGwnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2JlZm9yZUFsbCcsIHdpdGhUaW1lb3V0KGZuLCB0aW1lb3V0ID8/IGdldERlZmF1bHRIb29rVGltZW91dCgpKSlcbmV4cG9ydCBjb25zdCBhZnRlckFsbCA9IChmbjogU3VpdGVIb29rc1snYWZ0ZXJBbGwnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2FmdGVyQWxsJywgd2l0aFRpbWVvdXQoZm4sIHRpbWVvdXQgPz8gZ2V0RGVmYXVsdEhvb2tUaW1lb3V0KCkpKVxuZXhwb3J0IGNvbnN0IGJlZm9yZUVhY2ggPSAoZm46IFN1aXRlSG9va3NbJ2JlZm9yZUVhY2gnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2JlZm9yZUVhY2gnLCB3aXRoVGltZW91dChmbiwgdGltZW91dCA/PyBnZXREZWZhdWx0SG9va1RpbWVvdXQoKSkpXG5leHBvcnQgY29uc3QgYWZ0ZXJFYWNoID0gKGZuOiBTdWl0ZUhvb2tzWydhZnRlckVhY2gnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2FmdGVyRWFjaCcsIHdpdGhUaW1lb3V0KGZuLCB0aW1lb3V0ID8/IGdldERlZmF1bHRIb29rVGltZW91dCgpKSlcbiIsImltcG9ydCBjaGFpIGZyb20gJ2NoYWknXG5pbXBvcnQgeyBnZXRTdGF0ZSwgc2V0U3RhdGUgfSBmcm9tICcuL2plc3QtZXhwZWN0J1xuXG5leHBvcnQgeyBhc3NlcnQsIHNob3VsZCB9IGZyb20gJ2NoYWknXG5cbmNvbnN0IGV4cGVjdCA9ICgodmFsdWU6IGFueSwgbWVzc2FnZT86IHN0cmluZyk6IFZpLkFzc2VydGlvbiA9PiB7XG4gIGNvbnN0IHsgYXNzZXJ0aW9uQ2FsbHMgfSA9IGdldFN0YXRlKClcbiAgc2V0U3RhdGUoeyBhc3NlcnRpb25DYWxsczogYXNzZXJ0aW9uQ2FsbHMgKyAxIH0pXG4gIHJldHVybiBjaGFpLmV4cGVjdCh2YWx1ZSwgbWVzc2FnZSkgYXMgdW5rbm93biBhcyBWaS5Bc3NlcnRpb25cbn0pIGFzIFZpLkV4cGVjdFN0YXRpY1xuZXhwZWN0LmdldFN0YXRlID0gZ2V0U3RhdGVcbmV4cGVjdC5zZXRTdGF0ZSA9IHNldFN0YXRlXG5cbk9iamVjdC5hc3NpZ24oZXhwZWN0LCBjaGFpLmV4cGVjdClcblxuZXhwb3J0IHsgY2hhaSwgZXhwZWN0IH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVZLE1BQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUMsRUFBRTtBQUNySCxNQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssZUFBZSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxDQUFDLEVBQUU7QUFDbkgsTUFBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxFQUFFO0FBQ3ZILE1BQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7O0FDRjFILE1BQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sS0FBSztBQUNuQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUN4QyxFQUFFLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRCxFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckMsRUFBRTtBQUNGLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtZTMyNTc1ZjguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lL2hvb2tzLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3VpdGVIb29rcyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEhvb2tUaW1lb3V0LCB3aXRoVGltZW91dCB9IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCB7IGdldEN1cnJlbnRTdWl0ZSB9IGZyb20gJy4vc3VpdGUnXG5cbi8vIHN1aXRlIGhvb2tzXG5leHBvcnQgY29uc3QgYmVmb3JlQWxsID0gKGZuOiBTdWl0ZUhvb2tzWydiZWZvcmVBbGwnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2JlZm9yZUFsbCcsIHdpdGhUaW1lb3V0KGZuLCB0aW1lb3V0ID8/IGdldERlZmF1bHRIb29rVGltZW91dCgpKSlcbmV4cG9ydCBjb25zdCBhZnRlckFsbCA9IChmbjogU3VpdGVIb29rc1snYWZ0ZXJBbGwnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2FmdGVyQWxsJywgd2l0aFRpbWVvdXQoZm4sIHRpbWVvdXQgPz8gZ2V0RGVmYXVsdEhvb2tUaW1lb3V0KCkpKVxuZXhwb3J0IGNvbnN0IGJlZm9yZUVhY2ggPSAoZm46IFN1aXRlSG9va3NbJ2JlZm9yZUVhY2gnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2JlZm9yZUVhY2gnLCB3aXRoVGltZW91dChmbiwgdGltZW91dCA/PyBnZXREZWZhdWx0SG9va1RpbWVvdXQoKSkpXG5leHBvcnQgY29uc3QgYWZ0ZXJFYWNoID0gKGZuOiBTdWl0ZUhvb2tzWydhZnRlckVhY2gnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2FmdGVyRWFjaCcsIHdpdGhUaW1lb3V0KGZuLCB0aW1lb3V0ID8/IGdldERlZmF1bHRIb29rVGltZW91dCgpKSlcbiIsImltcG9ydCBjaGFpIGZyb20gJ2NoYWknXG5pbXBvcnQgeyBnZXRTdGF0ZSwgc2V0U3RhdGUgfSBmcm9tICcuL2plc3QtZXhwZWN0J1xuXG5leHBvcnQgeyBhc3NlcnQsIHNob3VsZCB9IGZyb20gJ2NoYWknXG5cbmNvbnN0IGV4cGVjdCA9ICgodmFsdWU6IGFueSwgbWVzc2FnZT86IHN0cmluZyk6IFZpLkFzc2VydGlvbiA9PiB7XG4gIGNvbnN0IHsgYXNzZXJ0aW9uQ2FsbHMgfSA9IGdldFN0YXRlKClcbiAgc2V0U3RhdGUoeyBhc3NlcnRpb25DYWxsczogYXNzZXJ0aW9uQ2FsbHMgKyAxIH0pXG4gIHJldHVybiBjaGFpLmV4cGVjdCh2YWx1ZSwgbWVzc2FnZSkgYXMgdW5rbm93biBhcyBWaS5Bc3NlcnRpb25cbn0pIGFzIFZpLkV4cGVjdFN0YXRpY1xuZXhwZWN0LmdldFN0YXRlID0gZ2V0U3RhdGVcbmV4cGVjdC5zZXRTdGF0ZSA9IHNldFN0YXRlXG5cbk9iamVjdC5hc3NpZ24oZXhwZWN0LCBjaGFpLmV4cGVjdClcblxuZXhwb3J0IHsgY2hhaSwgZXhwZWN0IH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVZLE1BQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUMsRUFBRTtBQUNySCxNQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssZUFBZSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxDQUFDLEVBQUU7QUFDbkgsTUFBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxFQUFFO0FBQ3ZILE1BQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7O0FDRjFILE1BQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sS0FBSztBQUNuQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUN4QyxFQUFFLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRCxFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckMsRUFBRTtBQUNGLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
package/dist/index.d.ts CHANGED
@@ -1073,7 +1073,7 @@ interface UserConfig extends InlineConfig {
1073
1073
  */
1074
1074
  related?: string[] | string;
1075
1075
  }
1076
- interface ResolvedConfig extends Omit<Required<UserConfig>, 'config' | 'filters' | 'coverage' | 'testNamePattern' | 'related' | 'api'> {
1076
+ interface ResolvedConfig extends Omit<Required<UserConfig>, 'config' | 'filters' | 'coverage' | 'testNamePattern' | 'related' | 'api' | 'reporters'> {
1077
1077
  base?: string;
1078
1078
  config?: string;
1079
1079
  filters?: string[];
@@ -1081,6 +1081,7 @@ interface ResolvedConfig extends Omit<Required<UserConfig>, 'config' | 'filters'
1081
1081
  related?: string[];
1082
1082
  coverage: ResolvedC8Options;
1083
1083
  snapshotOptions: SnapshotStateOptions;
1084
+ reporters: (Reporter | BuiltinReporters)[];
1084
1085
  api?: ApiConfig;
1085
1086
  }
1086
1087
 
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { d as describe, i as it, c as suite, t as test, e as vi, v as vitest } from './vi-93df942a.js';
2
- export { a as afterAll, d as afterEach, b as beforeAll, c as beforeEach, e as expect } from './index-afc85128.js';
2
+ export { a as afterAll, d as afterEach, b as beforeAll, c as beforeEach, e as expect } from './index-e32575f8.js';
3
3
  export { fn, isMockFunction, spies, spyOn } from './jest-mock.js';
4
- export { c as configDefaults } from './constants-259a41c8.js';
4
+ export { c as configDefaults } from './constants-8fcbf9b6.js';
5
5
  export { assert, default as chai, should } from 'chai';
6
6
  import 'util';
7
7
  import './index-f55e7b59.js';
package/dist/node.d.ts CHANGED
@@ -774,7 +774,7 @@ interface UserConfig extends InlineConfig {
774
774
  */
775
775
  related?: string[] | string;
776
776
  }
777
- interface ResolvedConfig extends Omit<Required<UserConfig>, 'config' | 'filters' | 'coverage' | 'testNamePattern' | 'related' | 'api'> {
777
+ interface ResolvedConfig extends Omit<Required<UserConfig>, 'config' | 'filters' | 'coverage' | 'testNamePattern' | 'related' | 'api' | 'reporters'> {
778
778
  base?: string;
779
779
  config?: string;
780
780
  filters?: string[];
@@ -782,6 +782,7 @@ interface ResolvedConfig extends Omit<Required<UserConfig>, 'config' | 'filters'
782
782
  related?: string[];
783
783
  coverage: ResolvedC8Options;
784
784
  snapshotOptions: SnapshotStateOptions;
785
+ reporters: (Reporter | BuiltinReporters)[];
785
786
  api?: ApiConfig;
786
787
  }
787
788
 
package/dist/node.js CHANGED
@@ -1,4 +1,4 @@
1
- export { V as VitestPlugin, c as createVitest } from './create-d3b904b2.js';
1
+ export { V as VitestPlugin, c as createVitest } from './create-b3b05216.js';
2
2
  import './index-f55e7b59.js';
3
3
  import 'path';
4
4
  import 'tty';
@@ -6,7 +6,7 @@ import 'local-pkg';
6
6
  import 'vite';
7
7
  import 'process';
8
8
  import 'fs';
9
- import './constants-259a41c8.js';
9
+ import './constants-8fcbf9b6.js';
10
10
  import 'url';
11
11
  import 'os';
12
12
  import 'util';