{"_id":"typroof","_rev":"49-f9d509ecbff7cde3716583cb4817038e","name":"typroof","dist-tags":{"latest":"0.6.0"},"versions":{"0.0.1-alpha.0":{"name":"typroof","version":"0.0.1-alpha.0","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.0.1-alpha.0","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"b0714317f6b50830eef49abe4d451b584a8be2e4","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.0.1-alpha.0.tgz","fileCount":79,"integrity":"sha512-CznfIgn8tlRRRzF/Ra4oQTup6m/DV6RK4NzZpY7hHDzKXBiigoEhrdZ66PUFFnh9IHaN/LoSm+F/i25Ov+F0qw==","signatures":[{"sig":"MEYCIQDCKiWEWyxLV829TkknQWCyNYs0P8aLsSA/0KbYGWMNfQIhAOQHaUuYyHZvW3t4eIpkKxlmIf3mstPe8m4R+XqbMLwB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100283},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","scripts":{"lint":"eslint {src,test}/**/*.{js,ts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{json,js,ts}","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.0","description":"Test your TypeScript type definitions","directories":{},"_nodeVersion":"21.1.0","dependencies":{"meow":"^12.1.1","chalk":"^5.3.0","ts-morph":"^20.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.1.1","vite":"^4.5.0","eslint":"^8.53.0","rimraf":"^5.0.5","vitest":"^0.34.6","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^0.34.6","typescript":"^5.2.2","@types/meow":"^6.0.0","replace-in-file":"^7.0.2","vite-plugin-dts":"^3.6.3","vite-plugin-linter":"^2.0.7","@vitest/coverage-v8":"^0.34.6","vite-tsconfig-paths":"^4.2.1","eslint-plugin-import":"^2.29.0","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.10.0","prettier-plugin-packagejson":"^2.4.6","@typescript-eslint/eslint-plugin":"^6.10.0","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.0.1-alpha.0_1700128400017_0.0066965530292357744","host":"s3://npm-registry-packages"}},"0.0.1-alpha.1":{"name":"typroof","version":"0.0.1-alpha.1","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.0.1-alpha.1","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"3c36a4876e2feb8463f32dddab7a72d0c7ef250a","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.0.1-alpha.1.tgz","fileCount":79,"integrity":"sha512-opVOBeKxa16SmN/8OZv/GoR79vTcHcsU8eDtohebiE/pamS+7i3yldd6RXD/gSRohUk7ljp04c+JxTMf2v43Ww==","signatures":[{"sig":"MEUCIDWfFt76IZSxFPBtRpjrMWeVFtcbKOehD49TEvQjKjAIAiEAmbJnCkHQS9MJk9jFvbUxr/NRhHBn1RdwhJxpAhK3fPM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99876},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"895c7eeaf52c28b7751a241fa2a94bbd0ed06910","scripts":{"lint":"eslint {src,test}/**/*.{js,ts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{json,js,ts}","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"Test your TypeScript type definitions","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.0.0","chalk":"^5.3.0","ts-morph":"^21.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vite":"^5.0.10","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.1.0","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.1.0","typescript":"^5.3.3","@types/node":"^20.10.5","replace-in-file":"^7.0.2","vite-plugin-dts":"^3.6.4","vite-plugin-linter":"^2.0.7","@vitest/coverage-v8":"^1.1.0","vite-tsconfig-paths":"^4.2.2","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.15.0","prettier-plugin-packagejson":"^2.4.7","@typescript-eslint/eslint-plugin":"^6.15.0","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.0.1-alpha.1_1703487477848_0.9301194763658853","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"typroof","version":"0.1.0","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.1.0","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"dc7ec1d8b1c854921383ad79636df812e1f66f82","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.1.0.tgz","fileCount":79,"integrity":"sha512-Fk8Lr+KFeC9qxwE1lN1kI01aSxpw2YN+dfjZJuzuw6PhUEQMtos1JGP1rv4l/tSAV0RcNGhzVVesHLbd9kR/dA==","signatures":[{"sig":"MEYCIQDr/zgd7mLorWObDbkK2+830hKx50qcFVpyRVpOJLM+oAIhAIgSlJ3O8VoJ/dNDUulLbuVHmi7yFU56FZvOUJGJCl9b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":118753},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"78b156873df99883b3bdf573e31825d3fc0301c7","scripts":{"lint":"eslint {src,test}/**/*.{js,ts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{json,js,ts}","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"Test your TypeScript type definitions","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.0.0","chalk":"^5.3.0","ts-morph":"^21.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vite":"^5.0.10","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.1.0","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.1.0","typescript":"^5.3.3","@types/node":"^20.10.5","replace-in-file":"^7.0.2","vite-plugin-dts":"^3.6.4","vite-plugin-linter":"^2.0.7","@vitest/coverage-v8":"^1.1.0","vite-tsconfig-paths":"^4.2.2","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.15.0","prettier-plugin-packagejson":"^2.4.7","@typescript-eslint/eslint-plugin":"^6.15.0","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.1.0_1703489023302_0.322255664772342","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"typroof","version":"0.1.1","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.1.1","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"2dd3fb5f91ce27d8b4772712160b9c439747b555","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.1.1.tgz","fileCount":88,"integrity":"sha512-cD+ZRJW7igUpZcsmfrVoCrEAHwpnB1AsIEdDlh3ofkod7jWndKM6OIj3Xi6PVWKLb6gYpW6KGkW9bb9DShnL8g==","signatures":[{"sig":"MEQCIByZpqmVRSW3Xv6HHz6WG/r5zbgm18WDa+FJ2V3GYAFsAiATSt5mRE9b9l8fD6lCO4tQleNTyiwpIR75bBZSGnResA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126001},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"db93edcd0f1a2e6703f2263ca8aa2dac185c03bc","scripts":{"lint":"eslint {src,test}/**/*.{js,ts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{json,js,ts}","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"Test your TypeScript type definitions","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.0.0","chalk":"^5.3.0","ts-morph":"^21.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vite":"^5.0.10","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.1.0","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.1.0","typescript":"^5.3.3","@types/node":"^20.10.5","replace-in-file":"^7.0.2","vite-plugin-dts":"^3.6.4","vite-plugin-linter":"^2.0.7","@vitest/coverage-v8":"^1.1.0","vite-tsconfig-paths":"^4.2.2","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.15.0","prettier-plugin-packagejson":"^2.4.7","@typescript-eslint/eslint-plugin":"^6.15.0","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.1.1_1703516090807_0.4749771643819949","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"typroof","version":"0.1.2","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.1.2","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"de4eb903bab252a4bce2b0604441a6e2db06fb40","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.1.2.tgz","fileCount":88,"integrity":"sha512-zzGKJ2wyWhBWFGj8z06PiINEhpzYQr20rr/HLYklubigFXWXywlw/RrYU+phdr5c8hYw1wq/UYEATw368IE6bw==","signatures":[{"sig":"MEUCIQCePRB2y+IWPD5eaxN5Ud1OzSlJs4BK7vLA0mWVhL8+GwIgSapfr4NOkG3p4BIpsw1wc1tJ45e3ImsyIUSzAVpVZLw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131588},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"5ec4af9ae7707880ec9a4ecf72b369d17a9803d2","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky install\\\",\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"Test your TypeScript type definitions elegantly","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.0.0","chalk":"^5.3.0","ts-morph":"^21.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","husky":"^8.0.3","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.1.0","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.1.0","typescript":"^5.3.3","@types/node":"^20.10.5","lint-staged":"^15.2.0","@types/eslint":"^8.56.0","@commitlint/cli":"^18.4.3","@types/prettier":"^2.7.3","replace-in-file":"^7.0.2","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.1.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.16.0","prettier-plugin-packagejson":"^2.4.7","@typescript-eslint/eslint-plugin":"^6.16.0","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.1.2_1703595178656_0.6307877207098647","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"typroof","version":"0.2.0","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.0","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"07ec5743f15ad6204568fae02599bc7586ed38b3","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.0.tgz","fileCount":116,"integrity":"sha512-X8FFRbKuGkmTgIiC1LSAjJRFiF3kj0STyXTffpVls5rmWYi8NxQc4Mlli3skAFHgOmsGeOdqsPsuN5yp0oUrZQ==","signatures":[{"sig":"MEUCIGPJmY9zfyKAQ3UFTUfREq5r4g4RDIY10uJTid1/TvwtAiEAy7dsSp/OxKDosGq5OWzlT/l0XjhRYWQR7kLVeHOacBQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18091232},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"54a99cfd867c7e629d026206229ddfefd5869384","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky install\\\",\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.1.0","chalk":"^5.3.0","esbuild":"^0.19.11","ts-morph":"^21.0.1","get-tsconfig":"^4.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","husky":"^8.0.3","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.1.3","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.1.3","typescript":"^5.3.3","@types/node":"^20.11.0","lint-staged":"^15.2.0","@types/eslint":"^8.56.2","@commitlint/cli":"^18.4.4","@types/prettier":"^2.7.3","replace-in-file":"^7.1.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.1.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.18.1","prettier-plugin-packagejson":"^2.4.9","@typescript-eslint/eslint-plugin":"^6.18.1","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.0_1704971242179_0.17058097634633906","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"typroof","version":"0.2.1","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.1","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"f223f8e4c3f4f85da7a3b49c9adab7ca5e0489f1","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.1.tgz","fileCount":116,"integrity":"sha512-1CHe/xtX2+juWJcF9RbFYjL70/GaTvNyW8HpKZ37jjQ89HLAmKIbFoZls5diyNzS8EcK8TBaW60CZQbsGgLk5Q==","signatures":[{"sig":"MEYCIQDvSFMBgXWMsVcOLS/6qjPNjua1+HQtpkrh9A2JsTUdaQIhAJAQnJBsHl62UaSXbdec0UFyM9M5fsCviDLwkZchMI65","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9818827},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"44d8a81c187f4306d51a5992be405669e9f75d45","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky install\\\",\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.1.0","chalk":"^5.3.0","esbuild":"^0.19.11","ts-morph":"^21.0.1","get-tsconfig":"^4.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","husky":"^8.0.3","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.1.3","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.1.3","typescript":"^5.3.3","@types/node":"^20.11.0","lint-staged":"^15.2.0","@types/eslint":"^8.56.2","@commitlint/cli":"^18.4.4","@types/prettier":"^2.7.3","replace-in-file":"^7.1.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.1.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.18.1","prettier-plugin-packagejson":"^2.4.9","@typescript-eslint/eslint-plugin":"^6.18.1","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.1_1704977874670_0.12271896257705084","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"typroof","version":"0.2.2","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.2","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"3aa4e560bc6723d86109608f104fec058be47c2e","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.2.tgz","fileCount":119,"integrity":"sha512-IiIZzey+F7xDCBeXlZZAg1qb5Hpk6Z+nf1BCVnTi7uUadh+Md+aXsz+X+oBh7C8ojW+sgSPI3+r23jpl0zBkDQ==","signatures":[{"sig":"MEUCIDVYzMZ6sI0MWgrnMH9uR/JZWxaRDAhxwbDo7f18VSa9AiEA/NqsIQUx+xdnQ99tHOwhS4n0fRggrGIR43sTtqnmqTc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9819892},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"d81cf11499474f1eeee478495c72011d0c198c37","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky install\\\",\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.1.0","chalk":"^5.3.0","esbuild":"^0.19.11","ts-morph":"^21.0.1","get-tsconfig":"^4.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","husky":"^8.0.3","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.1.3","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.1.3","typescript":"^5.3.3","@types/node":"^20.11.0","lint-staged":"^15.2.0","@types/eslint":"^8.56.2","@commitlint/cli":"^18.4.4","@types/prettier":"^2.7.3","replace-in-file":"^7.1.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.1.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.18.1","prettier-plugin-packagejson":"^2.4.9","@typescript-eslint/eslint-plugin":"^6.18.1","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.2_1705150194006_0.2635847305414294","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"typroof","version":"0.2.3","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.3","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"fc619336fbec554ebd3e6317662ef304f68e10da","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.3.tgz","fileCount":119,"integrity":"sha512-FnPUt+LJYHlnpagDoOToSnWlXQRzNBp6/xyGdFmscg+DB1IlE+JkgMicpDs2z0ft0B45g/e4Dw+J4XQiMRfYvw==","signatures":[{"sig":"MEYCIQDbK51IWmpzbyo84zQ/sQEeJYdcS2qNzB+z5dbJSfOnUgIhAJ1ysbiJgz16/ODJOEZix9CqVodenwkXkd7mHXtFtiOa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9820331},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"8c6d96a0edc60511b3c1861cd31be731773c50f7","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky install\\\",\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.1.0","chalk":"^5.3.0","esbuild":"^0.19.11","ts-morph":"^21.0.1","get-tsconfig":"^4.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","husky":"^8.0.3","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.1.3","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.1.3","typescript":"^5.3.3","@types/node":"^20.11.0","lint-staged":"^15.2.0","@types/eslint":"^8.56.2","@commitlint/cli":"^18.4.4","@types/prettier":"^2.7.3","replace-in-file":"^7.1.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.1.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.18.1","prettier-plugin-packagejson":"^2.4.9","@typescript-eslint/eslint-plugin":"^6.18.1","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.3_1705155120652_0.1616921330124419","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"typroof","version":"0.2.4","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.4","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"a474ce3453e8e0a130d57229ce2ad0b3ee8c6147","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.4.tgz","fileCount":125,"integrity":"sha512-Dl2T2vwzX73m3nxnraOsjZ7tyUKhFfB4t8KqLpE6Q2aL4FbvRTKye+4KlsTP8vPdIQfNs2WX4H5/Eg04Me9PAw==","signatures":[{"sig":"MEUCIQDftwjeC52g0EkabWY2dMIUIfbhyB6KQQZnzXaw61jNrAIgEXgDvnnTtzjxpNFe3TRbP0hoe1yapn86GksATROnhF4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9826029},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"051ebeece2fc8b1563eb22b26908af088d730fc5","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky install\\\",\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.1.0","chalk":"^5.3.0","esbuild":"^0.19.11","ts-morph":"^21.0.1","get-tsconfig":"^4.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","husky":"^8.0.3","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.1.3","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.1.3","typescript":"^5.3.3","@types/node":"^20.11.0","lint-staged":"^15.2.0","@types/eslint":"^8.56.2","@commitlint/cli":"^18.4.4","@types/prettier":"^2.7.3","replace-in-file":"^7.1.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.1.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.18.1","prettier-plugin-packagejson":"^2.4.9","@typescript-eslint/eslint-plugin":"^6.18.1","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.4_1705164018924_0.5485640092811475","host":"s3://npm-registry-packages"}},"0.2.5":{"name":"typroof","version":"0.2.5","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.5","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"b9ec26cfe5e47be4f99d7beab8d1a1471d4297ee","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.5.tgz","fileCount":134,"integrity":"sha512-GntT8a/DwUY6lO+ragn+wCCQiMJ+UgPcZpb7J7DOZXJY4uFh1WGF5NRee7tyAMePYUTdj39FYe12ZAU5Uflf0A==","signatures":[{"sig":"MEYCIQC6agcZu6znfvRME7HBPR79eA0rPJRWafhvC97G+ZFdagIhAO9SMo0NIXciRmu+M5FTc9WRGufpwITzzB/2AAf2I9vF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9828787},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"5858a6355add1f8f79477d2a3448507104f4f465","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky install\\\",\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts}","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.2.4","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"21.5.0","dependencies":{"meow":"^13.1.0","chalk":"^5.3.0","esbuild":"^0.19.11","ts-morph":"^21.0.1","get-tsconfig":"^4.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","husky":"^8.0.3","eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.2.0","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.4","lint-staged":"^15.2.0","@types/eslint":"^8.56.2","@commitlint/cli":"^18.4.4","@types/prettier":"^2.7.3","replace-in-file":"^7.1.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.2.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^6.19.0","prettier-plugin-packagejson":"^2.4.9","@typescript-eslint/eslint-plugin":"^6.19.0","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.5_1705403697871_0.4973719777370884","host":"s3://npm-registry-packages"}},"0.2.6":{"name":"typroof","version":"0.2.6","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.6","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"2ac3e1637fe92bd2fac7fde7017649ec59e9f149","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.6.tgz","fileCount":134,"integrity":"sha512-sdUG1gt+O6aLklnkLR8/MURkyUvYlSWlR8Hobpof9W1Y2+ix/btlaolbA3DwqqUkT1bhSv+sRc2SbURC4u0gEw==","signatures":[{"sig":"MEUCIFBbDDyko81iel2sDIaEP9FvudQ4ly6NUn7ZSRlZ/WBFAiEAqEsywL6kz1xV2j6HN9AA0awg9zhCVuVTzcqoRSuwuGk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9828962},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"21bde16a5d3dfa935fadddeaffeb4a09c05ea008","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --report-unused-disable-directives-severity error --max-warnings 0","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky\\\",\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --report-unused-disable-directives-severity error --max-warnings 0","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.5.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"21.7.0","dependencies":{"meow":"^13.2.0","chalk":"^5.3.0","esbuild":"^0.20.1","ts-morph":"^21.0.1","get-tsconfig":"^4.7.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^1.3.1","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.3.1","typescript":"^5.4.2","@types/node":"^20.11.25","lint-staged":"^15.2.2","@types/eslint":"^8.56.5","@commitlint/cli":"^19.0.3","@types/prettier":"^2.7.3","replace-in-file":"^7.1.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.3.1","eslint-plugin-import":"^2.29.1","eslint-plugin-sonarjs":"^0.24.0","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^7.1.1","prettier-plugin-packagejson":"^2.4.12","@typescript-eslint/eslint-plugin":"^7.1.1","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.6_1710002200952_0.5985517069956154","host":"s3://npm-registry-packages"}},"0.2.7":{"name":"typroof","version":"0.2.7","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.7","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"7924a4939f75e7cb145ac2c6ad0578aeed2d3cdc","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.7.tgz","fileCount":134,"integrity":"sha512-Gl+Vh6FE2XFrPJxZLgvXue2PFh1tbJnziA+CDhOLp68WSadcXzRnxMaXDZXmPBnRjNN8/NpcwCgo5jdJbNRfsA==","signatures":[{"sig":"MEYCIQD+TY1hGr34TrzywUXu5TqfYNH5zqaJDB92HTYItqnyWgIhAI7b9/GMv7MS6NbsaNkCDya71uUIsJCVduwX9c+X5UPo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9828962},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"bae534df986c390d17a864553f6aa208fa841e42","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --report-unused-disable-directives-severity error --max-warnings 0","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && cpy ./dist/**/* ./build/ && rimraf dist && prettier --loglevel=silent --print-width 80 --write ./build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky\\\",\" \"\" ./build/package.json && prettier --loglevel=silent --print-width 80 --write ./build/package.json && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --report-unused-disable-directives-severity error --max-warnings 0","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.5.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"21.7.1","dependencies":{"meow":"^13.2.0","chalk":"^5.3.0","esbuild":"^0.20.2","ts-morph":"^22.0.0","get-tsconfig":"^4.7.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^1.4.0","cpy-cli":"^5.0.0","prettier":"^2.8.8","tsc-alias":"^1.8.8","@vitest/ui":"^1.4.0","typescript":"^5.4.3","@types/node":"^20.11.30","lint-staged":"^15.2.2","@types/eslint":"^8.56.6","@commitlint/cli":"^19.2.1","@types/prettier":"^2.7.3","replace-in-file":"^7.1.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.4.0","eslint-plugin-import":"^2.29.1","eslint-plugin-sonarjs":"^0.24.0","eslint-config-prettier":"^8.10.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^7.3.1","prettier-plugin-packagejson":"^2.4.12","@typescript-eslint/eslint-plugin":"^7.3.1","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.7_1711031736042_0.5722159954689474","host":"s3://npm-registry-packages"}},"0.2.8":{"name":"typroof","version":"0.2.8","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.8","homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"6eeeff6b2fa0c5a9c3cdbb79506f00b8aa0e2315","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.8.tgz","fileCount":116,"integrity":"sha512-CZZaROL74Jt28nmB1Qq79KTqriW+dBlpWRk1WLut6xBEAqasOEsxUlAUeQlGp+9NpykVOLBxPP4XS3aF6gYJjQ==","signatures":[{"sig":"MEUCIFjPB1b4Rj6kXUq7qcUO6VRX2wqgnMp7s/fegRD97D3sAiEA+nB4kQyn4MC9823gQoKVWN1PwpXtiWyrOej9Sv1MhfQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9824611},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"9334fc24a6f5e4a056e9b3a4698d14f3922b6cf9","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --no-error-on-unmatched-pattern --report-unused-disable-directives-severity error --max-warnings 0","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && rimraf -g ./dist/tools/**/*.{js,d.ts.map} && replace-in-file \"/^\\/\\/# sourceMappingURL=.+$/mg\" \"\" ./dist/tools/**/*.d.ts --isRegex && cpy ./dist/**/* ./build/ && rimraf dist && replace-in-file \"/^\\s*\\/\\/ eslint-disable-next-line .+$/mg\" \"\" ./build/**/*.js --isRegex && prettier --log-level=silent --print-width 80 --write ./build/ --ignore-path !build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky\\\",\" \"\" ./build/package.json && prettier --log-level=silent --print-width 80 --write ./build/package.json --ignore-path !build/ && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --no-error-on-unmatched-pattern --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --no-error-on-unmatched-pattern --report-unused-disable-directives-severity error --max-warnings 0","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.8.1","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"22.3.0","dependencies":{"meow":"^13.2.0","chalk":"^5.3.0","esbuild":"^0.21.5","ts-morph":"^22.0.0","get-tsconfig":"^4.7.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.7","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","vitest":"^1.6.0","cpy-cli":"^5.0.0","prettier":"^3.3.2","tsc-alias":"^1.8.10","@vitest/ui":"^1.6.0","typescript":"^5.5.2","@types/node":"^20.14.8","lint-staged":"^15.2.7","@types/eslint":"^8.56.10","@commitlint/cli":"^19.3.0","replace-in-file":"^7.2.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.6.0","eslint-plugin-import":"^2.29.1","eslint-plugin-sonarjs":"^0.25.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.13.1","prettier-plugin-packagejson":"^2.5.0","@typescript-eslint/eslint-plugin":"^7.13.1","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.8_1719073716501_0.5316027541591857","host":"s3://npm-registry-packages"}},"0.2.9":{"name":"typroof","version":"0.2.9","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.9","homepage":"https://github.com/Snowfly-T/typroof","bugs":{"url":"https://github.com/Snowfly-T/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"dfea1fc419fb6a3b0ecc8dbd03e6d6d31429fc83","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.9.tgz","fileCount":116,"integrity":"sha512-4BBOK1KO5G0Z8RqgctKF9fZL9LZTFc+NcfCN8vlvwZYNPdHa1JK/kU3MQkYHEH9jY4yDZBFUNzcLxOnzKEyJ7g==","signatures":[{"sig":"MEQCIHtnGunA+2qk1IPRJJHX3hjnjbTfe0fpSs4FVb1YcN9nAiBEvM5YTwVO19bSOFTaDTtiC9OmL+eWqb0xgtt8jg6iYA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9825184},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"2f7004568da6bc4dd3c4a715c7b08569ded42f67","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --no-error-on-unmatched-pattern --report-unused-disable-directives-severity error --max-warnings 0","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && rimraf -g ./dist/tools/**/*.{js,d.ts.map} && replace-in-file \"/^\\/\\/# sourceMappingURL=.+$/mg\" \"\" ./dist/tools/**/*.d.ts --isRegex && cpy ./dist/**/* ./build/ && rimraf dist && replace-in-file \"/^\\s*\\/\\/ eslint-disable-next-line .+$/mg\" \"\" ./build/**/*.js --isRegex && prettier --log-level=silent --print-width 80 --write ./build/ --ignore-path !build/ && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky\\\",\" \"\" ./build/package.json && prettier --log-level=silent --print-width 80 --write ./build/package.json --ignore-path !build/ && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --no-error-on-unmatched-pattern --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --no-error-on-unmatched-pattern --report-unused-disable-directives-severity error --max-warnings 0","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowfly-T/typroof.git","type":"git"},"_npmVersion":"10.8.1","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"22.3.0","dependencies":{"meow":"^13.2.0","chalk":"^5.3.0","esbuild":"^0.23.0","ts-morph":"^23.0.0","get-tsconfig":"^4.7.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.7","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","vitest":"^1.6.0","cpy-cli":"^5.0.0","prettier":"^3.3.2","tsc-alias":"^1.8.10","@vitest/ui":"^1.6.0","typescript":"^5.5.3","@types/node":"^20.14.9","lint-staged":"^15.2.7","@types/eslint":"^8.56.10","@commitlint/cli":"^19.3.0","replace-in-file":"^8.0.2","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^1.6.0","eslint-plugin-import":"^2.29.1","eslint-plugin-sonarjs":"^0.25.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.15.0","prettier-plugin-packagejson":"^2.5.0","@typescript-eslint/eslint-plugin":"^7.15.0","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-sort-destructure-keys":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.9_1719917740617_0.9316506946329808","host":"s3://npm-registry-packages"}},"0.2.10":{"name":"typroof","version":"0.2.10","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.10","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"fbad9b67274475e6481adc01a9cda8936c60a47d","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.10.tgz","fileCount":116,"integrity":"sha512-3oXuF4I2rW0WL0Eel9WyE9i1tGCEPH161FfPbxeIwqB+i+61iEabKAEuvrwY6lzNV+aCRRIPW+Cbz2bim+IK1A==","signatures":[{"sig":"MEUCIQCEdjLiJScj2ZR8uGHzFLkDKpGtIo9h0CaAwuRxCzzjXgIgUJKDNVwqs437aIE4+KkyWTOc1MjrA/A/YU79vSPqPb8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9825764},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"7e7ff64f452bc526c59b8ed06446f65823355eef","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --no-error-on-unmatched-pattern --report-unused-disable-directives-severity error --max-warnings 0","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && rimraf -g ./dist/tools/**/*.{js,d.ts.map} && replace-in-file \"/^\\/\\/# sourceMappingURL=.+$/mg\" \"\" ./dist/tools/**/*.d.ts --isRegex && cpy . ../../build/ --cwd=dist && rimraf dist && replace-in-file \"/^\\s*\\/\\/ eslint-disable-next-line .+$/mg\" \"\" ./build/**/*.js --isRegex && prettier --print-width 80 --write ./build/**/*.{js,d.ts} --ignore-path '!build/**/*' && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky\\\",\" \"\" ./build/package.json && prettier --log-level=silent --print-width 80 --write ./build/package.json --ignore-path '!build/**/*' && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --no-error-on-unmatched-pattern --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md} && prettier --write --parser json .hintrc","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --no-error-on-unmatched-pattern --report-unused-disable-directives-severity error --max-warnings 0","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"10.9.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"22.10.0","dependencies":{"meow":"^13.2.0","chalk":"^5.3.0","esbuild":"^0.24.0","ts-morph":"^24.0.0","get-tsconfig":"^4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","husky":"^9.1.6","eslint":"^8.57.1","rimraf":"^6.0.1","vitest":"^2.1.3","cpy-cli":"^5.0.0","prettier":"^3.3.3","tsc-alias":"^1.8.10","@vitest/ui":"^2.1.3","typescript":"^5.6.3","@types/node":"^22.7.8","lint-staged":"^15.2.10","@types/eslint":"^8.56.12","@commitlint/cli":"^19.5.0","replace-in-file":"^8.2.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^2.1.3","eslint-plugin-import":"^2.31.0","eslint-plugin-sonarjs":"^0.25.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.11.0","prettier-plugin-packagejson":"^2.5.3","@typescript-eslint/eslint-plugin":"^8.11.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-sort-destructure-keys":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.10_1729587916117_0.0722526754342041","host":"s3://npm-registry-packages"}},"0.2.11":{"name":"typroof","version":"0.2.11","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.2.11","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"36245586b056c45461d49022b3c4cea7135f1f5f","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.2.11.tgz","fileCount":117,"integrity":"sha512-I1bshr0WaufgRXcEdJAgAi5MgHD2KRlSoz9zcDvJSY6wELOfv/UZi1a35iIm5Uhg77Ar9K17rNtf4CFaUBbvnA==","signatures":[{"sig":"MEUCIGAapyN+RgP9nOvBMOvnwbwmoQjgLqykj0YInUFiKfheAiEAsWM4GdQGPFx0x2a6YFMlmUx02BlEnGGrauRWGQWBbWw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9841623},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"ee45e6c82aad3b28fe80eb86aae7437db702488c","scripts":{"lint":"eslint {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --no-error-on-unmatched-pattern --report-unused-disable-directives-severity error --max-warnings 0","test":"vitest run","build":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json && rimraf -g ./dist/tools/**/*.{js,d.ts.map} && replace-in-file \"/^\\/\\/# sourceMappingURL=.+$/mg\" \"\" ./dist/tools/**/*.d.ts --isRegex && cpy . ../../build/ --cwd=dist && rimraf dist && replace-in-file \"/^\\s*\\/\\/ eslint-disable-next-line .+$/mg\" \"\" ./build/**/*.js --isRegex && prettier --log-level=silent --print-width 80 --write ./build/**/*.{js,d.ts} --ignore-path !build/**/* && cpy ./package.json ./build/ && replace-in-file \"  \\\"private\\\": true,\" \"\" ./build/package.json && replace-in-file \"  \\\"prepare\\\": \\\"husky\\\",\" \"\" ./build/package.json && prettier --log-level=silent --print-width 80 --write ./build/package.json --ignore-path !build/**/* && cpy ./README.md ./build/ && cpy ./LICENSE ./build/ && cpy ./screenshot.png ./build/ && cpy ./screenshot.gif ./build/","clean":"rimraf dist build","format":"prettier --no-error-on-unmatched-pattern --write {src,test}/**/*.{js,ts,json} *.{js,cjs,mjs,ts,cts,mts,json,md}","test:ui":"vitest --ui --coverage.enabled=true","lint:fix":"eslint --fix {src,test}/**/*.{js,ts} *.{js,cjs,mjs,ts,cts,mts} --no-error-on-unmatched-pattern --report-unused-disable-directives-severity error --max-warnings 0","prebuild":"npm run clean","test:cov":"vitest run --coverage","test-types":"tsx src/cli.ts","test:watch":"vitest","test:watch-cov":"vitest --coverage"},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"10.9.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.2.0","dependencies":{"meow":"^13.2.0","chalk":"^5.3.0","esbuild":"^0.24.0","ts-morph":"^24.0.0","get-tsconfig":"^4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","eslint":"^8.57.1","rimraf":"^6.0.1","vitest":"^2.1.5","cpy-cli":"^5.0.0","prettier":"^3.3.3","tsc-alias":"^1.8.10","@vitest/ui":"^2.1.5","typescript":"^5.7.2","@types/node":"^22.9.3","lint-staged":"^15.2.10","@types/eslint":"^8.56.12","@commitlint/cli":"^19.6.0","replace-in-file":"^8.2.0","@types/lint-staged":"^13.3.0","@vitest/coverage-v8":"^2.1.5","eslint-plugin-import":"^2.31.0","eslint-plugin-sonarjs":"^0.25.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.15.0","prettier-plugin-packagejson":"^2.5.6","@typescript-eslint/eslint-plugin":"^8.15.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-sort-destructure-keys":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/typroof_0.2.11_1732533604034_0.6895032835765702","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"typroof","version":"0.3.0","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.3.0","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"2488b165fd08582a8dafacbc032cf6a3412aee4a","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.3.0.tgz","fileCount":115,"integrity":"sha512-er6x9BxVYwZJRpUdkhCXP0jIghA1YjOkWF8f3R7Hlj2ECTD7xrwtoYcESIx+gEoyDOxzYkkU1qTen3DWj7fL5w==","signatures":[{"sig":"MEUCIGNEUOzb4R9fYoAfX7qoKqHioJ5Mq4B9eJHldLaatlYEAiEApf0PTpqPbOPu66Ec31/8JKFvAPGQqkqOyVI/Atu1TeM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":125471},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"1a4e4143ce910fec69eec3c084cd473dea6e890d","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"10.9.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.3.0","dependencies":{"meow":"^13.2.0","chalk":"^5.3.0","esbuild":"^0.24.0","ts-morph":"^24.0.0","get-tsconfig":"^4.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.3.0_1732600429967_0.6564512262471072","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"typroof","version":"0.3.1","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.3.1","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"f07a664fc5e6344c284657ba93dfc42283dc0374","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.3.1.tgz","fileCount":118,"integrity":"sha512-voO65Dbd0THwEB+IT7FPoZGCr4qL2XAExjVkKoir/IADCjY2LFtGhjbC1b6Yva/3ooW0CHaCtKMJARcHwa99bA==","signatures":[{"sig":"MEUCIG0x828y52olEjGOFP3OzmH+wK4RBVJON7rfL3o5zs4pAiEAwVgjSRphnTrav8+jIwuZcUWkgMcYIvTeGwTlDmv2TgY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":132661},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"f2842f8f35cbaa2f9f8336654011292e3af09ecc","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"10.9.2","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.4.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.0","ts-morph":"^24.0.0","get-tsconfig":"^4.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.3.1_1734405634250_0.08321188435571458","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"typroof","version":"0.3.2","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.3.2","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"13e98899fbfba68f17f58ddaa4b7adf3f35daf67","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.3.2.tgz","fileCount":118,"integrity":"sha512-Kg/JhIYerxJFJpXKlkLx3o0cN9Av/QlrTdNa1eSuP/RK5AG4+Onem1TOAnEkEu7OuUZohjX5aKNr+5FjZofzag==","signatures":[{"sig":"MEUCIFdOaGw2846O3SHwNg1afzJUr6AlMyGYUHfKCUnnhOYGAiEAqWvrZX2hq/gsO+UHRAsb2DRvTi2Gy1kRCvZt5JiwZok=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":132672},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"2fbada7c335a7ba273b1137d000269d545d3d096","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"10.9.2","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.4.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.0","ts-morph":"^24.0.0","get-tsconfig":"^4.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.3.2_1734409420727_0.7685118566451048","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"typroof","version":"0.3.3","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.3.3","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"16dfafbb8a2257ca03a98c2315e7d770ab084b6b","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.3.3.tgz","fileCount":118,"integrity":"sha512-ox8UaoPVZAAnc0niA5LbZ8YgKwRkc7wpEg0WW1k6nE850vgugDuAc57NUBkzM4St3Pe5Kz4ygBDfQO1/ztaWvQ==","signatures":[{"sig":"MEUCIQCbS61XTbYR3YL6VcGhNfxY5XXaINEYnQYWI3KM7pIw0QIgInHW0LzMUvhIX+0qZZiPK2dXeSXxsa6tHygwNpxJgSE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135101},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"4696e9481701dbd8d46349d07cd865ab6535f66c","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"10.9.2","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.4.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.0","ts-morph":"^24.0.0","get-tsconfig":"^4.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.3.3_1734524556780_0.36365358071475984","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"typroof","version":"0.3.4","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.3.4","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"c9363ef0d85f94650828dd2ef4ca0926fb08077c","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.3.4.tgz","fileCount":118,"integrity":"sha512-wcLR37MbyBo0oWtiRy+dy9L/B29CfEZChTWiQDhPTnxK4wBbzWEyjSLQS0WyaP2z4Uvcdv87ra/dFIA+kSuVzQ==","signatures":[{"sig":"MEQCIFBoelSxI3GKv6+Gh6hCSA8jMs0VVxPvOyq2/5h7ECzcAiAkDXxGmsK4oqCsAhC/fcdMCuIfGGqpM7yE6TFt+OT1Zg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135109},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"1c17a4e61fcaa0eaa375d9fa860138a60658fb3b","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"10.9.2","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.4.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.0","ts-morph":"^24.0.0","get-tsconfig":"^4.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.3.4_1734525303982_0.12178016839758521","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"typroof","version":"0.3.5","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.3.5","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"e7efbe8bc9cf86b30350c6eb56b295266e6cf8ed","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.3.5.tgz","fileCount":118,"integrity":"sha512-UysJO9WMNjd60nYqSaj9ToNbnhgLt7rEf7Uk/Dpri1kH1YzA54eArWjkUyhWFiTmvQ0CxRHeMBTXtfAUHOlTtw==","signatures":[{"sig":"MEUCIAExk8N/Ll+AH88TWM5911q4rLFAmWSqc4uwuZjcpdxbAiEAmjW24ulqA2kepDo3AjYukMBsCHKOg8qC6TIV16yvVd8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135147},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"140a2607fdb512e110d1095ac813670bbacd1ac2","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"10.9.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.3.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.2","ts-morph":"^24.0.0","get-tsconfig":"^4.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.3.5_1734859519974_0.4835307085900691","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"typroof","version":"0.3.6","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.3.6","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"af8f7583c36a2f456843d0a0b7cf5ca75daaacc9","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.3.6.tgz","fileCount":118,"integrity":"sha512-zulu49Slg7OuQ9igMQelZF4Qw7yKvXh5LigrwYYE1y/p5Q6hzc2ZdhVinGZfWcSSMBaGQwK/KFVSqUosHLwVQw==","signatures":[{"sig":"MEUCIQD1rMWiF1dsLvMDfk0sJqGCQe265sJUmDQGbWIM1oxrlAIgRBwmDDFnEo3xeFcWK/yHeGbHowL15qHSqlE9MSD4O8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135148},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"aa28083b144a2299b248791ff822f2ea5bf1a898","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.0.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.6.1","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.2","ts-morph":"^25.0.0","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.3.6_1738057699293_0.5271619662057976","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"typroof","version":"0.3.7","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.3.7","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"706b0fbdd27b040dfb3f11b49105b2ddcdff074d","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.3.7.tgz","fileCount":118,"integrity":"sha512-l0+Sakbeo+OC8iMs0XlabkQJjfFGmzP4Hzf6PQ0WLc/wet0AeOCvL/EoDoifPHQP/B7MaXq2+dhIZ1ttYGB0fg==","signatures":[{"sig":"MEUCIQD222emR3buWMz0CiPCQ2m6cvDI04193UwiAQAieXVZlQIgRJ4+Gk9wzwj6IjnMQKHhZhPkUsUg7dJGYopNgIETnVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144302},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"4f0f4921478b7972cb1afa906d76f93242b7f282","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.0.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.6.1","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.2","ts-morph":"^25.0.0","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.3.7_1738134366547_0.22276316695847242","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"typroof","version":"0.3.8","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.3.8","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"b11f86628d0648bf38a2fe98ddc0e388f131a593","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.3.8.tgz","fileCount":118,"integrity":"sha512-Q07zXn3i2/dkcwGfSaR+OxnIco4bK9SWUN8KKtXfBuKQhqfaqLnGea3quRRfvi2oul+oL0wA5lqTjxOFcw3/cw==","signatures":[{"sig":"MEUCIQDHczOZ5ZmR6vH7XYwpE8ktoHamc6opZcIQbY9SQh7a/wIgIU/emhCF268UsGtSiOIZby3KHV7vYrSoiLsk2PAAfXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144860},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"89effc5cefa118c94fc7962da28ea87fea3e19b8","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.0.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.6.1","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.2","ts-morph":"^25.0.0","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.3.8_1738138605320_0.6326702920891607","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"typroof","version":"0.4.0","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.4.0","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"2280810c41e08e4ce48e47acc51f390117523b4e","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.4.0.tgz","fileCount":119,"integrity":"sha512-CFW3Qdg4Ocp7TM2jubO+e2SXMpvAjRwY77hT3WyD71kmkm6hQUz84juRrZXQgSrmX82JLSp9xdssmRqrGlKYLg==","signatures":[{"sig":"MEYCIQCBU080vMLvWCt86N6AO0CfNF1r30xF/nA1M+o0/L5tsgIhAIDYxgLdnbGoBfhOZ6qqNRmfUEytXKBjKonWEv/ZpHg9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158894},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"65cabf21905f8101e03793b080660e7904de8c7f","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.0.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.7.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.2","ts-morph":"^25.0.1","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.4.0_1738840606514_0.1568046432222605","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"typroof","version":"0.4.1","keywords":["typescript","typroof","test","check","static analysis"],"author":{"name":"Snowflyt","email":"gaoge011022@163.com"},"license":"MIT","_id":"typroof@0.4.1","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"6be8e6aea7c4437e035c43f0edfa47ad94c62889","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.4.1.tgz","fileCount":119,"integrity":"sha512-+kIXCWLqbo5rC34puqgUr3Brg7df4E2Yw/xCxanhu530n7WufrVpmS9vFbGQnoDrVxMUMXg/xY5KrFvXQ7Gu+A==","signatures":[{"sig":"MEYCIQC0BLl3dKvI4pnUc1/06shY5RwBgSjGTOb0Sii2FzhLAAIhAPrmJstdEIStHGyIVKhVaVP6fbeQsz0XlbPBZHw5noBz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159322},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"e43d548f32df56e7110c0b489991b892e3261243","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.0.0","description":"🚀 Revolutionize your TS type testing with a fast, smooth, and flexible WYSIWYG experience!","directories":{},"_nodeVersion":"23.7.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.24.2","ts-morph":"^25.0.1","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.4.1_1738843892785_0.3807098765435317","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"typroof","version":"0.4.2","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.4.2","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"e06819bf167b72ee5fd0415a06c1649c6d1c2ff8","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.4.2.tgz","fileCount":119,"integrity":"sha512-aTHVsudMgBkUpdOv+7WnJbi2hOXsh/IW01FWsymhvN7hauZUxV063TKOK8LoYaD0oZkbp43pkbsLhTgOX86fQw==","signatures":[{"sig":"MEQCIHDpX44YbPb9fHSuMOk0V5nOXFU3JcOXKaVweIHyRJMgAiBsE6JVsYB3TfN/bDGURvMFthPXTszVJPgVro4dfzVH2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159135},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"843b9481240e1f0315b3600219452851ea7c0cf4","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.1.0","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"23.8.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.25.0","ts-morph":"^25.0.1","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.4.2_1741505198435_0.26187960514094755","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"typroof","version":"0.4.3","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.4.3","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"532359da3ebd241347179af4b7f5613f52b22573","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.4.3.tgz","fileCount":119,"integrity":"sha512-5E3q206xikXWP3HICbL5d2ufEUBOYoq6ku3nIv1i1U0tkmJ5PJbsz/xbPDy2keqV3HK8WVE71Jekm4ayX14ztQ==","signatures":[{"sig":"MEUCIQCHVBPDkxXuKXZck9Ji+a46LyYEPWQa1971VlGsdBHRPgIgK1O37ZWbrFrEmYOP5Ja0E5N/qDjDCwcACjD/5815Z1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159301},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"8c9caaf2d118db08443d31a0eaec9754ea9fe78c","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.1.0","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"23.9.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.25.1","ts-morph":"^25.0.1","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.4.3_1742284358259_0.8041575284598299","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"typroof","version":"0.5.0","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.5.0","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"b0604f06850fec908330f830349ef3f59d2f7f30","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.5.0.tgz","fileCount":119,"integrity":"sha512-0xIui9go4LHIxMNgwb8okLM3PSdYmHtl25YYMo5Eudp6ggn7RDrdTFHYdd2a4pUw6eZneHYMH79YlV478yi1EQ==","signatures":[{"sig":"MEYCIQC6oJ7OsQBqmnDtGPeTF3LHBl6o5MnRaUQKpWp0HygGdgIhAOxZIBXuiWJmuHCSoKh7GgAlhyk8sE7GBRJv28r4P6b/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176443},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","gitHead":"2b29e31515da384bd6a3ecc88f70a514e3cf92a8","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.1.0","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"23.9.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.25.1","tinyglobby":"^0.2.12","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.5.0_1742362438193_0.3447119581448135","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"typroof","version":"0.5.1","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.5.1","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"55b776c54c13e422055db01bdcd5de2d17c29336","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.5.1.tgz","fileCount":119,"integrity":"sha512-yVJ1g077JcIuNnmkhJLWY7c0taCmjnBqURL0mzUpA9cHAc8uwYDN6xDI+RBnCzfBx1ZowfHQadOo5nWrdvToBg==","signatures":[{"sig":"MEUCIAkQrqlj3001PdOizuPgxP69IQZ14ha8nKK/7sNBXHTlAiEA/3K4tuCqV0/7xi5bW7249gcamlkgF6dcbpUajRo0kRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176487},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","engines":{"node":">=18.0.0"},"gitHead":"7dd962bb31c9e62e41aa531efd4fdba01b112201","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.1.0","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"23.9.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.25.1","tinyglobby":"^0.2.12","typescript":"4.x || 5.x","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.5.1_1742364938588_0.36982365976080267","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"typroof","version":"0.5.2","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.5.2","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"099693c00548345400f75861b6a3fbfc6a2046a6","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.5.2.tgz","fileCount":84,"integrity":"sha512-57Lq63SH0fyA81J0V/pMPmpJgeB9tfeO4JlxcGxy7lcn2LG0pjnDjhmYaNmlcmXP8Mk77JJcDxqu78RJ95Jg7w==","signatures":[{"sig":"MEUCIHwxAhhDOkD7gCfxzcW1P2gyhVZ8RWoOur14fVxLxv3HAiEAvexqZtT6ykpsFDd3RBuXwHep+XkiLkWOZgD3Bn+MvKE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152397},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","engines":{"node":">=18.0.0"},"gitHead":"6e53400edd0a8d9f507d07d9a4489b38ba375a14","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.3.0","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"23.11.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.25.4","tinyglobby":"^0.2.13","typescript":"4.x || 5.x","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.5.2_1746599971162_0.36611378299066466","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"typroof","version":"0.5.3","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.5.3","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"767ad2ac345db3466185fc27633ec5f185c36f8e","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.5.3.tgz","fileCount":84,"integrity":"sha512-2phVFzgd6MtmyNnk10QrZIQKlT2kGB+2e6RKkdq96BIeMBQmOvKcv16FpDYomtXIiKUdzCVqWSn92Zl8jPEdMw==","signatures":[{"sig":"MEQCIHWfFZeuwG7rzJ5KODunHFUa+ScODmhwRulX7yIUgaAeAiBBAvCvOV/p/pCn5wCXRqTNi1oKWch/IOlziC2D42g+yw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156901},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","engines":{"node":">=18.0.0"},"gitHead":"12bea1fcdc622b8f430278e70fad136d53697f57","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.3.0","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"24.0.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.25.4","tinyglobby":"^0.2.13","typescript":"4.x || 5.x","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.5.3_1746684977664_0.8458172720079693","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"typroof","version":"0.5.4","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.5.4","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"32fc1f7f3483fdccb0811ad69533067f29224daa","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.5.4.tgz","fileCount":84,"integrity":"sha512-Owt+XURtnBu8n2iKHnAUuYOIrUKE4BQVlYupwbm8W5dOgD83X0onXR78IVekiujgxlRvldINDMGRXrl/GxgGdA==","signatures":[{"sig":"MEQCIHdZNK9lEY+1QOGhHC4pE3IyDI51xPQ6+aHATzYN7dErAiBkc9knYob7CDtWFQc7VebaqEQWDDTvUBJ/zJ2uHFumlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156902},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","engines":{"node":">=18.0.0"},"gitHead":"3956bd31defd3d43732d6ec622c35512d3068917","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.3.0","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"24.0.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.25.4","tinyglobby":"^0.2.13","typescript":"4.x || 5.x","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.5.4_1746685553262_0.420121103932368","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"typroof","version":"0.5.5","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.5.5","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"d1409c967de6c743df0c7c36d7b0dd97988e0402","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.5.5.tgz","fileCount":84,"integrity":"sha512-Mg20fPQ42kKWx6qWM8LWpLfvrTDaNvEqnCGQEqjJ1jZvO+vv8qOPOgsYYXtmUY0Jq+A+O+yUSRp8Kxui73om9Q==","signatures":[{"sig":"MEUCIQD0F8gtirRChriT94zb0iMVv6eEyQpfeNU7NImutGwHIwIgB41J1VAkst3MbTDepgZQrxgkza2YeKbl+AcumDFioag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157066},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","engines":{"node":">=18.0.0"},"gitHead":"fd23346b5bacfb988a8192edb52db15d38326d84","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.3.0","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"24.0.0","dependencies":{"meow":"^13.2.0","esbuild":"^0.25.4","tinyglobby":"^0.2.13","typescript":"4.x || 5.x","get-tsconfig":"^4.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.5.5_1746686773444_0.8822229480883637","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"typroof","version":"0.5.6","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.5.6","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"532c45eaf348c6525bb8ceb5ecd51d1423b52db8","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.5.6.tgz","fileCount":84,"integrity":"sha512-2MpthnqhT5nb5xEdVMmDX9KggCDqriyMufe5tDWyjTBJ1IPEeAIOV6BXjbnb3xKw0V1MBi0i5SCtQfw8PR1bFw==","signatures":[{"sig":"MEYCIQDcp2fpCT3SeIccWeSKukgyMNeIL6uVBmo0mXzJOeBG4gIhAO1587Bl13OGuVk1vbG7QbKY3l6kWOxVsALi86FrgMWJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157779},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","engines":{"node":">=18.0.0"},"gitHead":"d8bd86fb4eff24c06e222f75a687c59a30da8506","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"deprecated":"This version is deprecated due to an incorrect 'engines.node' field in package.json.","repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"25.1.0","dependencies":{"meow":"^14.0.0","esbuild":"^0.27.0","tinyglobby":"^0.2.15","typescript":"4.x || 5.x","get-tsconfig":"^4.13.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.5.6_1762962020921_0.6003206589897689","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"typroof","version":"0.5.7","keywords":["typescript","typroof","test","check","static analysis"],"author":{"url":"Snowflyt","name":"Ge Gao","email":"gaoge011022@gmail.com"},"license":"MIT","_id":"typroof@0.5.7","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"bin":{"typroof":"cli.js"},"dist":{"shasum":"a208b318ef9d149321a92e10b3bc2d81a67b1b74","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.5.7.tgz","fileCount":84,"integrity":"sha512-eLW8kNKo9hfiCyYJLBdo4RtScFa6FTr21FNquwRKaSAhGbeFAC++YfOzra7xGscR2VoTLyey4vdpsqOIhAqDSQ==","signatures":[{"sig":"MEUCIQDtuRsBe/lAs28kbWUYlTB1SzbZNcfKdF2NIdJ8EBo/rAIgXyB37mY3t5Cs2VENoTwIsvwSp3uRpDFiLuBz3czDSzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157779},"main":"./index.js","type":"module","types":"./index.d.ts","module":"./index.js","engines":{"node":">=20.0.0"},"gitHead":"18429232dfdf3ba361be8921818ef32636fe4942","_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"deprecated":"This version was published with an incorrect semver tag. Please use typroof@0.6.0 or later.","repository":{"url":"git+https://github.com/Snowflyt/typroof.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","directories":{},"_nodeVersion":"25.1.0","dependencies":{"meow":"^14.0.0","esbuild":"^0.27.0","tinyglobby":"^0.2.15","typescript":"4.x || 5.x","get-tsconfig":"^4.13.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/typroof_0.5.7_1762963274515_0.5400729852156012","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"typroof","version":"0.6.0","description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","keywords":["typescript","typroof","test","check","static analysis"],"homepage":"https://github.com/Snowflyt/typroof","bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"repository":{"type":"git","url":"git+https://github.com/Snowflyt/typroof.git"},"license":"MIT","author":{"name":"Ge Gao","email":"gaoge011022@gmail.com","url":"Snowflyt"},"type":"module","main":"./index.js","module":"./index.js","types":"./index.d.ts","bin":{"typroof":"cli.js"},"dependencies":{"esbuild":"^0.27.0","get-tsconfig":"^4.13.0","meow":"^14.0.0","tinyglobby":"^0.2.15","typescript":"4.x || 5.x"},"engines":{"node":">=20.0.0"},"gitHead":"18429232dfdf3ba361be8921818ef32636fe4942","_id":"typroof@0.6.0","_nodeVersion":"25.1.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-X2nJgDKM3XZrbaYYY1ds49Gh2A1ufkLPGtoluRyfvTd/8D3o5fvccQdBcZ8eeRuBBarsSRLC3RXFE5B40Kv90w==","shasum":"43655f8e670527ff55c97994c90b1deb96e1eacb","tarball":"https://registry.npmjs.org/typroof/-/typroof-0.6.0.tgz","fileCount":84,"unpackedSize":157779,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDBOzHCM7zp0HWtHPfTM25YHNsA8SvMfHTOYUClMdreBAIgcLszti9U1cdv1X9DzHH+BFLRYPfRpJr17Wm9tn3Pdcs="}]},"_npmUser":{"name":"snowflyt","email":"gaoge011022@163.com"},"directories":{},"maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/typroof_0.6.0_1762963755417_0.5949609664671682"},"_hasShrinkwrap":false}},"time":{"created":"2023-11-16T09:53:20.016Z","modified":"2025-11-12T16:09:15.813Z","0.0.1-alpha.0":"2023-11-16T09:53:20.267Z","0.0.1-alpha.1":"2023-12-25T06:57:58.021Z","0.1.0":"2023-12-25T07:23:43.462Z","0.1.1":"2023-12-25T14:54:51.008Z","0.1.2":"2023-12-26T12:52:58.943Z","0.0.0-dev.2024.1.11":"2024-01-11T10:45:39.617Z","0.0.0-dev.2024.1.11-2":"2024-01-11T10:51:56.417Z","0.2.0":"2024-01-11T11:07:22.526Z","0.2.1":"2024-01-11T12:57:54.961Z","0.2.2":"2024-01-13T12:49:54.355Z","0.2.3":"2024-01-13T14:12:01.005Z","0.0.0-dev.2024.1.13":"2024-01-13T15:26:39.659Z","0.0.0-dev.2024.1.14":"2024-01-13T16:22:15.472Z","0.2.4":"2024-01-13T16:40:19.184Z","0.2.5":"2024-01-16T11:14:58.175Z","0.2.6":"2024-03-09T16:36:41.313Z","0.2.7":"2024-03-21T14:35:36.481Z","0.2.8":"2024-06-22T16:28:36.818Z","0.2.9":"2024-07-02T10:55:40.981Z","0.2.10":"2024-10-22T09:05:16.801Z","0.2.11":"2024-11-25T11:20:04.313Z","0.3.0":"2024-11-26T05:53:50.132Z","0.3.1":"2024-12-17T03:20:34.460Z","0.3.2":"2024-12-17T04:23:40.910Z","0.3.3":"2024-12-18T12:22:36.973Z","0.3.4":"2024-12-18T12:35:04.157Z","0.3.5":"2024-12-22T09:25:20.152Z","0.3.6":"2025-01-28T09:48:19.500Z","0.3.7":"2025-01-29T07:06:06.757Z","0.3.8":"2025-01-29T08:16:45.480Z","0.4.0":"2025-02-06T11:16:46.786Z","0.4.1":"2025-02-06T12:11:33.024Z","0.4.2":"2025-03-09T07:26:38.612Z","0.4.3":"2025-03-18T07:52:38.454Z","0.5.0":"2025-03-19T05:33:58.386Z","0.5.1":"2025-03-19T06:15:38.763Z","0.5.2":"2025-05-07T06:39:31.366Z","0.5.3":"2025-05-08T06:16:17.856Z","0.5.4":"2025-05-08T06:25:53.471Z","0.5.5":"2025-05-08T06:46:13.619Z","0.5.6":"2025-11-12T15:40:21.087Z","0.5.7":"2025-11-12T16:01:14.678Z","0.6.0":"2025-11-12T16:09:15.604Z"},"bugs":{"url":"https://github.com/Snowflyt/typroof/issues"},"author":{"name":"Ge Gao","email":"gaoge011022@gmail.com","url":"Snowflyt"},"license":"MIT","homepage":"https://github.com/Snowflyt/typroof","keywords":["typescript","typroof","test","check","static analysis"],"repository":{"type":"git","url":"git+https://github.com/Snowflyt/typroof.git"},"description":"TypeScript type testing with a fast CLI tool and a smooth WYSIWYG editor experience.","maintainers":[{"name":"snowflyt","email":"gaoge011022@163.com"}],"readme":"<h1 align=\"center\">Typroof</h1>\n\nTypeScript **type testing** with a fast **CLI** tool and a smooth **WYSIWYG editor experience**.\n\n[![downloads](https://img.shields.io/npm/dm/typroof.svg?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/typroof)\n[![version](https://img.shields.io/npm/v/typroof.svg?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/typroof)\n[![test](https://img.shields.io/github/actions/workflow/status/Snowflyt/typroof/ci.yml?label=test&style=flat&colorA=000000&colorB=000000)](https://github.com/Snowflyt/typroof/actions/workflows/ci.yml)\n[![license](https://img.shields.io/npm/l/typroof.svg?style=flat&colorA=000000&colorB=000000)](https://github.com/Snowflyt/typroof)\n\nhttps://github.com/user-attachments/assets/53aa8f97-c580-428e-89b2-2d07d1c5680d\n\n## Installation\n\n```shell\nnpm install --save-dev typroof\n```\n\n## Quickstart\n\n### Define your types\n\nAssume that you write a `string-utils.ts` file with the following type definitions:\n\n```typescript\nexport type Append<S extends string, Ext extends string> = `${S}${Ext}`;\nexport type Prepend<S extends string, Start extends string> = `${Start}${S}`;\n\nexport const append = <S extends string, Ext extends string>(s: S, ext: Ext): Append<S, Ext> =>\n  `${s}${ext}`;\n```\n\n### Add a type test\n\nCreate a `string-utils.proof.ts` file in the same directory to test them:\n\n```typescript\nimport { describe, equal, error, expect, extend, it, test } from 'typroof';\nimport { append } from './string-utils';\nimport type { Append, Prepend } from './string-utils';\n\ntest('Append', () => {\n  expect<Append<'foo', 'bar'>>().to(equal<'foo'>);\n  expect<Append<'foo', 'bar'>>().to(extend<string>);\n  expect<Append<'foo', 'bar'>>().not.to(extend<number>);\n  expect(append('foo', 'bar')).to(equal('foobar' as const));\n});\n```\n\nOops! Seems we have made a mistake, and TypeScript language server is already showing you the error message in your editor:\n\n```typescript\nexpect<Append<'foo', 'bar'>>().to(equal<'foo'>);\n//                                ~~~~~~~~~~~~\n//            Argument of type '...' is not assignable to parameter\n//         of type '\"Expect `'foobar'` to equal `'foo'`, but does not\"'\n```\n\nThis is the **WYSIWYG editor experience** Typroof provides—instant feedback right in your editor.\n\nLet’s ignore this error for now and see what happens when we run the tests.\n\n### Run the CLI\n\nRun `typroof` to test your type definitions:\n\n```shell\nnpx typroof\n```\n\nYou’ll see the error clearly reported:\n\n```shell\n❯ src/string-utils.proof.ts (1)\n  × Append\n    ❯ src/string-utils.proof.ts:6:37\n      Expect Append<'foo', 'bar'> to equal \"foo\", but got \"foobar\".\n\n Test Files  1 failed (1)\n      Tests  1 failed (1)\n   Start at  17:50:11\n   Duration  2ms\n```\n\nLet’s fix the error in the test file:\n\n```diff\n- expect<Append<'foo', 'bar'>>().to(equal<'foo'>);\n+ expect<Append<'foo', 'bar'>>().to(equal<'foobar'>);\n```\n\nSuccess! You’ve written and verified your first type test with Typroof. 🎉\n\n```shell\n✓ src/string-utils.proof.ts (1)\n  ✓ Append\n\n Test Files  1 passed (1)\n      Tests  1 passed (1)\n   Start at  17:51:26\n   Duration  2ms\n```\n\n> [!NOTE]\n>\n> By default, Typroof does not perform type checking on test files. This allows matchers like `.to(error)` to work properly without requiring manual `@ts-expect-error` comments. If you want to enable type checking on your test files, you can use the `--check` option when running Typroof:\n>\n> ```shell\n> npx typroof --check\n> ```\n\n## Usage\n\nAfter getting started with Typroof, let’s explore its core concepts and patterns in more depth.\n\n### API Overview\n\nTyproof provides a familiar testing API that resembles Jest:\n\n- **`test`/`it`**: Create individual test cases\n- **`describe`**: Group related tests together\n- **`expect`**: Create an assertion on a type or value\n- **`.to(matcher)`**: Apply a matcher to validate the assertion\n- **`.not.to(matcher)`**: Negate a matcher expectation\n\n### Assertion Patterns\n\nTyproof offers flexible ways to write assertions:\n\n```typescript\n// Testing a type directly (most common for type utilities)\nexpect<MyType<Input>>().to(equal<Expected>);\n\n// Testing a value’s type (useful for functions)\nexpect(myFunction('input')).to(equal<ExpectedReturnType>);\n\n// Negating an assertion\nexpect<MyType>().not.to(beAny);\n\n// Testing for errors\n// @ts-expect-error\nexpect<InvalidType>().to(error);\n```\n\n### Matcher Flexibility\n\nMatchers can receive expected types in two ways:\n\n```typescript\n// As a type parameter (preferred for testing generic types)\nexpect<MyType<'input'>>().to(equal<'expected'>);\n\n// As a value parameter (useful for function return types)\nconst result = computeSomething();\nconst expected = computeSomethingElse();\nexpect(result).to(equal(expected));\n```\n\n### Composing Tests\n\n```typescript\ndescribe('StringUtils', () => {\n  describe('Append', () => {\n    it('concatenates two strings', () => {\n      expect<Append<'hello', ' world'>>().to(equal<'hello world'>);\n    });\n\n    it('returns a string type', () => {\n      expect<Append<'a', 'b'>>().to(extend<string>);\n    });\n  });\n\n  describe('Split', () => {\n    it('splits a string into tuple', () => {\n      expect<Split<'a-b-c', '-'>>().to(equal<['a', 'b', 'c']>);\n    });\n  });\n});\n```\n\n### Testing For Type Errors\n\nTest that invalid types correctly produce errors:\n\n```typescript\ndescribe('NumericUtilities', () => {\n  it('rejects non-numeric inputs', () => {\n    // @ts-expect-error - string is not assignable to number\n    expect<Add<'not-a-number', 5>>().to(error);\n  });\n});\n```\n\n### Running Tests\n\nRun tests with the Typroof CLI:\n\n```shell\nnpx typroof [optional path]\n```\n\nBy default, Typroof will find all `.proof.ts` files or files in `proof/` directories and analyze them. To customize which files to test, you can create a `typroof.config.ts` file in the root directory of your project. See [Configuration](#configuration) for more information.\n\n## Matchers\n\nMatchers are the core of Typroof’s assertion system. They let you validate type relationships and characteristics in your tests.\n\n### Matcher Basics\n\nEach matcher can be used with the `expect().to()` or `expect().not.to()` syntax:\n\n```typescript\n// Basic matcher usage\nexpect<MyType>().to(matcherName<OptionalTypeArg>);\n\n// Negated matcher usage\nexpect<MyType>().not.to(matcherName<OptionalTypeArg>);\n```\n\n### Built-in Matchers\n\nTyproof provides two categories of matchers for different testing needs:\n\n#### Equality and Basic Type Matchers\n\n| Matcher            | Description                                            | Example                                                    |\n| ------------------ | ------------------------------------------------------ | ---------------------------------------------------------- |\n| `equal<T>`         | Checks for exact type equality                         | `expect<'hello'>().to(equal<'hello'>)`                     |\n| `error`            | Verifies a type produces a compilation error           | `expect<ConcatString<'foo', 42>>().to(error)`              |\n| `beAny`            | Checks if a type is `any`                              | `expect<any>().to(beAny)`                                  |\n| `beNever`          | Checks if a type is `never`                            | `expect<never>().to(beNever)`                              |\n| `beNull`           | Checks if a type is `null`                             | `expect<null>().to(beNull)`                                |\n| `beUndefined`      | Checks if a type is `undefined`                        | `expect<undefined>().to(beUndefined)`                      |\n| `beNullish`        | Checks if a type is `null`, `undefined` or their union | <code>expect<null &#124; undefined>().to(beNullish)</code> |\n| `beTrue`/`beFalse` | Checks if a type is `true`/`false`                     | `expect<true>().to(beTrue)`                                |\n| `matchBoolean`     | Checks if a type is `true`, `false` or `boolean`       | `expect<boolean>().to(matchBoolean)`                       |\n\n#### Type Relationship Matchers\n\n| Matcher           | Description                                   | Example                                     |\n| ----------------- | --------------------------------------------- | ------------------------------------------- |\n| `extend<T>`       | Checks if a type is assignable to another     | `expect<'hello'>().to(extend<string>)`      |\n| `strictExtend<T>` | Like `extend` but stricter with `any`/`never` | `expect<string>().to(strictExtend<string>)` |\n| `cover<T>`        | Checks if a type is a supertype of another    | `expect<string>().to(cover<'hello'>)`       |\n| `strictCover<T>`  | Like `cover` but stricter with `any`/`never`  | `expect<string>().to(strictCover<'hello'>)` |\n\n### Matcher Examples\n\nTesting type utilities:\n\n```typescript\n// Testing a string template utility\ntype Prefix<T extends string, P extends string> = `${P}${T}`;\n\ntest('Prefix type', () => {\n  expect<Prefix<'World', 'Hello '>>().to(equal<'Hello World'>);\n  expect<Prefix<'file', 'index.'>>().to(extend<string>);\n  expect<Prefix<'foo', 'bar'>>().not.to(equal<'foobar'>);\n});\n```\n\nTesting for compilation errors:\n\n```typescript\n// Testing constraint violations\ntest('NumericId constraints', () => {\n  type NumericId<T extends number> = T;\n\n  expect<NumericId<42>>().to(extend<number>);\n\n  // @ts-expect-error - String not assignable to number\n  expect<NumericId<'42'>>().to(error);\n});\n```\n\n### Understanding Special Types\n\nTypeScript’s `any` and `never` types have special behavior in type relationships:\n\n- `any` is both a subtype and supertype of all types.\n- `never` is a subtype of all types but has no subtypes.\n\nThis can lead to unexpected results in type tests:\n\n```typescript\n// Regular extend allows any to be assigned to anything\nexpect<any>().to(extend<string>); // passes\n\n// strictExtend prevents this\nexpect<any>().not.to(strictExtend<string>); // passes\n```\n\nFor more predictable behavior with these types, use `strictExtend` and `strictCover` when testing type relationships involving `any` or `never`.\n\n## Configuration\n\nTyproof can be customized through a configuration file to control which files are tested and how tests are run.\n\n### Configuration File\n\nCreate a `typroof.config.ts` file in your project root:\n\n```typescript\nimport { defineConfig } from 'typroof/config';\n\nexport default defineConfig({\n  testFiles: '**/*.types.test.ts',\n});\n```\n\nYou can use either `.ts`, `.mts`, `.cts`, `.js`, `.mjs` or `.cjs` as the extension of the config file. The priority is `.ts` > `.mts` > `.cts` > `.js` > `.mjs` > `.cjs`.\n\n### Available Options\n\n| Option             | Type                                | Default                                          | Description                                                                         |\n| ------------------ | ----------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------- |\n| `tsConfigFilePath` | `string`                            | `'./tsconfig.json'`                              | Path to the TypeScript configuration file                                           |\n| `testFiles`        | <code>string &#124; string[]</code> | `['**/*.proof.{ts,tsx}', 'proof/**/*.{ts,tsx}']` | Glob pattern(s) for test files                                                      |\n| `check`            | `boolean`                           | `false`                                          | Enable type checking on test files                                                  |\n| `checkFiles`       | <code>string &#124; string[]</code> | Same as `testFiles`                              | Glob pattern(s) for files to check. This option is only used when `check` is `true` |\n| `compilerOptions`  | `ts.CompilerOptions`                | `{}`                                             | Additional TypeScript compiler options to override those in tsconfig.json           |\n| `plugins`          | `Plugin[]`                          | `[]`                                             | Typroof plugins that extend functionality                                           |\n\n### Import Notice\n\nWhen creating your configuration file, import from the specific subpath:\n\n```typescript\n// ✅ Correct import\nimport { defineConfig } from 'typroof/config';\n```\n\n### CLI Usage\n\nYou can run Typroof from the command line:\n\n```shell\n# Run in current directory\nnpx typroof\n\n# Run in specific directory\nnpx typroof /path/to/project\n\n# Specify test files\nnpx typroof --files \"src/**/*.proof.ts\"\n\n# Use custom config file\nnpx typroof --config ./typroof.config.ts\n\n# Use custom tsconfig.json and enable type checking\nnpx typroof --check --project ./tsconfig.test.json\n\n# Get help\nnpx typroof --help\n```\n\nAvailable options:\n\n- `--files, -f`: Glob pattern(s) for test files.\n- `--config, -c`: Path to config file.\n- `--project, -p`: Path to tsconfig.json file.\n- `--check`: Enable type checking on test files.\n- `--check-files`: Glob pattern(s) for files to check. This option is only used when `--check` is enabled.\n- `--help`: Show help information.\n- `--version`: Show version information.\n\n## Programmatic Usage\n\nYou can use Typroof programmatically within your own Node.js scripts or tools:\n\n```typescript\nimport typroof, { formatGroupResult, formatSummary } from 'typroof';\n\n// Run Typroof with default options\nconst startedAt = new Date();\nconst results = await typroof();\nconst finishedAt = new Date();\n\n// Display results\nfor (const result of results) {\n  console.log(formatGroupResult(result.rootGroupResult));\n  console.log();\n}\n\n// Print summary\nconsole.log(\n  formatSummary({ groups: results.map((r) => r.rootGroupResult), startedAt, finishedAt }),\n);\n```\n\n### API Options\n\nThe `typroof()` function accepts the same options available in the configuration file, plus an additional `cwd` option:\n\n```typescript\n// Run with custom options\nconst results = await typroof({\n  // Standard config options\n  testFiles: ['src/**/*.proof.ts'],\n  compilerOptions: { strictNullChecks: true },\n  plugins: [],\n  // Additional API-only option\n  cwd: '/path/to/project', // Custom working directory\n});\n```\n\nThe `cwd` option sets the base directory for:\n\n- Finding the default `tsconfig.json` file (`${cwd}/tsconfig.json`).\n- Resolving relative paths in your configuration.\n\nIf not provided, `cwd` defaults to `process.cwd()`.\n\n## Plugin API & How It Works\n\nTyproof supports plugins to extend its functionality with custom matchers. The plugin system allows you to:\n\n- Create custom type matchers.\n- Share matchers as reusable packages.\n- Extend Typroof’s core functionality.\n\n### Creating a Custom Matcher\n\nA matcher in Typroof consists of two parts:\n\n1. **Type validator**: A type-level function that checks relationships at compile time.\n2. **Analyzer**: A runtime function that further analyzes types using the TypeScript compiler API, and reports errors in CLI.\n\nNote that many built-in matchers in Typroof are type-level only matchers whose analyzers are only used to report errors, e.g., `equal`, `extend`, `beNever`, etc. While some matchers require runtime analysis in its analyzer, e.g., `error`, which checks if a type emits an error with TypeScript compiler API.\n\nHere’s a simple custom matcher example (a type-level only matcher):\n\n```typescript\nimport { match } from 'typroof/plugin';\nimport type { Actual, Expected, Validator } from 'typroof/plugin';\n\n// 1. Create and export the matcher\nexport const startsWith = <U extends string>(prefix?: U) => match<'startsWith', U>();\n\n// 2. Define the validator type\ndeclare module 'typroof/plugin' {\n  interface ValidatorRegistry {\n    startsWith: StartsWithValidator;\n  }\n}\ntype Cast<T, U> = T extends U ? T : U;\n// Use a type-level function (i.e. HKT) to define a type-level validator\ninterface StartsWithValidator extends Validator {\n  // Return `true` or `false` to indicate whether the assertion passed or not\n  return: Actual<this> extends `${Cast<Expected<this>, string>}${string}` ? true : false;\n}\n\n// 3. Create a plugin to register the analyzer\nimport type { Plugin } from 'typroof/plugin';\n\nexport const startsWith = (): Plugin => ({\n  name: 'typroof-plugin-starts-with',\n  analyzers: {\n    // `actual` and `expected` are the types passed to the matcher (T and U).\n    startsWith: (actual, expected, { not, ts, typeChecker }) => {\n      // NOTE: This analyzer is only called when the type-level validation fails\n      // We use TypeScript compiler API to get the text of the type:\n      const actualType = typeChecker.typeToString(actual.type);\n      const expectedType = typeChecker.typeToString(expected);\n      // Throw a string to report the error\n      throw `Expected ${actual.text} ${not ? 'not ' : ''}to start with \"${expectedType}\", but got \"${actualType}\"`;\n    },\n  },\n});\n\n// 4. Use the plugin in your config\n// typroof.config.ts\nimport { defineConfig } from 'typroof/config';\n\nexport default defineConfig({\n  plugins: [startsWith()],\n});\n```\n\n`Validator`s in Typroof are type-level functions (HKTs) compatible with the [hkt-core](https://github.com/Snowflyt/hkt-core) V1 standard, see [its documentation](https://github.com/Snowflyt/hkt-core) for more information.\n\n### Deep Dive: Custom Error Messages for Validators\n\nIn the previous example, Typroof already automatically generates a compile-time error message if the assertion fails:\n\n```typescript\nexpect<'foobar'>().to(startsWith<'bar'>);\n//                    ~~~~~~~~~~~~~~~~~\n//    Argument of type '...' is not assignable to parameter\n//   of type \"Validation failed: startsWith<'foobar', 'bar'>\"\n```\n\nHowever, it’s not very readable, compared to Typroof’s built-in matchers:\n\n```typescript\nexpect<Append<'foo', 'bar'>>().to(equal<'foo'>);\n//                                ~~~~~~~~~~~~\n//            Argument of type '...' is not assignable to parameter\n//          of type \"Expect `'foobar'` to equal `'foo'`, but does not\"\n```\n\nThe magic behind this is that the `equal` matcher’s validator returns a string type instead of a boolean type if the assertion fails, which is used as the error message.\n\nLet’s rewrite the `startsWith` matcher to return a string type as the error message:\n\n```typescript\nimport type { Actual, Expected, IsNegated, Stringify, Validator } from 'typroof/plugin';\n\ndeclare module 'typroof/plugin' {\n  interface ValidatorRegistry {\n    startsWith: StartsWithValidator;\n  }\n}\n\ninterface StartsWithValidator extends Validator {\n  // `IsNegated<this>` is `true` if `.not` is used, otherwise `false`.\n  return: IsNegated<this> extends false ?\n    // If `.not` is not used\n    Actual<this> extends `${Cast<Expected<this>, string>}${string}` ?\n      true\n    : `Expect \\`${Stringify<Actual<this>>}\\` to start with \\`${Stringify<Expected<this>>}\\`, but does not`\n  : // If `.not` is used\n  Actual<this> extends `${Cast<Expected<this>, string>}${string}` ? false\n  : `Expect the type not to start with \\`${Stringify<Expected<this>>}\\`, but does`;\n}\n```\n\nThe exported `Stringify` utility type is used to convert a type to a literal string type, which is used as the error message. The implementation of `Stringify` is quite complex, and it is recommended to use it instead of implementing your own.\n\n> [!TIP]\n>\n> `Stringify` supports custom serializers. Say you have a custom type `interface Response<T> { code: number; data: T }`. Instead of receiving `\"{ code: number; data: string }\"` as the result of `Stringify<Response<string>>`, you might prefer the more concise `\"Response<string>\"`. You can achieve this by adding a custom serializer to `Stringify` via the [module augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation) syntax:\n>\n> ```typescript\n> import type { Serializer, Stringify, Type } from 'typroof/plugin';\n>\n> declare module 'typroof/plugin' {\n>   interface StringifySerializerRegistry {\n>     Response: { if: ['extends', Response<unknown>]; serializer: ResponseSerializer };\n>   }\n> }\n> interface ResponseSerializer extends Serializer<Response<unknown>> {\n>   return: `Response<${Type<this>['data']}>`;\n> }\n>\n> type TestResult = Stringify<Response<string>>;\n> //   ^?: \"Response<string>\"\n> ```\n>\n> Similar to `Validator`s, `Serializer`s are also type-level function but return a string type. The `Type<this>` utility type is used to get the type passed to the current serializer. Except for the `serializer` property, you also have to add a `if` property as a predicate to determine whether the serializer should be used. Valid forms of the `if` property are:\n>\n> - `['extends', T]`: The type must extend `T`.\n> - `['equals', T]`: The type must be exactly equal to `T`.\n> - A custom type-level function (HKT) that returns a boolean type. See the documentation of [hkt-core](https://github.com/Snowflyt/hkt-core) for more information.\n>\n> Custom serializers also boost `Stringify` utility’s speed in computing results, which can prevent Typroof from slowing down or crashing when handling complex types.\n\n### Deep Dive: Advanced Example - `error` Matcher\n\nUp to now, we have seen how to create a type-level only matcher. But what if we want to create a matcher that requires runtime analysis?\n\n`error` matcher checks if a type emits an error with TypeScript compiler API. It is a good example to show how to create a matcher that requires runtime analysis.\n\nLet’s take a look at how `error` is implemented:\n\n```typescript\nimport { match } from 'typroof/plugin';\n\nimport type { ToAnalyze } from 'typroof/plugin';\n\nexport const error = match<'error'>();\n\ndeclare module 'typroof/plugin' {\n  interface ValidatorRegistry {\n    error: ErrorValidator;\n  }\n}\ninterface ErrorValidator {\n  return: ToAnalyze<never>;\n}\n\nexport const errorPlugin = (): Plugin => ({\n  name: 'typroof-plugin-error',\n  analyzers: {\n    error: (actual, _expected, { diagnostics, not, sourceFile, statement }) => {\n      // Check if a diagnostic error exists for this node\n      const diagnostic = diagnostics.find((diagnostic) => {\n        const start = diagnostic.start;\n        if (start === undefined) return false;\n\n        const length = diagnostic.length;\n        if (length === undefined) return false;\n\n        const end = start + length;\n        const nodeStart = actual.node.getStart(sourceFile);\n        const nodeEnd = actual.node.getEnd();\n\n        return start >= nodeStart && end <= nodeEnd;\n      });\n\n      // Find @ts-expect-error comments that apply to this expression\n      const findTSExpectError = () => {\n        const sourceText = sourceFile.text;\n\n        // 1. Check for leading comments directly before the statement\n        const leadingComments =\n          ts.getLeadingCommentRanges(sourceText, statement.getFullStart()) || [];\n\n        // 2. Find any internal comments within the statement’s full text range\n        // This helps with multi-line expressions that have inline comments\n        const statementStart = statement.getFullStart();\n        const statementEnd = statement.getEnd();\n        const statementText = sourceText.substring(statementStart, statementEnd);\n\n        // Track all potential comment positions\n        const commentPositions: { start: number; end: number }[] = [\n          ...leadingComments.map((c) => ({ start: c.pos, end: c.end })),\n        ];\n\n        // Scan the statement for possible comment starts\n        let pos = 0;\n        while (pos < statementText.length) {\n          // Look for // comments\n          if (statementText.substring(pos, pos + 2) === '//') {\n            const startPos = statementStart + pos;\n            let endPos = statementText.indexOf('\\n', pos);\n            if (endPos === -1) endPos = statementText.length;\n            commentPositions.push({\n              start: startPos,\n              end: statementStart + endPos,\n            });\n            pos = endPos + 1;\n            continue;\n          }\n\n          // Look for /* */ comments\n          if (statementText.substring(pos, pos + 2) === '/*') {\n            const startPos = statementStart + pos;\n            const endPos = statementText.indexOf('*/', pos);\n            if (endPos !== -1) {\n              commentPositions.push({\n                start: startPos,\n                end: statementStart + endPos + 2,\n              });\n              pos = endPos + 2;\n              continue;\n            }\n          }\n\n          pos++;\n        }\n\n        // Check all comment positions for @ts-expect-error\n        for (const { end, start } of commentPositions) {\n          const commentText = sourceText.substring(start, end);\n          if (commentText.includes('@ts-expect-error')) {\n            // Ensure this @ts-expect-error is not already used by checking\n            // if there’s a diagnostic that starts at this exact position\n            const isUnused = !diagnostics.some(\n              (d) => d.start === start && d.code === 2578, // TypeScript’s code for @ts-expect-error\n            );\n            if (isUnused) return true;\n          }\n        }\n\n        return false;\n      };\n\n      // Check if error is triggered either by diagnostic or @ts-expect-error\n      const triggeredError = !!diagnostic || findTSExpectError();\n\n      if (not ? triggeredError : !triggeredError) {\n        const actualText = bold(actual.text);\n        throw (\n          `Expect ${actualText} ${not ? 'not ' : ''}to trigger error, ` +\n          `but ${not ? 'did' : 'did not'}.`\n        );\n      }\n    },\n  },\n});\n```\n\nThe `error` matcher returns `ToAnalyze<never>` as the return type of its validator, which means it requires runtime analysis. In the `error` example, the type-level validation step is omitted, so we simply pass `ToAnalyze<never>`. However, if you want to create a matcher that requires both type-level validation and runtime analysis, you can return `ToAnalyze<ValidatorReturnType>` as the return type of your validator—the validation result type can be accessed via `validationResult` in the 3rd argument of the analyzer.\n\nYou can still return booleans or strings as the return type of your validator in combination with `ToAnalyze<ValidatorReturnType>`, where the boolean or string indicates an early exit of the type-level validation step, and `validationResult` will be `undefined` in the analyzer if `false` or string is returned from the validator.\n\n### Publishing a Plugin\n\nIf you want to publish your plugin as a library, it is recommended to export the factory function to create the plugin object as the default export, and export the matchers as named exports:\n\n```typescript\n// In your `index.ts`\nimport { match } from 'typroof/plugin';\n\nimport type { Plugin } from 'typroof/plugin';\n\ndeclare module 'typroof/plugin' {\n  interface ValidatorRegistry {\n    beFoo: /* ... */;\n  }\n}\n\nconst foo = (): Plugin => ({\n  /* ... */\n});\nexport default foo;\n\n/**\n * [Matcher] Expect the type to be `\"foo\"`.\n */\nexport const beFoo = match<'beFoo'>();\n```\n\nThen your users can use your plugin like this:\n\n```typescript\n// In their `typroof.config.ts`\nimport foo from 'typroof-plugin-example';\n\nexport default defineConfig({\n  plugins: [foo()],\n});\n\n// And somewhere in their test files\nimport { beFoo } from 'typroof-plugin-example';\n\ntest('foo', () => {\n  expect<'foo'>().to(beFoo);\n});\n```\n\nYou can try a live demo of creating a plugin [here](https://githubbox.com/Snowflyt/typroof/tree/main/examples/simple-plugin).\n","readmeFilename":"README.md"}