{"_id":"@ansble/threepio","_rev":"5-67c24609ba60c60cfafc4c989cba553e","name":"@ansble/threepio","dist-tags":{"latest":"1.10.0"},"versions":{"1.3.0":{"name":"@ansble/threepio","version":"1.3.0","author":"","license":"MIT","_id":"@ansble/threepio@1.3.0","maintainers":[{"name":"daniel_sellers","email":"daniel@designfrontier.net"}],"homepage":"https://github.com/designfrontier/threepio#readme","bugs":{"url":"https://github.com/designfrontier/threepio/issues"},"dist":{"shasum":"b47bc7de91819f06f059a484358f120ebffafd28","tarball":"https://registry.npmjs.org/@ansble/threepio/-/threepio-1.3.0.tgz","fileCount":26,"integrity":"sha512-YPwzKVZ46wnZuyXFfqPWTRlbfpNQ+9TBar05zI36g5N17Io10AJLixwCP+Vc8QcrmNF6jnpA07F99aA2jSBpig==","signatures":[{"sig":"MEYCIQCkuZIYynBPg1Aal1syZSZX5HWifjrnmxildlI+kh4dCgIhANAl2A2mj82tRS/wmF2e9Uq1KiavAID5J2fdwZP4hF0Y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100339},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"0b02faab43895e0e9d0d31c36d367b3b777f3848","scripts":{"lint":"eslint --cache --ext .tsx,.ts,.js,.jsx .","test":"jest","build":"tsc","prepare":"npm run build","prettier":"prettier -w ."},"_npmUser":{"name":"daniel_sellers","email":"daniel@designfrontier.net"},"repository":{"url":"git+https://github.com/designfrontier/threepio.git","type":"git"},"_npmVersion":"10.8.2","description":"I make code review easier for humans","directories":{},"lint-staged":{"*.{js,ts}":"npm run lint"},"_nodeVersion":"20.18.1","dependencies":{"yaml":"^2.7.0"},"preferGlobal":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","husky":"9.1.7","eslint":"8.23.1","prompts":"^2.4.2","ts-jest":"29.2.5","prettier":"3.4.2","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.6","case-anything":"^3.1.0","eslint-prettier":"0.0.0-empty","eslint-plugin-node":"11.1.0","eslint-plugin-import":"2.26.0","eslint-plugin-promise":"6.0.1","eslint-config-prettier":"8.5.0","eslint-config-standard":"17.0.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"5.38.0","@typescript-eslint/eslint-plugin":"5.38.0","@typescript-eslint/typescript-estree":"^5.38.0"},"_npmOperationalInternal":{"tmp":"tmp/threepio_1.3.0_1736919380681_0.253361495422995","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@ansble/threepio","version":"1.4.0","author":"","license":"MIT","_id":"@ansble/threepio@1.4.0","maintainers":[{"name":"daniel_sellers","email":"daniel@designfrontier.net"}],"homepage":"https://github.com/designfrontier/threepio#readme","bugs":{"url":"https://github.com/designfrontier/threepio/issues"},"dist":{"shasum":"c642207a1018dd1b914172b769104116bfd70043","tarball":"https://registry.npmjs.org/@ansble/threepio/-/threepio-1.4.0.tgz","fileCount":26,"integrity":"sha512-HM4vG01MDuCrTs+axGGJDDI58uRm+CrguDx6Pw++oOvq6syZlW1I/L0gXO8VcxacKaF1wEGjO3DqU7nZlLC2WA==","signatures":[{"sig":"MEQCIGo2Ab35k3IxeuvqC5dO3Bg1JUG5o6NddYVjHwh4FzhJAiA8Ik8lw3kMcNll8C0CZRb9sXytAH4TEVYKdf31eXo8pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100478},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"ee140ab6963fc2d8475be2a9fafb69cf434708db","scripts":{"lint":"eslint --cache --ext .tsx,.ts,.js,.jsx .","test":"jest","build":"tsc","prepare":"npm run build","prettier":"prettier -w ."},"_npmUser":{"name":"daniel_sellers","email":"daniel@designfrontier.net"},"repository":{"url":"git+https://github.com/designfrontier/threepio.git","type":"git"},"_npmVersion":"10.8.2","description":"I make code review easier for humans","directories":{},"lint-staged":{"*.{js,ts}":"npm run lint"},"_nodeVersion":"20.18.2","dependencies":{"yaml":"^2.7.0"},"preferGlobal":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","husky":"9.1.7","eslint":"8.23.1","prompts":"^2.4.2","ts-jest":"29.2.5","prettier":"3.4.2","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.6","case-anything":"^3.1.0","eslint-prettier":"0.0.0-empty","eslint-plugin-node":"11.1.0","eslint-plugin-import":"2.26.0","eslint-plugin-promise":"6.0.1","eslint-config-prettier":"8.5.0","eslint-config-standard":"17.0.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"5.38.0","@typescript-eslint/eslint-plugin":"5.38.0","@typescript-eslint/typescript-estree":"^5.38.0"},"_npmOperationalInternal":{"tmp":"tmp/threepio_1.4.0_1738819768998_0.13143842827874574","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@ansble/threepio","version":"1.5.0","author":"","license":"MIT","_id":"@ansble/threepio@1.5.0","maintainers":[{"name":"daniel_sellers","email":"daniel@designfrontier.net"}],"homepage":"https://github.com/designfrontier/threepio#readme","bugs":{"url":"https://github.com/designfrontier/threepio/issues"},"dist":{"shasum":"c3a5c1e3912a3db7901d6fdbb96747ac652b93a7","tarball":"https://registry.npmjs.org/@ansble/threepio/-/threepio-1.5.0.tgz","fileCount":26,"integrity":"sha512-YbYbuwn+ihR975PtTFbVtAPWXmwDAoMrgWbl7JM/A07vdWx6ZEUwk2nQ4uZRnpbBgkx8KQ9BNhCOKjjcoDLh1Q==","signatures":[{"sig":"MEQCIBHTmh8Hqbb5nUYjz9wCDEI7d9hjZP1pvtM2IQOIcu5dAiAEyBEMFFbElEsC0GJ14H12JCp3ZSBaxn29921VAJcTBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100693},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"deebaa530448126eba3effde1c1e51caf392f90e","scripts":{"lint":"eslint --cache --ext .tsx,.ts,.js,.jsx .","test":"jest","build":"tsc","prepare":"npm run build","prettier":"prettier -w ."},"_npmUser":{"name":"daniel_sellers","email":"daniel@designfrontier.net"},"repository":{"url":"git+https://github.com/designfrontier/threepio.git","type":"git"},"_npmVersion":"10.8.2","description":"I make code review easier for humans","directories":{},"lint-staged":{"*.{js,ts}":"npm run lint"},"_nodeVersion":"20.19.0","dependencies":{"yaml":"^2.7.0"},"preferGlobal":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","husky":"9.1.7","eslint":"8.23.1","prompts":"^2.4.2","ts-jest":"29.2.5","prettier":"3.4.2","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.6","case-anything":"^3.1.0","eslint-prettier":"0.0.0-empty","eslint-plugin-node":"11.1.0","eslint-plugin-import":"2.26.0","eslint-plugin-promise":"6.0.1","eslint-config-prettier":"8.5.0","eslint-config-standard":"17.0.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"5.38.0","@typescript-eslint/eslint-plugin":"5.38.0","@typescript-eslint/typescript-estree":"^5.38.0"},"_npmOperationalInternal":{"tmp":"tmp/threepio_1.5.0_1744239679674_0.3579918307274721","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@ansble/threepio","version":"1.9.0","author":"","license":"MIT","_id":"@ansble/threepio@1.9.0","maintainers":[{"name":"daniel_sellers","email":"daniel@designfrontier.net"}],"homepage":"https://github.com/designfrontier/threepio#readme","bugs":{"url":"https://github.com/designfrontier/threepio/issues"},"dist":{"shasum":"ecedde4d20e06f170637c6b693d628b34e1dba7c","tarball":"https://registry.npmjs.org/@ansble/threepio/-/threepio-1.9.0.tgz","fileCount":26,"integrity":"sha512-OfBI/2JMCJ9Jgog1K1I3pC9QMFfiv5N1kjLZJ9KdDQwvnJ1cyFWS+49VwqDAVrH3CwVufvjVxj8SKYkx2hFLGw==","signatures":[{"sig":"MEYCIQD+cA0ddY26rgA0hmPuzmGmja/5P6PZXUWz05DNbSDeuwIhAPZ/Yvw9zm8SE18VLzGj4KvbDJMiUNM11LlY+hZZRwYt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ansble%2fthreepio@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":100806},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"859e1201bce03eee2ac3fe8348d976671ec9a891","scripts":{"lint":"eslint --cache --ext .tsx,.ts,.js,.jsx .","test":"jest","build":"tsc","prepare":"npm run build","prettier":"prettier -w ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1d422915-9453-4a8f-bbe6-38d48b71a191"}},"repository":{"url":"git+https://github.com/designfrontier/threepio.git","type":"git"},"_npmVersion":"11.8.0","description":"I make code review easier for humans","directories":{},"lint-staged":{"*.{js,ts}":"npm run lint"},"_nodeVersion":"24.13.1","dependencies":{"yaml":"^2.7.0"},"preferGlobal":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","husky":"9.1.7","eslint":"8.23.1","prompts":"^2.4.2","ts-jest":"29.2.5","prettier":"3.4.2","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.6","case-anything":"^3.1.0","eslint-prettier":"0.0.0-empty","eslint-plugin-node":"11.1.0","eslint-plugin-import":"2.26.0","eslint-plugin-promise":"6.0.1","eslint-config-prettier":"8.5.0","eslint-config-standard":"17.0.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"5.38.0","@typescript-eslint/eslint-plugin":"5.38.0","@typescript-eslint/typescript-estree":"^5.38.0"},"_npmOperationalInternal":{"tmp":"tmp/threepio_1.9.0_1772061764767_0.8942397504528858","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@ansble/threepio","main":"lib/index.js","types":"lib/index.d.ts","version":"1.10.0","description":"I make code review easier for humans","publishConfig":{"access":"public"},"scripts":{"build":"tsc","lint":"eslint --cache --ext .tsx,.ts,.js,.jsx .","prepare":"npm run build","prettier":"prettier -w .","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/designfrontier/threepio.git"},"author":"","license":"MIT","bugs":{"url":"https://github.com/designfrontier/threepio/issues"},"homepage":"https://github.com/designfrontier/threepio#readme","preferGlobal":true,"devDependencies":{"@types/jest":"29.5.14","@types/node":"22.10.6","@typescript-eslint/eslint-plugin":"5.38.0","@typescript-eslint/parser":"5.38.0","@typescript-eslint/typescript-estree":"^5.38.0","case-anything":"^3.1.0","eslint":"8.23.1","eslint-config-prettier":"8.5.0","eslint-config-standard":"17.0.0","eslint-plugin-import":"2.26.0","eslint-plugin-node":"11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"6.0.1","eslint-prettier":"0.0.0-empty","husky":"9.1.7","jest":"29.7.0","prettier":"3.4.2","prompts":"^2.4.2","ts-jest":"29.2.5","typescript":"5.7.3"},"lint-staged":{"*.{js,ts}":"npm run lint"},"dependencies":{"glob-to-regexp":"^0.4.1","yaml":"^2.7.0"},"gitHead":"67cf831adc53fbe8f42cdb550c6f48cda619e3e3","_id":"@ansble/threepio@1.10.0","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-TcCKCTFbfY9NROCipwVtpQUpLrLnlur0XncBJVxkP1U6eEOUwZBcDe2aauZ1nRQiR2K4zfQ8B+q+EAvgspHVMA==","shasum":"14fc989b63f8578e5c1bd15e85511d6626c93069","tarball":"https://registry.npmjs.org/@ansble/threepio/-/threepio-1.10.0.tgz","fileCount":26,"unpackedSize":101706,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ansble%2fthreepio@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDfobNLMilh9+3Tqx99Zm6fSpz8uD9Gp9LgfSF0BPLNIAIhAN0F/9moKg0oz2VfuSFTscVmbSO2v7v5PpJHrvXukUI4"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1d422915-9453-4a8f-bbe6-38d48b71a191"}},"directories":{},"maintainers":[{"name":"daniel_sellers","email":"daniel@designfrontier.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/threepio_1.10.0_1773689735223_0.8447298551641886"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-15T05:36:20.543Z","modified":"2026-03-16T19:35:35.701Z","1.3.0":"2025-01-15T05:36:20.865Z","1.4.0":"2025-02-06T05:29:29.169Z","1.5.0":"2025-04-09T23:01:19.876Z","1.9.0":"2026-02-25T23:22:44.906Z","1.10.0":"2026-03-16T19:35:35.403Z"},"bugs":{"url":"https://github.com/designfrontier/threepio/issues"},"license":"MIT","homepage":"https://github.com/designfrontier/threepio#readme","repository":{"type":"git","url":"git+https://github.com/designfrontier/threepio.git"},"description":"I make code review easier for humans","maintainers":[{"name":"daniel_sellers","email":"daniel@designfrontier.net"}],"readme":"# Threepio\n\nI make code review easier for humans\n\n## Documentation\n\nYou can find the documentation for all the checks [here](docs/rules.md)\n\n## Usage\n\nAdd a github workflow and make sure that it looks similar to the one in this repo.\n\nHere is an example that you can probably just drop in once you have installed the\nthreepio npm package in dev dependencies:\n\n```\nname: Threepio Code Review Notes\non:\n  pull_request:\n    types: [opened, synchronize, edited]\n\njobs:\n  comment:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n      - name: Use Node.js 20.x\n        uses: actions/setup-node@v2\n        with:\n          node-version: 20.x\n      - run: npm i\n      - uses: actions/github-script@v6\n        with:\n          script: |\n            const threepio = require('threepio')\n            const res = await threepio.review(context, github)\n\n            if (!res) {\n              process.exit(1)\n            }\n```\n\n## Configuration\n\nYou can create a `.threepio` file in the root of a project using threepio to change the\nconfiguration per project. The `.threepio` file is a yaml file as described below.\n`warning` results in printing out the message in the comment but not in a failing\nbuild. `error` does the same thing, but also causes the build step to fail.\n\n```\ntests:\n  jiraTickets: warning\n  testPlanCheck: error\n  allFilesTested: error\n  checkMigrations: warn\n  changeSizeCheck: warning\n\njira:\n  projects:\n    - DOOM\n    - PLAT\n\nrules:\n  allFilesTested:\n    exclude:\n      - src/types.ts\n      - src/test-helpers/index.ts\n```\n\nThe `rules` section allows config to be passed to specific tests. The example\nabove excludes certain files from the [allFilesTested](docs/rules.md#all-files-tested)\nrule so that they won't show in the readout from it. For example there likely\nwon't be tests for the `src/types.ts` file because it just contains types, so\nexcluding it improves the signal to noise ratio of the comment.\n\n## Creating a new lint\n\nRun: `bin/new-lint`\n\nThat will create all the files that you need, plus modify the imports in most of\nthe places that you will need to import them to get them to work for you. All you\nwill need to do is update the documentation in `docs/rules.md`, the lint code,\nits test file, and a couple of tests in other files that will start failing until\nyou update them to account for the new lint you wrote.\n","readmeFilename":"README.md"}