{"_id":"@aleosovski/muitto","_rev":"9-d3c29e6717d58b4ee06e6d3fa592c302","name":"@aleosovski/muitto","dist-tags":{"latest":"1.5.0"},"versions":{"1.4.4":{"name":"@aleosovski/muitto","version":"1.4.4","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"author":{"url":"https://github.com/alexandreosovski","name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com"},"license":"MIT","_id":"@aleosovski/muitto@1.4.4","maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"homepage":"https://github.com/alexandreosovski/muitto#readme","bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"bin":{"muitto":"bin/index.js"},"dist":{"shasum":"2e2abc6dac7926c573b2f610e5a5dbe25fcb47bb","tarball":"https://registry.npmjs.org/@aleosovski/muitto/-/muitto-1.4.4.tgz","fileCount":84,"integrity":"sha512-NOl5NK5TQme7vlobj6otjdFxYjGjk3L2SdmgI7Wu/3U54JB5UKA2hWTKxr79yFiKx4SKVQ6FGTWiAxQ+p1Sxsw==","signatures":[{"sig":"MEQCIAUSrzcI1zpkiOBjm0Vcb5bn0JHJ+g0Vst2X9SrIGXBHAiAPXoqFrpcTP2F8Qu3+u9DLKZ1HN6nrBztrXX9BCpuKnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407479},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"59288b3fda6e63bf1106df689446f25c79c6b861","scripts":{"dev":"tsx src/cli/cli.ts","test":"node dist/cli/cli.js","build":"tsc -p tsconfig.json","clean":"rimraf dist","prebuild":"npm run clean","dev:watch":"tsx src/cli/cli.ts --watch","test:watch":"node dist/cli/cli.js --watch","dev:patterns":"tsx src/cli/cli.ts --show-patterns","prepublishOnly":"npm run build"},"_npmUser":{"name":"aleosovski","email":"alexandreosovski1@gmail.com"},"repository":{"url":"git+https://github.com/alexandreosovski/muitto.git","type":"git"},"_npmVersion":"12.0.1","description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","rimraf":"^5.0.7","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/muitto_1.4.4_1784582280444_0.5978627095999063","host":"s3://npm-registry-packages-npm-production"}},"1.4.6":{"name":"@aleosovski/muitto","version":"1.4.6","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"author":{"url":"https://github.com/alexandreosovski","name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com"},"license":"MIT","_id":"@aleosovski/muitto@1.4.6","maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"homepage":"https://github.com/alexandreosovski/muitto#readme","bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"bin":{"muitto":"bin/index.js"},"dist":{"shasum":"d547a247c695a9926a74d3a29764b1eec3988d80","tarball":"https://registry.npmjs.org/@aleosovski/muitto/-/muitto-1.4.6.tgz","fileCount":84,"integrity":"sha512-ZkFnDEQ1OBaOzAvBUAFD36wVmJJrdfxnUEVVBTPv9iK2thwGATgE4jps3AW9pzlBotkxHGN3KuMeU1ehPMCqvg==","signatures":[{"sig":"MEUCIQDYAYz9g4SXyzuZeRv99ApBXZjukyEeZlbjmNYw0jJebgIgJOGafFzMtOG9YfWz0eFTZqxfLfEkjf7QPuyCH4+kdas=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407516},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e2efd08f8b700c2a16781e4b423efaa2a6fa8525","scripts":{"dev":"tsx src/cli/cli.ts","test":"node dist/cli/cli.js","build":"tsc -p tsconfig.json","clean":"rimraf dist","prebuild":"npm run clean","dev:watch":"tsx src/cli/cli.ts --watch","test:watch":"node dist/cli/cli.js --watch","dev:patterns":"tsx src/cli/cli.ts --show-patterns","prepublishOnly":"npm run build"},"_npmUser":{"name":"aleosovski","email":"alexandreosovski1@gmail.com"},"repository":{"url":"git+https://github.com/alexandreosovski/muitto.git","type":"git"},"_npmVersion":"12.0.1","description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","rimraf":"^5.0.7","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/muitto_1.4.6_1784583346865_0.9786679750692486","host":"s3://npm-registry-packages-npm-production"}},"1.4.7":{"name":"@aleosovski/muitto","version":"1.4.7","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"author":{"url":"https://github.com/alexandreosovski","name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com"},"license":"MIT","_id":"@aleosovski/muitto@1.4.7","maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"homepage":"https://github.com/alexandreosovski/muitto#readme","bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"bin":{"muitto":"bin/index.js"},"dist":{"shasum":"15ebbeccdde7180f65009b262b4180d8bc149f75","tarball":"https://registry.npmjs.org/@aleosovski/muitto/-/muitto-1.4.7.tgz","fileCount":84,"integrity":"sha512-yrr2mIvJkxoxNqwAx3c9MD9feM4Cx5krJ5Q2pkdUhDPg9I9seaiK6wYUzWLIrN924SCDpeS619ukhbESBFOXXA==","signatures":[{"sig":"MEUCIQCmhKcIkoZMR8jvE5HyY5ejHXYEWsDUdmBDkVczEUa/ogIgKGwJ+dMJHeZKif2plo2HNYdcGAl7RMBCxZyddI4i2+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407504},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"04378285d07683eab37b2258d5b986c12f598548","scripts":{"dev":"tsx src/cli/cli.ts","test":"node dist/cli/cli.js","build":"tsc -p tsconfig.json","clean":"rimraf dist","prebuild":"npm run clean","dev:watch":"tsx src/cli/cli.ts --watch","test:watch":"node dist/cli/cli.js --watch","dev:patterns":"tsx src/cli/cli.ts --show-patterns","prepublishOnly":"npm run build"},"_npmUser":{"name":"aleosovski","email":"alexandreosovski1@gmail.com"},"repository":{"url":"git+https://github.com/alexandreosovski/muitto.git","type":"git"},"_npmVersion":"12.0.1","description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","rimraf":"^5.0.7","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/muitto_1.4.7_1784583502644_0.45057127376564066","host":"s3://npm-registry-packages-npm-production"}},"1.4.8":{"name":"@aleosovski/muitto","version":"1.4.8","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"author":{"url":"https://github.com/alexandreosovski","name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com"},"license":"MIT","_id":"@aleosovski/muitto@1.4.8","maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"homepage":"https://github.com/alexandreosovski/muitto#readme","bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"bin":{"muitto":"bin/index.js"},"dist":{"shasum":"0b3dd5fce6444a3dd2225520af557663304a4d3f","tarball":"https://registry.npmjs.org/@aleosovski/muitto/-/muitto-1.4.8.tgz","fileCount":84,"integrity":"sha512-KzoydORsu/ZpNuf6Ssli/BZjigRfTpuxuQHZOFCeLWOQNJbOBg7RvbXb0nmc6U4hE8M217mWYc/G5SGvfGBy6Q==","signatures":[{"sig":"MEUCIQC82mZVxsCpdJohkMou5YkmC2zYkMaASC8QBItOG9wieAIgcR5U9vdlEGONs6tL9vdCm2WKY/lsM+nHWlUtg4oj2nc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407504},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ae251586fcacbfdcf0718d4bed260c5b9f306d0c","scripts":{"dev":"tsx src/cli/cli.ts","test":"node dist/cli/cli.js","build":"tsc -p tsconfig.json","clean":"rimraf dist","prebuild":"npm run clean","dev:watch":"tsx src/cli/cli.ts --watch","test:watch":"node dist/cli/cli.js --watch","dev:patterns":"tsx src/cli/cli.ts --show-patterns","prepublishOnly":"npm run build"},"_npmUser":{"name":"aleosovski","email":"alexandreosovski1@gmail.com"},"repository":{"url":"git+https://github.com/alexandreosovski/muitto.git","type":"git"},"_npmVersion":"12.0.1","description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","rimraf":"^5.0.7","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/muitto_1.4.8_1784584488355_0.31728505113712435","host":"s3://npm-registry-packages-npm-production"}},"1.4.9":{"name":"@aleosovski/muitto","version":"1.4.9","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"author":{"url":"https://github.com/alexandreosovski","name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com"},"license":"MIT","_id":"@aleosovski/muitto@1.4.9","maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"homepage":"https://github.com/alexandreosovski/muitto#readme","bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"bin":{"muitto":"bin/index.js"},"dist":{"shasum":"6c00d70e8537e79b682c80c08034f9c24183c902","tarball":"https://registry.npmjs.org/@aleosovski/muitto/-/muitto-1.4.9.tgz","fileCount":84,"integrity":"sha512-kCDWLCHh1EWaqEsPO9ezZNe9G1qyLf/tekBvtlbIaNFoAzBoN56qhM9J/+EDBxgTK1NIPb5G3QHXgHF74fKqtA==","signatures":[{"sig":"MEUCIF3pGhRlVMp02cSQ9jgvNv/hSmBc7r2gAYlsRczLfmBqAiEA9byEnLKI2+mdFKn6jB9IceXK0EF0WrK3+6AKjx2zHYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407516},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8435c008e53c18d8c2aa6dabbde90a645750e480","scripts":{"dev":"tsx src/cli/cli.ts","test":"node dist/cli/cli.js","build":"tsc -p tsconfig.json","clean":"rimraf dist","prebuild":"npm run clean","dev:watch":"tsx src/cli/cli.ts --watch","test:watch":"node dist/cli/cli.js --watch","dev:patterns":"tsx src/cli/cli.ts --show-patterns","prepublishOnly":"npm run build"},"_npmUser":{"name":"aleosovski","email":"alexandreosovski1@gmail.com"},"repository":{"url":"git+https://github.com/alexandreosovski/muitto.git","type":"git"},"_npmVersion":"12.0.1","description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","rimraf":"^5.0.7","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/muitto_1.4.9_1784584868719_0.7322993987293736","host":"s3://npm-registry-packages-npm-production"}},"1.4.10":{"name":"@aleosovski/muitto","version":"1.4.10","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"author":{"url":"https://github.com/alexandreosovski","name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com"},"license":"MIT","_id":"@aleosovski/muitto@1.4.10","maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"homepage":"https://github.com/alexandreosovski/muitto#readme","bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"bin":{"muitto":"bin/index.js"},"dist":{"shasum":"a9912483e25b68351965e55e58f0c25d5a79f57e","tarball":"https://registry.npmjs.org/@aleosovski/muitto/-/muitto-1.4.10.tgz","fileCount":84,"integrity":"sha512-rT11+nHVv9BIUfZBJKKmTBABAc6xe28ZoR2cOJgsUxkHZw7qYB/B4/L9bLf7g4A07mX82Gi33Ztw5n8IsxpIww==","signatures":[{"sig":"MEUCIH4LplsV0wxiLuOtsS+TU6u9DlBTvq0d7k8JnTFV+Vl+AiEA6mtPB9XsbzEV1qJjvEpDS/N5I/sW5sILKt9afIuG7pQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407508},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"30f7518ffc02978512c0cd9c02289a3bc20e437f","scripts":{"dev":"tsx src/cli/cli.ts","test":"node dist/cli/cli.js","build":"tsc -p tsconfig.json","clean":"rimraf dist","prebuild":"npm run clean","dev:watch":"tsx src/cli/cli.ts --watch","test:watch":"node dist/cli/cli.js --watch","dev:patterns":"tsx src/cli/cli.ts --show-patterns","prepublishOnly":"npm run build"},"_npmUser":{"name":"aleosovski","email":"alexandreosovski1@gmail.com"},"repository":{"url":"git+https://github.com/alexandreosovski/muitto.git","type":"git"},"_npmVersion":"12.0.1","description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","rimraf":"^5.0.7","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/muitto_1.4.10_1784585436777_0.24326718157422444","host":"s3://npm-registry-packages-npm-production"}},"1.4.11":{"name":"@aleosovski/muitto","version":"1.4.11","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"author":{"url":"https://github.com/alexandreosovski","name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com"},"license":"MIT","_id":"@aleosovski/muitto@1.4.11","maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"homepage":"https://github.com/alexandreosovski/muitto#readme","bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"bin":{"muitto":"bin/index.js"},"dist":{"shasum":"5191c00d92e9dcee1a6a7b2517db9cb0a869ac03","tarball":"https://registry.npmjs.org/@aleosovski/muitto/-/muitto-1.4.11.tgz","fileCount":46,"integrity":"sha512-BD/1qXaqk2VMD/+EYQNKyixVsW8+mpRghEDvVJ70mNgaG9EMmG/7e5mUIRGmgbqD8h2caB5nl0JfWGPVKD9/vw==","signatures":[{"sig":"MEUCIDDPGpxHfRGvb3dfuks7sVhWv8NMCc91rc9QtrKQsHvGAiEA9Y5WxI/xxQaEDDHtaQnTuWf8G2wK8Oz70OVCaVdYIJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":285401},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5c3483298a65104297294133634e0bb5058e9e5d","scripts":{"dev":"tsx src/cli/cli.ts","test":"node dist/cli/cli.js","build":"tsc -p tsconfig.json","clean":"rimraf dist","prebuild":"npm run clean","dev:watch":"tsx src/cli/cli.ts --watch","test:watch":"node dist/cli/cli.js --watch","dev:patterns":"tsx src/cli/cli.ts --show-patterns","prepublishOnly":"npm run build"},"_npmUser":{"name":"aleosovski","email":"alexandreosovski1@gmail.com"},"repository":{"url":"git+https://github.com/alexandreosovski/muitto.git","type":"git"},"_npmVersion":"11.17.0","description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","rimraf":"^5.0.7","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/muitto_1.4.11_1785549719054_0.16539878169959543","host":"s3://npm-registry-packages-npm-production"}},"1.4.13":{"name":"@aleosovski/muitto","version":"1.4.13","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"author":{"url":"https://github.com/alexandreosovski","name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com"},"license":"MIT","_id":"@aleosovski/muitto@1.4.13","maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"homepage":"https://github.com/alexandreosovski/muitto#readme","bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"bin":{"muitto":"bin/index.js"},"dist":{"shasum":"e219bb692af870ac1d1d3c0fc025539b5cf79557","tarball":"https://registry.npmjs.org/@aleosovski/muitto/-/muitto-1.4.13.tgz","fileCount":46,"integrity":"sha512-3awc4UHMqyE6EFjFR0jHAye5jrK8U3FQd5QDeHhPHmjWXr5Oa5Xg9tccreQ2u8cHplOC5k+Kl0sbTJqEzrkCsQ==","signatures":[{"sig":"MEQCIA+dcrroG+iZpqW8zatUuriVYxkGXmbp9009YLCZ6mvDAiB3gmtNa+cZcNM1wikZfaqysVL2CD2mDEqWlrwitpU5OQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294413},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"245576e5866918757f7ca9dd18bf3c33e86c2227","scripts":{"dev":"tsx src/cli/cli.ts","test":"node dist/cli/cli.js","build":"tsc -p tsconfig.json","clean":"rimraf dist","prebuild":"npm run clean","dev:watch":"tsx src/cli/cli.ts --watch","test:watch":"node dist/cli/cli.js --watch","dev:patterns":"tsx src/cli/cli.ts --show-patterns","prepublishOnly":"npm run build"},"_npmUser":{"name":"aleosovski","email":"alexandreosovski1@gmail.com"},"repository":{"url":"git+https://github.com/alexandreosovski/muitto.git","type":"git"},"_npmVersion":"11.17.0","description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","rimraf":"^5.0.7","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/muitto_1.4.13_1785888521399_0.1722953341149156","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@aleosovski/muitto","version":"1.5.0","description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"homepage":"https://github.com/alexandreosovski/muitto#readme","bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"repository":{"type":"git","url":"git+https://github.com/alexandreosovski/muitto.git"},"license":"MIT","author":{"name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com","url":"https://github.com/alexandreosovski"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"muitto":"bin/index.js"},"engines":{"node":">=18.0.0"},"scripts":{"build":"tsc -p tsconfig.json","clean":"rimraf dist","prebuild":"npm run clean","prepublishOnly":"npm run build","test":"node dist/cli/cli.js","test:watch":"node dist/cli/cli.js --watch","dev":"tsx src/cli/cli.ts","dev:watch":"tsx src/cli/cli.ts --watch","dev:patterns":"tsx src/cli/cli.ts --show-patterns"},"devDependencies":{"@types/node":"^20.14.0","rimraf":"^5.0.7","tsx":"^4.16.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"gitHead":"4d35b302c2489ddc06fd3459d707554d0af84cba","_id":"@aleosovski/muitto@1.5.0","_nodeVersion":"26.5.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-ANQnxIb2DUSCxCHUL4f5C2SrHmO+FN4fUbovMM67Cmx29raCSZgeYRWQEY/92EYXwHWStm96kXP+7cc0WtPNYQ==","shasum":"4b1cabefc56ef07d4de70522c6c2d6c4cbf27e0d","tarball":"https://registry.npmjs.org/@aleosovski/muitto/-/muitto-1.5.0.tgz","fileCount":48,"unpackedSize":329060,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDcncTVhZNOHmnKXWW0DzVKU/8imnVAKC4Si3IGxthg0QIhAM1QIvKKw4agLqrnkpxQG7d3Ul7+JcfLwlgMRt592e1M"}]},"_npmUser":{"name":"aleosovski","email":"alexandreosovski1@gmail.com"},"directories":{},"maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/muitto_1.5.0_1786322841067_0.3532017421128395"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-20T21:18:00.308Z","modified":"2026-08-10T00:47:21.377Z","1.4.4":"2026-07-20T21:18:00.589Z","1.4.6":"2026-07-20T21:35:47.014Z","1.4.7":"2026-07-20T21:38:22.792Z","1.4.8":"2026-07-20T21:54:48.515Z","1.4.9":"2026-07-20T22:01:08.902Z","1.4.10":"2026-07-20T22:10:36.922Z","1.4.11":"2026-08-01T02:01:59.241Z","1.4.13":"2026-08-05T00:08:41.624Z","1.5.0":"2026-08-10T00:47:21.220Z"},"bugs":{"url":"https://github.com/alexandreosovski/muitto/issues"},"author":{"name":"Alexandre Osovski","email":"alexandreosovski1@gmail.com","url":"https://github.com/alexandreosovski"},"license":"MIT","homepage":"https://github.com/alexandreosovski/muitto#readme","keywords":["🥓","MUITTO","test","test-runner","testing","typescript","unit-test","assertion","mock","tdd"],"repository":{"type":"git","url":"git+https://github.com/alexandreosovski/muitto.git"},"description":"Turning pork (poku) into bacon — a minimalist, zero-dependency test runner for TypeScript","maintainers":[{"name":"aleosovski","email":"alexandreosovski1@gmail.com"}],"readme":"# MUITTO\n\n> Zero dependencies. Maximum clarity.\n\n[![npm version](https://badge.fury.io/js/@aleosovski/muitto.svg)](https://www.npmjs.com/package/@aleosovski/muitto)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js Version](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](https://nodejs.org)\n[![TypeScript](https://img.shields.io/badge/TypeScript-native-blue.svg)](https://www.typescriptlang.org)\n\n<p align=\"center\"><b>English</b> · <a href=\"#muitto-pt-br\">Português (BR)</a></p>\n\n---\n\n## Quick Start\n\n```bash\nnpm install --save-dev @aleosovski/muitto\n```\n\nCreate your first test:\n\n```typescript\n// sum.test.ts\nimport { describe, it, expect } from \"muitto\";\n\nfunction sum(a: number, b: number): number {\n  return a + b;\n}\n\ndescribe(\"sum()\", () => {\n  it(\"adds two positive numbers\", () => {\n    expect(sum(2, 3)).toBe(5);\n  });\n});\n```\n\nRun it:\n\n```bash\nnpx muitto\n```\n\n## Why MUITTO?\n\nMUITTO is for developers who want a test runner that:\n\n- **Gets out of the way** — no config files to fight, no plugins to wire up, no setup wizard\n- **Starts instantly** — zero runtime dependencies means nothing to install beyond the tool itself\n- **Is readable** — the source is written to be understood, not just executed\n- **Just works** — sensible defaults for file discovery, timeouts, and reporting\n\n## Features\n\n| Feature | Description |\n|---------|-------------|\n| ⚡ **Zero Config** | Discovers test files automatically. Works right after install. |\n| 🔄 **Watch Mode** | Re-runs tests on save. Watches the whole project, not just test files. |\n| ✓ **Full Matchers** | `toBe`, `toEqual`, `toThrow`, mock matchers, asymmetric matchers. |\n| ◐ **Mocks & Spies** | `fn()`, `spyOn()`, control returns, resolutions and implementations. |\n| ◷ **Fake Timers** | Control time in tests. Advance timers, run callbacks, no real waiting. |\n| ☙ **Snapshots** | Regression tests persisted to disk, compared across runs and commits. |\n| ▤ **Parameterized** | `it.each` for data-driven tests with auto-generated names. |\n| ▣ **CI Ready** | `json` and `junit` reporters for GitHub Actions, GitLab CI, Jenkins. |\n| ◈ **Visual Diffs** | See exactly what was expected vs received on failure. |\n\n## Installation\n\n### Requirements\n\n- **Node.js** ≥ 18\n- **TypeScript** (any version supported by `tsx`)\n\n### Install\n\n```bash\nnpm install --save-dev @aleosovski/muitto\n```\n\nOr run directly without installing:\n\n```bash\nnpx muitto\n```\n\n### TypeScript Configuration\n\nNo special configuration needed. MUITTO works with your existing `tsconfig.json`.\n\n## Usage\n\n### Run all tests\n\n```bash\nnpx muitto\n```\n\n### Watch mode\n\n```bash\nnpx muitto --watch\n```\n\n### Filter by name\n\n```bash\nnpx muitto --grep \"sum\"\n```\n\n### Run a specific file\n\n```bash\nnpx muitto src/math.test.ts\n```\n\n### Use a different reporter\n\n```bash\nnpx muitto --reporter json --output report.json\n```\n\n### Update snapshots\n\n```bash\nnpx muitto --update-snapshots\n```\n\n## Writing Tests\n\n### Basic Test\n\n```typescript\nimport { describe, it, expect } from \"muitto\";\n\ndescribe(\"math\", () => {\n  it(\"adds numbers\", () => {\n    expect(1 + 1).toBe(2);\n  });\n\n  it.skip(\"not ready yet\", () => {\n    // This test will be skipped\n  });\n});\n```\n\n### Async Tests\n\n```typescript\nit(\"fetches data\", async () => {\n  const data = await fetchData();\n  expect(data).toEqual({ id: 1 });\n});\n```\n\n### Parameterized Tests\n\n```typescript\nit.each([\n  [1, 2, 3],\n  [4, 5, 9],\n])(\"sum $1 + $2 = $3\", (a, b, expected) => {\n  expect(sum(a, b)).toBe(expected);\n});\n```\n\n### Mocks\n\n```typescript\nimport { fn, spyOn } from \"muitto\";\n\nconst mockFn = fn();\nmockFn.mockReturnValue(42);\n\nexpect(mockFn()).toBe(42);\nexpect(mockFn).toHaveBeenCalled();\n```\n\n### Fake Timers\n\n```typescript\nimport { useFakeTimers } from \"muitto\";\n\nconst timers = useFakeTimers();\nlet called = false;\n\nsetTimeout(() => { called = true; }, 1000);\ntimers.advanceTimersByTime(1000);\n\nexpect(called).toBe(true);\ntimers.restore();\n```\n\n### Snapshots\n\n```typescript\nit(\"user profile\", () => {\n  expect(getUserProfile()).toMatchSnapshot({ name: \"user-profile\" });\n});\n```\n\n## API Reference\n\n### Test Functions\n\n| Function | Description |\n|----------|-------------|\n| `describe(name, fn)` | Creates a test suite |\n| `it(name, fn)` | Defines a test case |\n| `it.skip(name, fn)` | Skips a test |\n| `it.only(name, fn)` | Runs only this test |\n| `it.todo(name)` | Registers a placeholder test to write later |\n| `it.each(table)(name, fn)` | Parameterized test |\n\n### Matchers\n\n| Matcher | Description |\n|---------|-------------|\n| `toBe(value)` | Strict equality (`Object.is`) |\n| `toEqual(value)` | Deep equality |\n| `toBeTruthy()` / `toBeFalsy()` | Truthy / falsy check |\n| `toBeNull()` / `toBeUndefined()` | Nullness checks |\n| `toBeGreaterThan(n)` | Numeric comparison |\n| `toContain(item)` | Array/string contains |\n| `toHaveLength(n)` | Has length `n` |\n| `toThrow(msg?)` | Throws exception |\n| `toHaveBeenCalled()` | Mock was called |\n| `toMatchSnapshot(opts?)` | Snapshot comparison |\n\nEvery matcher accepts negation via `.not` — `expect(x).not.toBe(y)`. See the [full documentation](./docs-site/index.html) for the complete matcher set, including asymmetric matchers (`expect.any`, `expect.objectContaining`, etc.).\n\n## Configuration\n\nOptional. Create `.muittorc.json` at your project root:\n\n```json\n{\n  \"pattern\": [\"src/**/*.spec.ts\"],\n  \"testPathIgnorePatterns\": [\"/fixtures/\"],\n  \"timeout\": 10000,\n  \"reporter\": \"verbose\",\n  \"bail\": false,\n  \"updateSnapshots\": false,\n  \"globalSetup\": \"./test/global-setup.ts\",\n  \"globalTeardown\": \"./test/global-teardown.ts\"\n}\n```\n\n`globalSetup` / `globalTeardown` point at a module (resolved relative to the project root) whose **default export** is a `() => void | Promise<void>` function, run once for the entire run — before any test file and after every test file, respectively — useful for things like spinning up a shared test database once instead of per-suite.\n\nOr use the `\"muitto\"` key in `package.json`:\n\n```json\n{\n  \"muitto\": {\n    \"timeout\": 10000,\n    \"reporter\": \"dot\"\n  }\n}\n```\n\nConfig precedence: **CLI flags** → **`.muittorc.json`** → **`package.json`** → defaults. Each layer only applies when the one before it doesn't define the value.\n\n## CLI Reference\n\n| Flag | Alias | Description |\n|------|-------|-------------|\n| `--watch` | `-w` | Watch mode |\n| `--grep <pattern>` | | Filter tests by name |\n| `--reporter <name>` | | `default`, `verbose`, `dot`, `json`, `junit` |\n| `--output <file>` | `-o` | Write report to file |\n| `--update-snapshots` | | Rewrite diverging snapshots |\n| `--timeout <ms>` | `-t` | Test timeout (default: 5000) |\n| `--bail` | | Stop on first failure |\n| `--show-patterns` | | List discovery patterns |\n| `--coverage` | | Generate a code coverage report |\n| `--help` | `-h` | Show help |\n| `--version` | `-v` | Show version |\n\n## Reporters\n\n| Reporter | Description |\n|----------|-------------|\n| `default` | Full, colored output for local terminal |\n| `verbose` | Shows each test individually |\n| `dot` | Compact — one character per test |\n| `json` | Full JSON report |\n| `junit` | JUnit XML for CI systems |\n\n```bash\nmuitto --reporter junit --output ./junit.xml\nmuitto --reporter json --output ./report.json\n```\n\n## Coverage\n\n```bash\nmuitto --coverage\n```\n\nCoverage is measured with Node's built-in `node:inspector` Profiler (precise, block-level V8 coverage) — no `istanbul`/`nyc`/`c8` dependency, keeping MUITTO's zero-runtime-dependency guarantee. It tracks execution across the whole run, then reports:\n\n- **Lines** — which lines actually ran\n- **Statements** — currently approximated with line coverage\n- **Functions** — which named functions were called at least once\n- **Branches** — an approximation derived from V8's nested block ranges (not a full AST-based branch analysis — see the comment in `src/core/coverage.ts` for details)\n\nFiles under `node_modules/`, `dist/`, `.git/`, `coverage/`, `build/`, `.next/`, `.nuxt/`, and the test files themselves are excluded — coverage measures the code *under* test.\n\nRunning `--coverage` prints a per-file summary table to the terminal and writes a machine-readable report to `coverage/coverage-summary.json` (relative to your project root), so CI can consume it directly:\n\n```\n──────────────────────────────────────────────────\nCoverage Summary\n──────────────────────────────────────────────────\n\n  File           Lines    Funcs\n  -----------   ------   ------\n  src/calc.ts    66.7%    66.7%\n\nAll files\n  Lines:       66.7%  (8/12)\n  Statements:  66.7%  (8/12)\n  Functions:   66.7%  (2/3)\n  Branches:     0.0%  (0/1) (approximate)\n```\n\nWithout `--coverage`, none of this runs — no `coverage/` directory is created and there's no extra output or overhead.\n\n## How It Works\n\nMUITTO is built with a few simple principles:\n\n1. **No bundler, no plugin system** — the only dev dependency is `tsx` for TypeScript compilation\n2. **File discovery** — walks your project, matches paths against glob patterns using a hand-written matcher (no external glob library)\n3. **Cache-busting imports** — each file is imported with a unique query string so watch mode always gets fresh code\n4. **Sequential execution** — files run one after another for deterministic output\n5. **Real timeouts** — every test timeout is guarded by a real `setTimeout` reference, so `useFakeTimers()` can't accidentally disable the runner\n6. **Decoupled reporters** — a small observer interface (`onStart`, `onFileStart`, `onTestEnd`, `onEnd`) completely separate from execution\n\n## Philosophy\n\nMUITTO is built on a simple belief: **testing tools should be boring**.\n\n- No magic. No plugins. No configuration wizard.\n- Everything is explicit. Nothing happens unless you ask for it.\n- The source code is meant to be read — not just executed.\n- Dependencies are a liability. MUITTO has zero at runtime.\n\nIf you want a test runner that does one thing well and gets out of your way, MUITTO is for you.\n\n*Built without dependencies. Not even this site.*\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development\n\n```bash\ngit clone https://github.com/alexandreosovski/muitto.git\ncd muitto\nnpm install\nnpm run dev\n```\n\n## License\n\nMIT © 2026 [Alexandre Osovski](https://github.com/alexandreosovski)\n\n---\n\n<div align=\"center\">\n  <sub>Built without dependencies. Not even this site.</sub>\n</div>\n\n## Acknowledgments\n\nMUITTO was inspired by [Poku](https://github.com/wellwelwel/poku), another excellent minimalist test runner. Check it out.\n\n<br>\n\n---\n\n# MUITTO (PT-BR)\n\n> Zero dependências. Máxima clareza.\n\n[![npm version](https://badge.fury.io/js/@aleosovski/muitto.svg)](https://www.npmjs.com/package/@aleosovski/muitto)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js Version](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](https://nodejs.org)\n[![TypeScript](https://img.shields.io/badge/TypeScript-native-blue.svg)](https://www.typescriptlang.org)\n\n<p align=\"center\"><a href=\"#muitto\">English</a> · <b>Português (BR)</b></p>\n\n---\n\n## Início rápido\n\n```bash\nnpm install --save-dev @aleosovski/muitto\n```\n\nCrie seu primeiro teste:\n\n```typescript\n// sum.test.ts\nimport { describe, it, expect } from \"muitto\";\n\nfunction sum(a: number, b: number): number {\n  return a + b;\n}\n\ndescribe(\"sum()\", () => {\n  it(\"adds two positive numbers\", () => {\n    expect(sum(2, 3)).toBe(5);\n  });\n});\n```\n\nRode:\n\n```bash\nnpx muitto\n```\n\n## Por que MUITTO?\n\nMUITTO é para quem quer um test runner que:\n\n- **Não atrapalha** — sem arquivo de config pra brigar, sem plugin pra configurar, sem assistente de setup\n- **Sobe instantaneamente** — zero dependências em runtime significa nada pra instalar além da própria ferramenta\n- **É legível** — o código-fonte é escrito para ser entendido, não apenas executado\n- **Simplesmente funciona** — padrões sensatos para descoberta de arquivos, timeouts e relatórios\n\n## Recursos\n\n| Recurso | Descrição |\n|---------|-------------|\n| ⚡ **Zero configuração** | Descobre arquivos de teste automaticamente. Funciona logo após instalar. |\n| 🔄 **Watch mode** | Reexecuta os testes ao salvar. Observa o projeto inteiro, não só os arquivos de teste. |\n| ✓ **Matchers completos** | `toBe`, `toEqual`, `toThrow`, matchers de mock, matchers assimétricos. |\n| ◐ **Mocks & Spies** | `fn()`, `spyOn()`, controle de retornos, resoluções e implementações. |\n| ◷ **Fake Timers** | Controle o tempo nos testes. Avance timers, execute callbacks, sem esperar de verdade. |\n| ☙ **Snapshots** | Testes de regressão persistidos em disco, comparados entre execuções e commits. |\n| ▤ **Parametrizado** | `it.each` para testes orientados a dados, com nomes gerados automaticamente. |\n| ▣ **Pronto para CI** | Reporters `json` e `junit` para GitHub Actions, GitLab CI, Jenkins. |\n| ◈ **Diffs visuais** | Veja exatamente o que era esperado vs. o que foi recebido quando um teste falha. |\n\n## Instalação\n\n### Requisitos\n\n- **Node.js** ≥ 18\n- **TypeScript** (qualquer versão suportada pelo `tsx`)\n\n### Instalar\n\n```bash\nnpm install --save-dev @aleosovski/muitto\n```\n\nOu rode diretamente sem instalar:\n\n```bash\nnpx muitto\n```\n\n### Configuração do TypeScript\n\nNenhuma configuração especial é necessária. O MUITTO funciona com o `tsconfig.json` que você já tem.\n\n## Uso\n\n### Rodar todos os testes\n\n```bash\nnpx muitto\n```\n\n### Modo watch\n\n```bash\nnpx muitto --watch\n```\n\n### Filtrar por nome\n\n```bash\nnpx muitto --grep \"sum\"\n```\n\n### Rodar um arquivo específico\n\n```bash\nnpx muitto src/math.test.ts\n```\n\n### Usar um reporter diferente\n\n```bash\nnpx muitto --reporter json --output report.json\n```\n\n### Atualizar snapshots\n\n```bash\nnpx muitto --update-snapshots\n```\n\n## Escrevendo testes\n\n### Teste básico\n\n```typescript\nimport { describe, it, expect } from \"muitto\";\n\ndescribe(\"math\", () => {\n  it(\"adds numbers\", () => {\n    expect(1 + 1).toBe(2);\n  });\n\n  it.skip(\"not ready yet\", () => {\n    // Este teste será pulado\n  });\n});\n```\n\n### Testes assíncronos\n\n```typescript\nit(\"fetches data\", async () => {\n  const data = await fetchData();\n  expect(data).toEqual({ id: 1 });\n});\n```\n\n### Testes parametrizados\n\n```typescript\nit.each([\n  [1, 2, 3],\n  [4, 5, 9],\n])(\"sum $1 + $2 = $3\", (a, b, expected) => {\n  expect(sum(a, b)).toBe(expected);\n});\n```\n\n### Mocks\n\n```typescript\nimport { fn, spyOn } from \"muitto\";\n\nconst mockFn = fn();\nmockFn.mockReturnValue(42);\n\nexpect(mockFn()).toBe(42);\nexpect(mockFn).toHaveBeenCalled();\n```\n\n### Fake Timers\n\n```typescript\nimport { useFakeTimers } from \"muitto\";\n\nconst timers = useFakeTimers();\nlet called = false;\n\nsetTimeout(() => { called = true; }, 1000);\ntimers.advanceTimersByTime(1000);\n\nexpect(called).toBe(true);\ntimers.restore();\n```\n\n### Snapshots\n\n```typescript\nit(\"user profile\", () => {\n  expect(getUserProfile()).toMatchSnapshot({ name: \"user-profile\" });\n});\n```\n\n## Referência da API\n\n### Funções de teste\n\n| Função | Descrição |\n|----------|-------------|\n| `describe(name, fn)` | Cria uma suíte de testes |\n| `it(name, fn)` | Define um caso de teste |\n| `it.skip(name, fn)` | Pula um teste |\n| `it.only(name, fn)` | Roda apenas esse teste |\n| `it.todo(name)` | Registra um placeholder para escrever o teste depois |\n| `it.each(table)(name, fn)` | Teste parametrizado |\n\n### Matchers\n\n| Matcher | Descrição |\n|---------|-------------|\n| `toBe(value)` | Igualdade estrita (`Object.is`) |\n| `toEqual(value)` | Igualdade profunda |\n| `toBeTruthy()` / `toBeFalsy()` | Checagem de truthy / falsy |\n| `toBeNull()` / `toBeUndefined()` | Checagens de nulidade |\n| `toBeGreaterThan(n)` | Comparação numérica |\n| `toContain(item)` | Array/string contém |\n| `toHaveLength(n)` | Tem comprimento `n` |\n| `toThrow(msg?)` | Lança exceção |\n| `toHaveBeenCalled()` | Mock foi chamado |\n| `toMatchSnapshot(opts?)` | Comparação com snapshot |\n\nTodo matcher aceita negação via `.not` — `expect(x).not.toBe(y)`. Veja a [documentação completa](./docs-site/index.html) para o conjunto completo de matchers, incluindo matchers assimétricos (`expect.any`, `expect.objectContaining`, etc.).\n\n## Configuração\n\nOpcional. Crie um `.muittorc.json` na raiz do projeto:\n\n```json\n{\n  \"pattern\": [\"src/**/*.spec.ts\"],\n  \"testPathIgnorePatterns\": [\"/fixtures/\"],\n  \"timeout\": 10000,\n  \"reporter\": \"verbose\",\n  \"bail\": false,\n  \"updateSnapshots\": false,\n  \"globalSetup\": \"./test/global-setup.ts\",\n  \"globalTeardown\": \"./test/global-teardown.ts\"\n}\n```\n\n`globalSetup` / `globalTeardown` apontam para um módulo (resolvido em relação à raiz do projeto) cuja **exportação padrão** é uma função `() => void | Promise<void>`, executada uma única vez para toda a execução — antes de qualquer arquivo de teste e depois de todos os arquivos de teste, respectivamente — útil para coisas como subir um banco de dados de teste compartilhado uma única vez em vez de por suíte.\n\nOu use a chave `\"muitto\"` no `package.json`:\n\n```json\n{\n  \"muitto\": {\n    \"timeout\": 10000,\n    \"reporter\": \"dot\"\n  }\n}\n```\n\nPrecedência de configuração: **flags de CLI** → **`.muittorc.json`** → **`package.json`** → padrões internos. Cada camada só é aplicada quando a anterior não define o valor.\n\n## Referência da CLI\n\n| Flag | Alias | Descrição |\n|------|-------|-------------|\n| `--watch` | `-w` | Modo watch |\n| `--grep <pattern>` | | Filtra testes por nome |\n| `--reporter <name>` | | `default`, `verbose`, `dot`, `json`, `junit` |\n| `--output <file>` | `-o` | Grava o relatório em arquivo |\n| `--update-snapshots` | | Regrava snapshots divergentes |\n| `--timeout <ms>` | `-t` | Timeout por teste (padrão: 5000) |\n| `--bail` | | Interrompe na primeira falha |\n| `--show-patterns` | | Lista os padrões de descoberta |\n| `--coverage` | | Gera um relatório de cobertura de código |\n| `--help` | `-h` | Mostra ajuda |\n| `--version` | `-v` | Mostra a versão |\n\n## Reporters\n\n| Reporter | Descrição |\n|----------|-------------|\n| `default` | Interface completa e colorida para o terminal local |\n| `verbose` | Mostra cada teste individualmente |\n| `dot` | Modo compacto — um caractere por teste |\n| `json` | Relatório JSON completo |\n| `junit` | XML JUnit para sistemas de CI |\n\n```bash\nmuitto --reporter junit --output ./junit.xml\nmuitto --reporter json --output ./report.json\n```\n\n## Cobertura\n\n```bash\nmuitto --coverage\n```\n\nA cobertura é medida com o Profiler nativo do `node:inspector` (cobertura precisa do V8, no nível de bloco) — sem dependência de `istanbul`/`nyc`/`c8`, preservando a garantia de zero dependências em runtime do MUITTO. Ela acompanha a execução ao longo de toda a rodada e reporta:\n\n- **Linhas** — quais linhas realmente rodaram\n- **Statements** — atualmente aproximado pela cobertura de linhas\n- **Funções** — quais funções nomeadas foram chamadas pelo menos uma vez\n- **Branches** — uma aproximação derivada dos ranges de bloco aninhados do V8 (não é uma análise de branch baseada em AST completa — veja o comentário em `src/core/coverage.ts` para detalhes)\n\nArquivos em `node_modules/`, `dist/`, `.git/`, `coverage/`, `build/`, `.next/`, `.nuxt/`, e os próprios arquivos de teste são excluídos — a cobertura mede o código *sob* teste.\n\nRodar `--coverage` imprime uma tabela resumo por arquivo no terminal e grava um relatório legível por máquina em `coverage/coverage-summary.json` (relativo à raiz do projeto), para que o CI possa consumi-lo diretamente:\n\n```\n──────────────────────────────────────────────────\nCoverage Summary\n──────────────────────────────────────────────────\n\n  File           Lines    Funcs\n  -----------   ------   ------\n  src/calc.ts    66.7%    66.7%\n\nAll files\n  Lines:       66.7%  (8/12)\n  Statements:  66.7%  (8/12)\n  Functions:   66.7%  (2/3)\n  Branches:     0.0%  (0/1) (approximate)\n```\n\nSem `--coverage`, nada disso roda — nenhum diretório `coverage/` é criado e não há saída ou custo extra.\n\n## Como funciona\n\nO MUITTO é construído sobre alguns princípios simples:\n\n1. **Sem bundler, sem sistema de plugins** — a única dependência de desenvolvimento é o `tsx`, para compilar TypeScript\n2. **Descoberta de arquivos** — percorre o projeto e compara os caminhos com padrões glob usando um matcher escrito à mão (sem lib externa de glob)\n3. **Imports com cache-busting** — cada arquivo é importado com uma query string única, para que o watch mode sempre pegue código atualizado\n4. **Execução sequencial** — os arquivos rodam um após o outro, garantindo uma saída determinística\n5. **Timeouts reais** — o timeout de cada teste é protegido por uma referência real de `setTimeout`, então `useFakeTimers()` não consegue desativar o runner sem querer\n6. **Reporters desacoplados** — uma pequena interface de observer (`onStart`, `onFileStart`, `onTestEnd`, `onEnd`) totalmente separada da execução\n\n## Filosofia\n\nO MUITTO é construído sobre uma crença simples: **ferramentas de teste deveriam ser chatas (no bom sentido)**.\n\n- Sem mágica. Sem plugins. Sem assistente de configuração.\n- Tudo é explícito. Nada acontece a menos que você peça.\n- O código-fonte foi feito para ser lido — não apenas executado.\n- Dependências são um passivo. O MUITTO tem zero em runtime.\n\nSe você quer um test runner que faz uma coisa bem feita e não atrapalha, o MUITTO é pra você.\n\n*Construído sem dependências. Nem este site.*\n\n## Contribuindo\n\nContribuições são bem-vindas! Por favor:\n\n1. Faça um fork do repositório\n2. Crie uma branch de feature (`git checkout -b feature/nova-feature`)\n3. Commit suas mudanças (`git commit -m 'Add nova feature'`)\n4. Dê push na branch (`git push origin feature/nova-feature`)\n5. Abra um Pull Request\n\n### Desenvolvimento\n\n```bash\ngit clone https://github.com/alexandreosovski/muitto.git\ncd muitto\nnpm install\nnpm run dev\n```\n\n## Licença\n\nMIT © 2026 [Alexandre Osovski](https://github.com/alexandreosovski)\n\n---\n\n<div align=\"center\">\n  <sub>Construído sem dependências. Nem este site.</sub>\n</div>\n\n## Agradecimentos\n\nO MUITTO foi inspirado pelo [Poku](https://github.com/wellwelwel/poku), outro excelente test runner minimalista. Vale a pena conhecer.\n","readmeFilename":"README.md"}