{"_id":"@lint-todo/utils","_rev":"10-aa44ee9ffec4ca1a90a59b6661a239c1","name":"@lint-todo/utils","dist-tags":{"latest":"13.1.1"},"versions":{"11.0.0":{"name":"@lint-todo/utils","version":"11.0.0","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"license":"MIT","author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc --build","build:watch":"tsc --watch","clean":"tsc --build --clean","docs:update":"yarn build && readme-api-generator lib/builders.js lib/io.js lib/todo-config.js lib/get-severity.js lib/date-utils.js","lint":"eslint . --ext .ts","prepare":"yarn build","test":"npm-run-all lint test:*","test:jest":"jest --no-cache"},"dependencies":{"@types/eslint":"^7.2.13","fs-extra":"^9.1.0","proper-lockfile":"^4.1.2","slash":"^3.0.0","tslib":"^2.3.1"},"devDependencies":{"@scalvert/readme-api-generator":"^0.1.0","@types/fs-extra":"^9.0.12","@types/proper-lockfile":"^4.1.2","@types/slash":"^3.0.0","@types/tmp":"^0.2.0","@typescript-eslint/eslint-plugin":"^4.26.1","@typescript-eslint/parser":"^4.29.1","date-fns":"^2.23.0","eslint":"^7.31.0","eslint-config-prettier":"^7.2.0","eslint-plugin-jest":"^24.3.6","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.4.0","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-unicorn":"^22.0.0","fixturify-project":"^2.1.1","jest":"^26.6.3","jsdoc-to-markdown":"^6.0.1","npm-run-all":"^4.1.5","prettier":"^2.3.2","release-it":"^14.11.5","release-it-lerna-changelog":"^3.1.0","tmp":"^0.2.1","ts-jest":"^26.5.2","type-fest":"^2.0.0","typescript":"^4.3.5"},"engines":{"node":"12.* || >= 14"},"resolutions":{"yargs-parser":"^20.2.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"release-it":{"plugins":{"release-it-lerna-changelog":{"infile":"CHANGELOG.md","launchEditor":true}},"git":{"tagName":"v${version}"},"github":{"release":true,"tokenRef":"GITHUB_AUTH"}},"volta":{"node":"12.22.5","yarn":"1.22.10"},"gitHead":"892a8b11139d25df805eee65ddd51ce76ac2c8d9","description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","bugs":{"url":"https://github.com/lint-todo/utils/issues"},"homepage":"https://github.com/lint-todo/utils#readme","_id":"@lint-todo/utils@11.0.0","_nodeVersion":"12.22.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-FwAREUQ0ncD3XDujs34183WjzOeX07KrRwi2AkkIJT2irrTkBPyE9FLs2sjjh+Lnj2OB1d+fDN4BWi9r2Nnt+w==","shasum":"adb6f0ba280a45bff2449d548727cbff35714db7","tarball":"https://registry.npmjs.org/@lint-todo/utils/-/utils-11.0.0.tgz","fileCount":48,"unpackedSize":126312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqZheCRA9TVsSAnZWagAAog4P/RISc/t92Hmr6T4tgZy/\n1DwnDR8xrNHpCpCWfTFSu45dB0E786jkUuKEgiWJ9p520yv9tpYgAz1ThSrn\nTs5B/Yf24+A/t97PLZUkPIJfPniDiYerGQyuoIAICFcyfbZSQhXzIVw/W9ai\nHiQcs/Y1DPA95U3OTWrRvfUVcURC4802vL5aQuPcnCS1H7CEPOQaT8TEGNwP\npVnblcl2JHc+T1OU/WKY8mlfNTysJIp/BtzndJhAsiNfdgLzmerIrrCQa4io\n0gdNlreXbC5s6hnnwBPGFe0Ic8rs0fbS+ZNegCyNtXzO/eY4KIx8O7nZTsNQ\nH3p2yKrpT+g9BEkrBM1Jke9/qnSBmM20+HOMypibnYjJOj+O7q7psFXabuqy\nzyl6gvQThdFh+G3w5stW0vWVbyXdr6rL9YvSMPDJlILkdUxJibVC9jcmOZLN\nGqLc0nTOapjUxwLl4JxHyYY7QrZnRdn4vcf75+lqaujsaCb+roQNQcD15MB4\nYajUN3hoFMhz/6Sh1yjXUi1mYFvIavAnr+xc1ejWbmY6ENCWnsmzVRBgsjYO\nwnwsggP2FXstiObjYRFIkMGOrnRdzo9l9GYUIzMPYX7KpU4ee4lBM92F+/8r\n6zdBoymjohIXJgBUYwL96xDt/ZoXDRX7PcWbY+zJyw8NOtm3tC4+F/oIHi+u\nPv1S\r\n=3qrI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEfD5ETSbo1EPfgopJY2R/6en1JI/VxJqDNZITxSWdOsAiEAjws8dyANsVsPPrC8h8BcYqRSpvvRgmwN8bRg5mkDL+A="}]},"_npmUser":{"name":"scalvert","email":"steve.calvert@gmail.com"},"directories":{},"maintainers":[{"name":"scalvert","email":"steve.calvert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_11.0.0_1638504542534_0.4557228068201833"},"_hasShrinkwrap":false},"12.0.0":{"name":"@lint-todo/utils","version":"12.0.0","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"license":"MIT","author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc --build","build:watch":"tsc --watch","clean":"tsc --build --clean","docs:update":"yarn build && readme-api-generator lib/builders.js lib/io.js lib/todo-config.js lib/get-severity.js lib/date-utils.js","lint":"eslint . --ext .ts","prepare":"yarn build","test":"npm-run-all lint test:*","test:jest":"jest --no-cache"},"dependencies":{"@types/eslint":"^7.2.13","fs-extra":"^9.1.0","proper-lockfile":"^4.1.2","slash":"^3.0.0","tslib":"^2.3.1"},"devDependencies":{"@scalvert/readme-api-generator":"^0.1.0","@types/fs-extra":"^9.0.12","@types/proper-lockfile":"^4.1.2","@types/slash":"^3.0.0","@types/tmp":"^0.2.2","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","date-fns":"^2.23.0","eslint":"^7.32.0","eslint-config-prettier":"^7.2.0","eslint-plugin-jest":"^24.3.6","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.4.0","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-unicorn":"^22.0.0","fixturify-project":"^2.1.1","jest":"^26.6.3","jsdoc-to-markdown":"^6.0.1","npm-run-all":"^4.1.5","prettier":"^2.5.1","release-it":"^14.11.8","release-it-lerna-changelog":"^4.0.1","tmp":"^0.2.1","ts-jest":"^26.5.2","type-fest":"^2.8.0","typescript":"^4.3.5"},"engines":{"node":"12.* || >= 14"},"resolutions":{"yargs-parser":"^20.2.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"release-it":{"plugins":{"release-it-lerna-changelog":{"infile":"CHANGELOG.md","launchEditor":true}},"git":{"tagName":"v${version}"},"github":{"release":true,"tokenRef":"GITHUB_AUTH"}},"volta":{"node":"12.22.5","yarn":"1.22.10"},"gitHead":"32f08d91e01a22b2b6616b105a0d907967803377","description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","bugs":{"url":"https://github.com/lint-todo/utils/issues"},"homepage":"https://github.com/lint-todo/utils#readme","_id":"@lint-todo/utils@12.0.0","_nodeVersion":"12.22.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-MGIDlAwHS31K26N/Fpt15QopnWSALP8uzCRyKXOpm0PoBuCof6a443wJGLPQlPcqPZUMdf4SjYUgEmleMv3REw==","shasum":"625ae5aa9b93f60a7567a515265af2704bf426a6","tarball":"https://registry.npmjs.org/@lint-todo/utils/-/utils-12.0.0.tgz","fileCount":48,"unpackedSize":127532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhuRA4CRA9TVsSAnZWagAAOAcP/03tR+or4V/8PlgDl0Zd\nM/eyMZZfi2xxqO8ABah5UGIrkvMBlwVAMzvphhAjlKz8aDxuVOFKKYXOPA0N\nZa0di3maz0rWTp8IEmSfxm8mNKYEHTT2pOpHmVOCLMwBXqHI3X4+bkEh8Mdn\nEMgrosIfMESRujl/yWuTpAA7HYo/eua0m83fnRo1ocCXjG3FDpn1moSu0OKq\n+rg/YDzLZFQbut6MfYrFiM8+MPOffalUZ0ufUfONiX9xdmFFP0DEU8LcBE4o\n2x0IYcL3OcTlTwlGBW4PlJmo3Foq/g/x6xpO/J7y7b5IdA4iAouPfUvAnNv6\nJHu7mfA+ENq0CXKCB1A3IkJh/6g/n+RkvKNRW1pEj4jsI9NiF1hAKRvV9DY6\nfwYq3jO+z49CEyJB3ixUmaGxgiIgscZDaGftifMxwnkeGHnBzHYB+pU9y4RT\npA+BB0vMw4fjHZt1laZNntwcXGNU7/OV4MZSuSOmGRANzjnNTEA3OCg1iCs6\nrkny0ZOm26w+3JBy4Apt1gM7seJ195h09RoC0/b/12Qrq50ljwDtT1Zn0snv\nfP3KAM8Cb44z0OyZb/Q11VO9ztfv+sf8hJl9RQtjox0nevh3hrGfx2k0cOpG\nw3fb6PLeNMCnlrDhWDrk9UeUZsZGq00SolH5ce1qRM2nT7NknKVz12K45C8O\nhXit\r\n=8XyO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcUb17bfUEojKvL7+KYKfGz/sMAhHMyF1BynE29VsP0AIgDXBNwhjkE7KVDaAHW1/eWsJf3YEi6a6CTaG8RNGcPXM="}]},"_npmUser":{"name":"scalvert","email":"steve.calvert@gmail.com"},"directories":{},"maintainers":[{"name":"scalvert","email":"steve.calvert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_12.0.0_1639518264503_0.9868908289095908"},"_hasShrinkwrap":false},"12.0.1":{"name":"@lint-todo/utils","version":"12.0.1","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"license":"MIT","author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc --build","build:watch":"tsc --watch","clean":"tsc --build --clean","docs:update":"yarn build && readme-api-generator lib/builders.js lib/io.js lib/todo-config.js lib/get-severity.js lib/date-utils.js","lint":"eslint . --ext .ts","prepare":"yarn build","test":"npm-run-all lint test:*","test:jest":"jest --no-cache"},"dependencies":{"@types/eslint":"^7.2.13","fs-extra":"^9.1.0","proper-lockfile":"^4.1.2","slash":"^3.0.0","tslib":"^2.3.1","upath":"^2.0.1"},"devDependencies":{"@scalvert/readme-api-generator":"^0.1.0","@types/fs-extra":"^9.0.13","@types/jest":"^27.0.3","@types/proper-lockfile":"^4.1.2","@types/slash":"^3.0.0","@types/tmp":"^0.2.2","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","date-fns":"^2.27.0","eslint":"^7.32.0","eslint-config-prettier":"^7.2.0","eslint-plugin-jest":"^24.3.6","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.4.0","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-unicorn":"^22.0.0","fixturify-project":"^2.1.1","jest":"^27.4.5","jsdoc-to-markdown":"^6.0.1","npm-run-all":"^4.1.5","prettier":"^2.5.1","release-it":"^14.11.8","release-it-lerna-changelog":"^4.0.1","tmp":"^0.2.1","ts-jest":"^27.1.2","type-fest":"^2.8.0","typescript":"^4.3.5"},"engines":{"node":"12.* || >= 14"},"resolutions":{"yargs-parser":"^20.2.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"release-it":{"plugins":{"release-it-lerna-changelog":{"infile":"CHANGELOG.md","launchEditor":true}},"git":{"tagName":"v${version}"},"github":{"release":true,"tokenRef":"GITHUB_AUTH"}},"volta":{"node":"12.22.5","yarn":"1.22.10"},"gitHead":"51e6b0305adf44dfe19b0061c6082c3c2bbdddc1","description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","bugs":{"url":"https://github.com/lint-todo/utils/issues"},"homepage":"https://github.com/lint-todo/utils#readme","_id":"@lint-todo/utils@12.0.1","_nodeVersion":"12.22.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-Xiy5wN+ns95gEHepJ55TXEBAZrkZlzrF9wTjqoTgv+RYOYL3+qQ+v0RtPH2n/UwPJEFuXJ6QKiT99RnUOt1pzw==","shasum":"d61ef329f9f6c7332adee7b1f68651f190d53a7f","tarball":"https://registry.npmjs.org/@lint-todo/utils/-/utils-12.0.1.tgz","fileCount":48,"unpackedSize":129592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhy1XOCRA9TVsSAnZWagAAiAEP/RGgleswJiYZ1LHh4d9/\ncU92lZmqd7X5zDUD+LdibnAJskl9uM+s7wJnyTJa5tbVlQ1HawF3EgX9HSaf\nnV2T4wRdygO5UYrOkiYg2vXw7l1INRzufbHTv2G5G+vHa6nziyq4dvncTfVp\nNUWz/7p3Z+1rHw3cXmznSliI29v82DxnYIgXa4PIn0Jx+ssjeN6a6BaZWLlB\nyc1Fm6C4NTGU5yMOldm2HPQ/n4Y0sy9tCNRXCo9wz3znTN+nquDlvkyE0Ycp\nWuhdXTr4+rOzX/pGdb0X7OAVRGADjwanevq3UrboUvhwvrK9kWrN5qzG3gPN\nygKa2lc2Gs3KHv/Vifnb3+L/pe3rwGsdQkfjRCEhfBkxo02BUmkIQL+zgROB\ntSrsEyYM18KZOPMLmUyEbz7CFp96/YnwlUPYnblfQ6a02BDr88dW8VhQ4Iod\nOVtGq+dQ7e/L0b7oiTSRjhQOzDTFSdxLFSqGx7OJpE+vRR1X5sH4Idu5rEev\ng8TKD023pQA70SumbjjXqzU58HznUIbSrNDo9Mn1hGJlWXnTEWaAyodloSGe\nBanakLr/qoIK67XqGkvFffbs70wmuj9HdEmdCXKJe4B9Iwwc1QkECvfi6raY\nFFCXibOgJSkut2gu8/XFmdHpQMeFAA4ZnoWl2IIIF3FKIZlNK//uj8YhVdEx\nexGJ\r\n=EDdN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0QoBJq4L25CFFpmhNPwi6RqblCg5P0HWQe5R8CjmR9wIhALBAU7W+Z3+i8LFeHw88yImqsVsmgDjDmPBHmBxW7GGA"}]},"_npmUser":{"name":"scalvert","email":"steve.calvert@gmail.com"},"directories":{},"maintainers":[{"name":"scalvert","email":"steve.calvert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_12.0.1_1640715726690_0.3257254106572427"},"_hasShrinkwrap":false},"13.0.0":{"name":"@lint-todo/utils","version":"13.0.0","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"license":"MIT","author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc --build","build:watch":"tsc --watch","clean":"tsc --build --clean","docs:update":"yarn build && readme-api-generator lib/builders.js lib/io.js lib/todo-config.js lib/get-severity.js lib/date-utils.js","lint":"eslint . --ext .ts","prepare":"yarn build","test":"npm-run-all lint test:*","test:vitest":"vitest run"},"dependencies":{"@types/eslint":"^7.2.13","find-up":"^6.3.0","fs-extra":"^9.1.0","proper-lockfile":"^4.1.2","slash":"^3.0.0","tslib":"^2.3.1","upath":"^2.0.1"},"devDependencies":{"@scalvert/readme-api-generator":"^0.1.0","@types/fs-extra":"^9.0.13","@types/proper-lockfile":"^4.1.2","@types/slash":"^3.0.0","@types/tmp":"^0.2.2","@typescript-eslint/eslint-plugin":"^5.19.0","@typescript-eslint/parser":"^5.19.0","date-fns":"^2.27.0","eslint":"^7.32.0","eslint-config-prettier":"^7.2.0","eslint-plugin-jest":"^24.3.6","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-unicorn":"^22.0.0","fixturify-project":"^2.1.1","jsdoc-to-markdown":"^7.1.1","npm-run-all":"^4.1.5","prettier":"^2.5.1","release-it":"^14.11.8","release-it-lerna-changelog":"^4.0.1","tmp":"^0.2.1","type-fest":"^2.8.0","typescript":"^4.6.2","vite":"^2.7.13","vitest":"^0.9.3"},"engines":{"node":"12.* || >= 14"},"resolutions":{"yargs-parser":"^20.2.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"release-it":{"plugins":{"release-it-lerna-changelog":{"infile":"CHANGELOG.md","launchEditor":true}},"git":{"tagName":"v${version}"},"github":{"release":true,"tokenRef":"GITHUB_AUTH"}},"volta":{"node":"14.18.3","yarn":"1.22.10"},"gitHead":"8d69042c302cbee7600eac4808053aa34ee1ad1f","description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","bugs":{"url":"https://github.com/lint-todo/utils/issues"},"homepage":"https://github.com/lint-todo/utils#readme","_id":"@lint-todo/utils@13.0.0","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-kelzihmg395DV4/8VCA1bp9wT59SbEoCq5WjZlVHLLXBcNnpdfmNqNUP5MvSVcWsCbdNHuX5vBnG9e8Yqk0fXw==","shasum":"c131581b445b6497ff65ab4bc61a5b0ba2d3b526","tarball":"https://registry.npmjs.org/@lint-todo/utils/-/utils-13.0.0.tgz","fileCount":48,"unpackedSize":127630,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnhkYQ0OvwAfuQNaf2pCVO68u44Vhv3FxhYvwEbyVQmAIgay8oH1Vi86TCSY0qJYIq8BUUswsBzd1oqR2JK38XPbQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWK2OACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpuNg/+OmPG33Ja/yVs8JIc22+mX5Niw+VyUpuH19kol/f7aZBOUNdR\r\nJSWhlsNjirU/OONcqzQpUv6fzHj1TiiEO9BFZVX5ACT1N3QIKu3KtaRAcBnR\r\nBPCidtdRP0FvvP3pQILr2k5fuAgz/0pxHTPy8+UK8k63PdoK4iCYQ5H6Rq8x\r\nZFh/BHHmezgoSOQxbwlZ6Peq1Fd8r0Nd7HsXQmIZTWhLUiqF2lhoPdikxNxQ\r\nvEWc74KPu92tPhnTB7trg169gM9ukp0gX+dadsdzTOnGQ+gf8wNtKeukpNit\r\nQaspdxCRPU8XreLysBqLa6bUh2sligfWsMrI11pTf/+oUeGbblOTKUE8/eJM\r\nzdLN7Z/sjUspKE87mIKAA1dM+U11vdChkYCQ2WAVT6Xlr46viSJhL3UJR+kQ\r\nIqAgEupSowdvhAPDvoFjBLjXsUP4K5f+Y6cw2oXYEhHviL7eesgiWTCKCsBy\r\nQiLWczT+XtSwSKV3y1D1kS7XKhyurDOdMaiQBueH9skWxNlVcy+g1WGphLSg\r\nCH6a+RVBBv4ps+iHFQrkbCtnR6RcebIGK7qq+V/i8FTFZ1fgKoMEX23dyIre\r\nLvN9PaNERN+v+soTgY7iTRnZ2jpCcIy5uK3fNvm4D+rCN8/BPY89Zg/oBem1\r\nmiFDfmO1BRQnjpvnKl2GF9/QSquhmMLprI8=\r\n=mk8x\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"scalvert","email":"steve.calvert@gmail.com"},"directories":{},"maintainers":[{"name":"scalvert","email":"steve.calvert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_13.0.0_1649978766538_0.6517913028622828"},"_hasShrinkwrap":false},"13.0.1":{"name":"@lint-todo/utils","version":"13.0.1","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"license":"MIT","author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc --build","build:watch":"tsc --watch","clean":"tsc --build --clean","docs:update":"yarn build && readme-api-generator lib/builders.js lib/io.js lib/todo-config.js lib/get-severity.js lib/date-utils.js","lint":"eslint . --ext .ts","prepare":"yarn build","test":"npm-run-all lint test:*","test:vitest":"vitest run"},"dependencies":{"@types/eslint":"^7.2.13","find-up":"^5.0.0","fs-extra":"^9.1.0","proper-lockfile":"^4.1.2","slash":"^3.0.0","tslib":"^2.3.1","upath":"^2.0.1"},"devDependencies":{"@scalvert/readme-api-generator":"^0.1.0","@types/fs-extra":"^9.0.13","@types/proper-lockfile":"^4.1.2","@types/slash":"^3.0.0","@types/tmp":"^0.2.2","@typescript-eslint/eslint-plugin":"^5.19.0","@typescript-eslint/parser":"^5.19.0","date-fns":"^2.27.0","eslint":"^7.32.0","eslint-config-prettier":"^7.2.0","eslint-plugin-jest":"^24.3.6","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-unicorn":"^22.0.0","fixturify-project":"^2.1.1","jsdoc-to-markdown":"^7.1.1","npm-run-all":"^4.1.5","prettier":"^2.5.1","release-it":"^14.11.8","release-it-lerna-changelog":"^4.0.1","tmp":"^0.2.1","type-fest":"^2.8.0","typescript":"^4.6.2","vite":"^2.7.13","vitest":"^0.9.3"},"engines":{"node":"12.* || >= 14"},"resolutions":{"yargs-parser":"^20.2.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"release-it":{"plugins":{"release-it-lerna-changelog":{"infile":"CHANGELOG.md","launchEditor":true}},"git":{"tagName":"v${version}"},"github":{"release":true,"tokenRef":"GITHUB_AUTH"}},"volta":{"node":"14.18.3","yarn":"1.22.10"},"gitHead":"75bd9e001faa4fd33e0a385605f105997d6b15e3","description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","bugs":{"url":"https://github.com/lint-todo/utils/issues"},"homepage":"https://github.com/lint-todo/utils#readme","_id":"@lint-todo/utils@13.0.1","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ca9aiVTDKWZNUNDq/AuFTj7bkkjLT2bhbdzcZ+/FedY6anb6/3VYFvjeOK1JLYYVtmRkO0549Ns+Amn+NH4fuA==","shasum":"231dd023450c297709ca7da911128dfd0fd365b3","tarball":"https://registry.npmjs.org/@lint-todo/utils/-/utils-13.0.1.tgz","fileCount":48,"unpackedSize":127980,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA9A+qa96POLBNmXzmKp25giEs1HpTHcdOQfYZ4jHRTiAiEAwiZwwaJz9SARaK0wSk1IL/+bUKErmyT96OB+5BwMgX8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWLtEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqUJw//RaJOKOfd794vxplChz0gk/u4usew/CEC14C9lO17uF5dqSUF\r\n03dHf4gwQkyns8GOYaQxc+DAr2itUlhu8bU6nWGIZUfwb9xUqs0D44amN4ym\r\nIStwnaV73jE7a4LJGZPTPZPdPdkcHtSBQE3T4jLXJ/0B0zlTan9YI0EW3dwG\r\npk53E1mCZw0PLHkjEJWeKe4pmFWuQ7S195R/saRravigaJpjKhUlxLeApZVp\r\nzZp/5rMB+Tccc7xyxlFamvQM7MyUdXptk6p4zpWvisTBo0WhGAN5+feEVvhz\r\nDJSw4GjwMaIoManY34uDuKb/sNd/rpzXH/B//a+6wxn9vRavxPHVpo9m6CKf\r\nRw9UDybsWjBMmXTb0OfjRXb3w+qrscdm2D8kquuoO8HLZ3t5CKLSiKF++FXw\r\n3eGpX0HZ0SyxTPseg877ik1/ehwz3Avq+CxYUCKDiy+ODkkLsNxekOg5bNvV\r\n1oBVmSNLL3rcbpgEKjevwJxe4hssm+oPvRs/s1MOvXT5yxMlUQ+iOp/JGZG6\r\nCEu4W5To+GcidWVWUZoYbuL3CUPfy6aAYjF4t6fG+ipNWjgOZDn5s8i9Rn5l\r\nlFDsPHiD7ZzshIl3AT8AfVN4XgarxRvJ1ail8zn6pU292cRcNpiYldNxpsYV\r\nVtOPWhnMdSGOiD8zLLksSjak4WT7+r460kg=\r\n=kw1L\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"scalvert","email":"steve.calvert@gmail.com"},"directories":{},"maintainers":[{"name":"scalvert","email":"steve.calvert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_13.0.1_1649982275858_0.9240847460913646"},"_hasShrinkwrap":false},"13.0.2":{"name":"@lint-todo/utils","version":"13.0.2","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"license":"MIT","author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc --build","build:watch":"tsc --watch","clean":"tsc --build --clean","docs:update":"yarn build && readme-api-generator lib/builders.js lib/io.js lib/todo-config.js lib/get-severity.js lib/date-utils.js","lint":"eslint . --ext .ts","prepare":"yarn build","test":"npm-run-all lint test:*","test:vitest":"vitest run"},"dependencies":{"@types/eslint":"^7.2.13","find-up":"^5.0.0","fs-extra":"^9.1.0","proper-lockfile":"^4.1.2","slash":"^3.0.0","tslib":"^2.3.1","upath":"^2.0.1"},"devDependencies":{"@scalvert/readme-api-generator":"^0.1.0","@types/fs-extra":"^9.0.13","@types/proper-lockfile":"^4.1.2","@types/slash":"^3.0.0","@types/tmp":"^0.2.2","@typescript-eslint/eslint-plugin":"^5.19.0","@typescript-eslint/parser":"^5.19.0","date-fns":"^2.27.0","eslint":"^7.32.0","eslint-config-prettier":"^7.2.0","eslint-plugin-jest":"^24.3.6","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-unicorn":"^22.0.0","fixturify-project":"^2.1.1","jsdoc-to-markdown":"^7.1.1","npm-run-all":"^4.1.5","prettier":"^2.5.1","release-it":"^14.11.8","release-it-lerna-changelog":"^4.0.1","tmp":"^0.2.1","type-fest":"^2.8.0","typescript":"^4.6.2","vite":"^2.7.13","vitest":"^0.9.3"},"engines":{"node":"12.* || >= 14"},"resolutions":{"yargs-parser":"^20.2.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"release-it":{"plugins":{"release-it-lerna-changelog":{"infile":"CHANGELOG.md","launchEditor":true}},"git":{"tagName":"v${version}"},"github":{"release":true,"tokenRef":"GITHUB_AUTH"}},"volta":{"node":"14.18.3","yarn":"1.22.10"},"gitHead":"b8caf4b29ca456ef928252e06f47d4f90e35dc1f","description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","bugs":{"url":"https://github.com/lint-todo/utils/issues"},"homepage":"https://github.com/lint-todo/utils#readme","_id":"@lint-todo/utils@13.0.2","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-tLZfEjU5i7KThQbWZ4u5dLUJx9+euGnytz402uAH4VRa0jMxyc2HNXw+h6qPdKxM/wGAvwEQGn7l1j2kyLI7rQ==","shasum":"0d2fc6cc24452564dd2ee97be01437aa92b4c1a8","tarball":"https://registry.npmjs.org/@lint-todo/utils/-/utils-13.0.2.tgz","fileCount":48,"unpackedSize":128222,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8E2Mzdt+JR/pLPKDnHxe0oFkP1LQ6b2y5m2PcNZcZkAiEA/JB3Dm4X850GYsfR8mL4pWZ26rMrjNdErab/waMntMQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWY34ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrTRA//duXP48yxISP3oBisF7QgmbbVLK7S1qp509wwiawCAEIKmnq0\r\nEKGIQIjbA0Lt1dgsebakq54CeYQER9LJRo+RHPL/xEVIWaO7kGpR0N7iDldB\r\nlkehqezAF7e8t/tp7AB6yFFuOOTmbo4RBFSec5m0YR7Crs9EN7ubor/4Q6Ey\r\nkyXCg5GOqspJm2xi4cG3vSifYvE+a31uCliShc9/aNjuYxQMj/i94qQdjfcN\r\nuMPqb1VnFXIABM5ZMpLhHLwNk1bxJ4qWPNkrbImXDpC+MscQLiCRgvHgSBN8\r\nkPVgF3Ev7cy9yTRn4fqWUeLxawr0NxooY3h2gPxjyq9aOFRNEcgOwOG/eQ1e\r\nF69gfF1Mi9vpXFQtZTJuLqWH6FqeFmsJSvKeWxgF05QXcFpUIIIrFMaST53I\r\nfSWzYZ3SI4k0n8QK+VAOMJY9Cp0JHcbLz7PaSCucJiyAbBVAblTR8qsRM2aw\r\nc9gUkw321QKWqkxZgogkMUjSZ4wYzZ7pqyzhSVpifm+8p06IsocO1mAL5Nlp\r\nvf7sznlfiNSik5sgWd71GvHYtpBrKTBPGMIVFg/kP198xYLHK87+Dn/KEroH\r\n7QjYKAz7hOYONBHJujrCktHloQRv6artJ84VWSHpjHTrqlLuCj7C6Y0MCLzn\r\nyveJKKeViJfEQh2WrCe+H2n63b+iIYbrVgA=\r\n=aWUP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"scalvert","email":"steve.calvert@gmail.com"},"directories":{},"maintainers":[{"name":"scalvert","email":"steve.calvert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_13.0.2_1650036216205_0.3747407862475214"},"_hasShrinkwrap":false},"13.0.3":{"name":"@lint-todo/utils","version":"13.0.3","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"license":"MIT","author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc --build","build:watch":"tsc --watch","clean":"tsc --build --clean","docs:update":"yarn build && readme-api-generator lib/builders.js lib/io.js lib/todo-config.js lib/get-severity.js lib/date-utils.js","lint":"eslint . --ext .ts","prepare":"yarn build","test":"npm-run-all lint test:*","test:vitest":"vitest run"},"dependencies":{"@types/eslint":"^7.2.13","find-up":"^5.0.0","fs-extra":"^9.1.0","proper-lockfile":"^4.1.2","slash":"^3.0.0","tslib":"^2.3.1","upath":"^2.0.1"},"devDependencies":{"@scalvert/readme-api-generator":"^0.1.0","@types/fs-extra":"^9.0.13","@types/proper-lockfile":"^4.1.2","@types/slash":"^3.0.0","@types/tmp":"^0.2.2","@typescript-eslint/eslint-plugin":"^5.19.0","@typescript-eslint/parser":"^5.19.0","date-fns":"^2.27.0","eslint":"^7.32.0","eslint-config-prettier":"^7.2.0","eslint-plugin-jest":"^24.3.6","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-unicorn":"^22.0.0","fixturify-project":"^2.1.1","jsdoc-to-markdown":"^7.1.1","npm-run-all":"^4.1.5","prettier":"^2.5.1","release-it":"^14.11.8","release-it-lerna-changelog":"^4.0.1","tmp":"^0.2.1","type-fest":"^2.8.0","typescript":"^4.6.2","vite":"^2.7.13","vitest":"^0.9.3"},"engines":{"node":"12.* || >= 14"},"resolutions":{"yargs-parser":"^20.2.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"release-it":{"plugins":{"release-it-lerna-changelog":{"infile":"CHANGELOG.md","launchEditor":true}},"git":{"tagName":"v${version}"},"github":{"release":true,"tokenRef":"GITHUB_AUTH"}},"volta":{"node":"14.18.3","yarn":"1.22.10"},"gitHead":"a5ddb62f042c0b36eddf117e90c43415fe9a6128","description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","bugs":{"url":"https://github.com/lint-todo/utils/issues"},"homepage":"https://github.com/lint-todo/utils#readme","_id":"@lint-todo/utils@13.0.3","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-7Grdii4L/ae8FiykBcsEfum3m9yxVKPNQXpqJDPhWMHsReEunaQDkx/WLsjiNBctRb+roNHZQuXQYlJwoTlqOw==","shasum":"ca222f38738b43eb43384d56e7292ba9cab3e891","tarball":"https://registry.npmjs.org/@lint-todo/utils/-/utils-13.0.3.tgz","fileCount":48,"unpackedSize":128607,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxuTWvpGo6MvgOjrKTCJdytRg8tPtan3TWFPnIGO/I0QIgP+G9+4z+HoVVax7Gki5p+TBjZxS7Q9bG9o+HtM3Cg/8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifDVFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpnaA/+MM1yOhlnGZpmKDqIk7Dui+6PABTEdegCA0qKb+3EtzWxd8dh\r\nhry/PL3R3RE2WmqhFdlEf632WjVObgKVATjJ1mnlA70bEirnKZioIkVPRVgc\r\nkOC0o2LcqzewS4ctyJ3NRQMzEJ1at7BDFqAeAuYnuMytXNyX2IMblQ9XXB1f\r\nec2qprKuXD5vXahSkf8wrjEpOph7lh3c1gY6ADjpFFkQWOjwW3+U0u7ermqL\r\njtxwRmnR5wlpCi9IM/H7iqcQwC2RmKJUImfXgvLII85wnxm5Zv3hQGKgfIPa\r\nHLHwpTNHhO6Hwv64F7dxPHsIlC473gJgtqxB/cgpGowwBrKJvDV49bW72WoC\r\njf76Hzhdp/VQKOM9uoxdLLDQ5Bohm7UEe6U/Me3PTGXag2Pa9pXjVguAyzY6\r\nbDDEA1q8hH8F/oEtbPngY0Md9vJ4G7pZ8IeiiSxfm3j9XjkBRUAgaiUQlY5R\r\nbzMNcVg9hkXnDRErg0DovphwrkcuhRGVePGt2AI5gqzSUJc2O98XWgXtTr8V\r\no/fGRbI04pn4zrhaBqg+cyyANgugomp1ZRPInzgQC2/csbSJh72iLVmyl90e\r\nLWjqRJK/QVmCNf/Ira5TqztYLUZ5P4Z9NEi60WtQ7lyituRKFHfep1WgQWLo\r\n12Z3ybY/p0nrEAhmKmsZcLJy4rAthxm1d2w=\r\n=Pwwp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"scalvert","email":"steve.calvert@gmail.com"},"directories":{},"maintainers":[{"name":"scalvert","email":"steve.calvert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_13.0.3_1652307269022_0.23954520105899935"},"_hasShrinkwrap":false},"13.1.0":{"name":"@lint-todo/utils","version":"13.1.0","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"license":"MIT","author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc --build","build:watch":"tsc --watch","clean":"tsc --build --clean","docs:update":"npm run build && readme-api-generator lib/builders.js lib/io.js lib/todo-config.js lib/get-severity.js lib/date-utils.js lib/source.js","lint":"eslint . --ext .ts","prepare":"npm run build","test":"npm-run-all lint test:*","test:vitest":"vitest run"},"dependencies":{"@types/eslint":"^7.2.13","find-up":"^5.0.0","fs-extra":"^9.1.0","proper-lockfile":"^4.1.2","slash":"^3.0.0","tslib":"^2.4.0","upath":"^2.0.1"},"devDependencies":{"@scalvert/readme-api-generator":"^0.2.4","@types/fs-extra":"^9.0.13","@types/proper-lockfile":"^4.1.2","@types/slash":"^3.0.0","@types/tmp":"^0.2.2","@typescript-eslint/eslint-plugin":"^5.40.1","@typescript-eslint/parser":"^5.39.0","date-fns":"^2.29.3","eslint":"^7.32.0","eslint-config-prettier":"^7.2.0","eslint-plugin-jest":"^24.3.6","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-tsdoc":"^0.2.17","eslint-plugin-unicorn":"^22.0.0","fixturify-project":"^2.1.1","jsdoc-to-markdown":"^7.1.1","npm-run-all":"^4.1.5","prettier":"^2.7.1","release-it":"^14.11.8","release-it-lerna-changelog":"^4.0.1","tmp":"^0.2.1","type-fest":"^2.19.0","typescript":"^4.8.4","vite":"^2.9.14","vitest":"^0.24.3"},"engines":{"node":"12.* || >= 14"},"resolutions":{"yargs-parser":"^20.2.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"release-it":{"plugins":{"release-it-lerna-changelog":{"infile":"CHANGELOG.md","launchEditor":true}},"git":{"tagName":"v${version}"},"github":{"release":true,"tokenRef":"GITHUB_AUTH"}},"volta":{"node":"14.18.3","npm":"8.19.2"},"gitHead":"072ffacea9f0b6549e0a2f7b49b65730c01c7281","description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","bugs":{"url":"https://github.com/lint-todo/utils/issues"},"homepage":"https://github.com/lint-todo/utils#readme","_id":"@lint-todo/utils@13.1.0","_nodeVersion":"14.18.3","_npmVersion":"8.19.2","dist":{"integrity":"sha512-uzcZPIPH7hcs+hKMiHfp58MosJpI9sTTgl1pGYau4zq34q1ppswJ6nLeohv/cDhqEBrHjtvldt8zDnVJXRvBlA==","shasum":"bb99b479e357f20fbf5fa200c59cafda2a02f849","tarball":"https://registry.npmjs.org/@lint-todo/utils/-/utils-13.1.0.tgz","fileCount":51,"unpackedSize":117529,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC/WonsBUlJ9kxft5wmyB6luTDn2Kdhzsca0yt1FdfzeAiBUCCgSciWlljGOnpa//I2/5B7kjbClhRZQ/XgMl+F9Dg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjX/wWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorChAAlO4CGUnXZxGQ9c+ZMbqjpx4cfUwI7LQyQ0+BFTV0w0ZLqNr1\r\nAjBdbyWawGbKpZqxMIbMF1II6wqWl0in81aYo+tzGQ8aCto9N3rnhDSNDeKl\r\nxfNBeX+gpi5fFVct91BbrpY2xEeyTjWM+xu+P73P2XqFxqrOKtFDNVgM2NCp\r\nnwjlMnSjezbcCAWv5c68G0uP3sbA0/03D3TU4toi+wyFagqgzIm+tDVB8B16\r\nba7IpnjSTDF1AcUjrp2BtgR/WxhqeNxvVgKxJKiFCdOxKhUrNikRAdmceQam\r\n9OVmgfRzt2UgIoYAf+pVHtwlik/lf26cqF0QiqEPvkYL3G2SOPM5QAPWZn43\r\nXS25Ef4iBP7e7nbSJ9X6/d4iyY/zG7wpLmS8byHkah7BVIZ+6CExYRDVQWY/\r\nW+4EfLB6vW60CLiLKocqY4FUSzUt8fkcnBVIlaH3v9g+eDoPCKWJo/HUaO/e\r\nt1YE8m6EZqSFKeqDjmOqtQQ9YPUfFoS1M32t99gsUy0qqFScJJinN4DVefHc\r\nBMNDiVoNnfYHQaDHO/1v8/qnXFy2zrkYMro/vlDklwRLYIe3urGvHZYVC1/Z\r\nhtjwHLWX42I6ca+TyMsJgkYXvCoz+4TefGlv5LebAqZFkj5oQa9MRDBEZu/B\r\n1Ql/MTR9VtHFMJ+fLIVDshwStW5c7bm8DMw=\r\n=b9Bz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"scalvert","email":"steve.calvert@gmail.com"},"directories":{},"maintainers":[{"name":"tomcharles","email":"thomas.charles23@gmail.com"},{"name":"scalvert","email":"steve.calvert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_13.1.0_1667234838733_0.010059726310012174"},"_hasShrinkwrap":false},"13.1.1":{"name":"@lint-todo/utils","version":"13.1.1","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"license":"MIT","author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc --build","build:watch":"tsc --watch","clean":"tsc --build --clean","docs:update":"npm run build && readme-api-generator lib/builders.js lib/io.js lib/todo-config.js lib/get-severity.js lib/date-utils.js lib/source.js","lint":"eslint . --ext .ts","prepare":"npm run build","test":"npm-run-all lint test:*","test:vitest":"vitest run"},"dependencies":{"@types/eslint":"^8.4.9","find-up":"^5.0.0","fs-extra":"^9.1.0","proper-lockfile":"^4.1.2","slash":"^3.0.0","tslib":"^2.4.1","upath":"^2.0.1"},"devDependencies":{"@scalvert/readme-api-generator":"^0.2.4","@types/fs-extra":"^9.0.13","@types/proper-lockfile":"^4.1.2","@types/slash":"^3.0.0","@types/tmp":"^0.2.2","@typescript-eslint/eslint-plugin":"^5.45.0","@typescript-eslint/parser":"^5.45.0","date-fns":"^2.29.3","eslint":"^8.26.0","eslint-config-prettier":"^7.2.0","eslint-plugin-jest":"^27.1.6","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-tsdoc":"^0.2.17","eslint-plugin-unicorn":"^44.0.2","fixturify-project":"^2.1.1","jsdoc-to-markdown":"^7.1.1","npm-run-all":"^4.1.5","prettier":"^2.7.1","release-it":"^14.11.8","release-it-lerna-changelog":"^4.0.1","tmp":"^0.2.1","type-fest":"^2.19.0","typescript":"^4.9.3","vite":"^2.9.14","vitest":"^0.25.3"},"engines":{"node":"12.* || >= 14"},"resolutions":{"yargs-parser":"^20.2.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"release-it":{"plugins":{"release-it-lerna-changelog":{"infile":"CHANGELOG.md","launchEditor":true}},"git":{"tagName":"v${version}"},"github":{"release":true,"tokenRef":"GITHUB_AUTH"}},"volta":{"node":"14.18.3","npm":"8.19.2"},"gitHead":"9059e88f4a396461eda3e452e56998e3fe27c2d9","description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","bugs":{"url":"https://github.com/lint-todo/utils/issues"},"homepage":"https://github.com/lint-todo/utils#readme","_id":"@lint-todo/utils@13.1.1","_nodeVersion":"14.18.3","_npmVersion":"8.19.2","dist":{"integrity":"sha512-F5z53uvRIF4dYfFfJP3a2Cqg+4P1dgJchJsFnsZE0eZp0LK8X7g2J0CsJHRgns+skpXOlM7n5vFGwkWCWj8qJg==","shasum":"5c054d61ee037b9e552add118264771122cc1166","tarball":"https://registry.npmjs.org/@lint-todo/utils/-/utils-13.1.1.tgz","fileCount":51,"unpackedSize":118829,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGMGo+CDKvFgeo3qZXl+RmtSXv/VaKDnWTt3ykBDQSGnAiEAzG9IRCtDk/FqVKUFBt6Q0LoYPwV0tcr1s5DzOiRDP3Q="}]},"_npmUser":{"name":"scalvert","email":"steve.calvert@gmail.com"},"directories":{},"maintainers":[{"name":"tomcharles","email":"thomas.charles23@gmail.com"},{"name":"scalvert","email":"steve.calvert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_13.1.1_1691772472768_0.4764399913035313"},"_hasShrinkwrap":false}},"time":{"created":"2021-12-03T04:09:02.476Z","11.0.0":"2021-12-03T04:09:02.655Z","modified":"2023-08-11T16:47:53.182Z","12.0.0":"2021-12-14T21:44:24.864Z","12.0.1":"2021-12-28T18:22:06.888Z","13.0.0":"2022-04-14T23:26:06.725Z","13.0.1":"2022-04-15T00:24:36.064Z","13.0.2":"2022-04-15T15:23:36.423Z","13.0.3":"2022-05-11T22:14:29.266Z","13.1.0":"2022-10-31T16:47:18.934Z","13.1.1":"2023-08-11T16:47:52.944Z"},"maintainers":[{"name":"tomcharles","email":"thomas.charles23@gmail.com"},{"name":"scalvert","email":"steve.calvert@gmail.com"}],"description":"![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg) [![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils) [![License](https://img.shields.io/npm/l/@checkup/cli.svg)](h","homepage":"https://github.com/lint-todo/utils#readme","repository":{"type":"git","url":"git+https://github.com/lint-todo/utils.git"},"author":{"name":"Steve Calvert","email":"steve.calvert@gmail.com"},"bugs":{"url":"https://github.com/lint-todo/utils/issues"},"license":"MIT","readme":"# @lint-todo/utils\n\n![CI Build](https://github.com/lint-todo/utils/workflows/CI%20Build/badge.svg)\n[![npm version](https://badge.fury.io/js/%40lint-todo%2Futils.svg)](https://badge.fury.io/js/%40lint-todo%2Futils)\n[![License](https://img.shields.io/npm/l/@checkup/cli.svg)](https://github.com/checkupjs/checkup/blob/master/package.json)\n![Dependabot](https://badgen.net/badge/icon/dependabot?icon=dependabot&label)\n![Volta Managed](https://img.shields.io/static/v1?label=volta&message=managed&color=yellow&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAeQC6AMEpK7AhAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH5AMGFS07qAYEaAAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAFmSURBVDjLY2CgB/g/j0H5/2wGW2xyTAQ1r2DQYOBgm8nwh+EY6TYvZtD7f9rn5e81fAGka17GYPL/esObP+dyj5Cs+edqZsv/V8o//H+z7P+XHarW+NSyoAv8WsFszyKTtoVBM5Tn7/Xys+zf7v76vYrJlPEvAwPjH0YGxp//3jGl/L8LU8+IrPnPUkY3ZomoDQwOpZwMv14zMHy8yMDwh4mB4Q8jA8OTgwz/L299wMDyx4Mp9f9NDAP+bWVwY3jGsJpB3JaDQVCEgYHlLwPDfwYWRqVQJgZmHoZ/+3PPfWP+68Mb/Pw5sqUoLni9ipuRnekrAwMjA8Ofb6K8/PKBF5nU7RX+Hize8Y2DOZTP7+kXogPy1zrH+f/vT/j/Z5nUvGcr5VhJioUf88UC/59L+/97gUgDyVH4YzqXxL8dOs/+zuFLJivd/53HseLPPHZPsjT/nsHi93cqozHZue7rLDYhUvUAADjCgneouzo/AAAAAElFTkSuQmCC&link=https://volta.sh)\n![TypeScript](https://badgen.net/badge/icon/typescript?icon=typescript&label)\n[![Code Style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](#badge)\n\nA collection of utilities to generate and store lint item metadata.\n\nThose utilities are:\n\n<!--DOCS_START-->\n## Functions\n\n<dl>\n<dt><a href=\"#buildTodoDatum\">buildTodoDatum(lintResult, lintMessage, todoConfig)</a> ⇒</dt>\n<dd><p>Adapts a <a href=\"https://github.com/lint-todo/utils/blob/master/src/types/lint.ts#L31\">LintResult</a> to a <a href=\"https://github.com/lint-todo/utils/blob/master/src/types/todo.ts#L61\">TodoData</a>. FilePaths are absolute\nwhen received from a lint result, so they&#39;re converted to relative paths for stability in\nserializing the contents to disc.</p>\n</dd>\n<dt><a href=\"#todoStorageFileExists\">todoStorageFileExists(baseDir)</a> ⇒</dt>\n<dd><p>Determines if the .lint-todo storage file exists.</p>\n</dd>\n<dt><a href=\"#ensureTodoStorageFile\">ensureTodoStorageFile(baseDir)</a> ⇒</dt>\n<dd><p>Creates, or ensures the creation of, the .lint-todo file.</p>\n</dd>\n<dt><a href=\"#getTodoStorageFilePath\">getTodoStorageFilePath(baseDir)</a> ⇒</dt>\n<dd></dd>\n<dt><a href=\"#hasConflicts\">hasConflicts(todoContents)</a> ⇒</dt>\n<dd><p>Determines if the .lint-todo storage file has conflicts.</p>\n</dd>\n<dt><a href=\"#resolveConflicts\">resolveConflicts(operations)</a> ⇒</dt>\n<dd><p>Resolves git conflicts in todo operations by removing any lines that match conflict markers.</p>\n</dd>\n<dt><a href=\"#readTodoStorageFile\">readTodoStorageFile(todoStorageFilePath)</a> ⇒</dt>\n<dd><p>Reads the .lint-todo storage file.</p>\n</dd>\n<dt><a href=\"#writeTodoStorageFile\">writeTodoStorageFile(todoStorageFilePath, operations)</a></dt>\n<dd><p>Writes the operations to the .lint-todo storage file to the path provided by todoStorageFilePath.</p>\n</dd>\n<dt><a href=\"#writeTodos\">writeTodos(baseDir, maybeTodos, options)</a> ⇒</dt>\n<dd><p>Writes files for todo lint violations. One file is generated for each violation, using a generated\nhash to identify each.</p>\n<p>Given a list of todo lint violations, this function will also delete existing files that no longer\nhave a todo lint violation.</p>\n</dd>\n<dt><a href=\"#readTodos\">readTodos(baseDir, options, shouldLock)</a> ⇒</dt>\n<dd><p>Reads all todo files in the .lint-todo file.</p>\n</dd>\n<dt><a href=\"#readTodosForFilePath\">readTodosForFilePath(baseDir, options, shouldLock)</a> ⇒</dt>\n<dd><p>Reads todo files in the .lint-todo file for a specific filePath.</p>\n</dd>\n<dt><a href=\"#readTodoData\">readTodoData(baseDir, options)</a> ⇒</dt>\n<dd><p>Reads todos in the .lint-todo file and returns Todo data in an array.</p>\n</dd>\n<dt><a href=\"#readTodoDataForFilePath\">readTodoDataForFilePath(baseDir, options)</a> ⇒</dt>\n<dd><p>Reads todos for a single filePath in the .lint-todo file and returns Todo data in an array.</p>\n</dd>\n<dt><a href=\"#generateTodoBatches\">generateTodoBatches(baseDir, maybeTodos, options)</a> ⇒</dt>\n<dd><p>Gets 4 data structures containing todo items to add, remove, those that are expired, and those that are stable (not to be modified).</p>\n</dd>\n<dt><a href=\"#getTodoBatches\">getTodoBatches(maybeTodos, existing, options)</a> ⇒</dt>\n<dd><p>Gets 4 data structures containing todo items to add, remove, those that are expired, and those that are stable (not to be modified).</p>\n</dd>\n<dt><a href=\"#applyTodoChanges\">applyTodoChanges(baseDir, add, remove, shouldLock)</a></dt>\n<dd><p>Applies todo changes, either adding or removing, based on batches from <code>getTodoBatches</code>.</p>\n</dd>\n<dt><a href=\"#compactTodoStorageFile\">compactTodoStorageFile(baseDir)</a> ⇒</dt>\n<dd><p>Compacts the .lint-todo storage file.</p>\n</dd>\n<dt><a href=\"#getTodoConfig\">getTodoConfig(baseDir, engine, customDaysToDecay)</a> ⇒</dt>\n<dd><p>Gets the todo configuration from one of a number of locations.</p>\n</dd>\n<dt><a href=\"#validateConfig\">validateConfig(baseDir)</a> ⇒</dt>\n<dd><p>Validates whether we have a unique config in a single location.</p>\n</dd>\n<dt><a href=\"#getSeverity\">getSeverity(todo, today)</a> ⇒</dt>\n<dd><p>Returns the correct severity level based on the todo data&#39;s decay dates.</p>\n</dd>\n<dt><a href=\"#isExpired\">isExpired(date, today)</a> ⇒</dt>\n<dd><p>Evaluates whether a date is expired (earlier than today)</p>\n</dd>\n<dt><a href=\"#getDatePart\">getDatePart(date)</a> ⇒</dt>\n<dd><p>Converts a date to include year, month, and day values only (time is zeroed out).</p>\n</dd>\n<dt><a href=\"#differenceInDays\">differenceInDays(startDate, endDate)</a> ⇒</dt>\n<dd><p>Returns the difference in days between two dates.</p>\n</dd>\n<dt><a href=\"#format\">format(date)</a> ⇒</dt>\n<dd><p>Formats the date in short form, eg. 2021-01-01</p>\n</dd>\n<dt><a href=\"#buildRange\">buildRange(line, column, endLine, endColumn)</a> ⇒</dt>\n<dd><p>Converts node positional numbers into a Range object.</p>\n</dd>\n<dt><a href=\"#readSource\">readSource(filePath)</a> ⇒</dt>\n<dd><p>Reads a source file, optionally caching it if it&#39;s already been read.</p>\n</dd>\n<dt><a href=\"#getSourceForRange\">getSourceForRange(source, range)</a> ⇒</dt>\n<dd><p>Extracts a source fragment from a file&#39;s contents based on the provided Range.</p>\n</dd>\n</dl>\n\n<a name=\"buildTodoDatum\"></a>\n\n## buildTodoDatum(lintResult, lintMessage, todoConfig) ⇒\nAdapts a [LintResult](https://github.com/lint-todo/utils/blob/master/src/types/lint.ts#L31) to a [TodoData](https://github.com/lint-todo/utils/blob/master/src/types/todo.ts#L61). FilePaths are absolute\nwhen received from a lint result, so they're converted to relative paths for stability in\nserializing the contents to disc.\n\n**Kind**: global function  \n**Returns**: - A [TodoData](https://github.com/lint-todo/utils/blob/master/src/types/todo.ts#L61) object.  \n\n| Param | Description |\n| --- | --- |\n| lintResult | The lint result object. |\n| lintMessage | A lint message object representing a specific violation for a file. |\n| todoConfig | An object containing the warn or error days, in integers. |\n\n<a name=\"todoStorageFileExists\"></a>\n\n## todoStorageFileExists(baseDir) ⇒\nDetermines if the .lint-todo storage file exists.\n\n**Kind**: global function  \n**Returns**: - true if the todo storage file exists, otherwise false.  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the .lint-todo storage file. |\n\n<a name=\"ensureTodoStorageFile\"></a>\n\n## ensureTodoStorageFile(baseDir) ⇒\nCreates, or ensures the creation of, the .lint-todo file.\n\n**Kind**: global function  \n**Returns**: - The todo storage file path.  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the .lint-todo storage file. |\n\n<a name=\"getTodoStorageFilePath\"></a>\n\n## getTodoStorageFilePath(baseDir) ⇒\n**Kind**: global function  \n**Returns**: - The todo storage file path.  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the .lint-todo storage file. |\n\n<a name=\"hasConflicts\"></a>\n\n## hasConflicts(todoContents) ⇒\nDetermines if the .lint-todo storage file has conflicts.\n\n**Kind**: global function  \n**Returns**: true if the file has conflicts, otherwise false.  \n\n| Param | Description |\n| --- | --- |\n| todoContents | The unparsed contents of the .lint-todo file. |\n\n<a name=\"resolveConflicts\"></a>\n\n## resolveConflicts(operations) ⇒\nResolves git conflicts in todo operations by removing any lines that match conflict markers.\n\n**Kind**: global function  \n**Returns**: An array of string operations excluding any operations that were identified as git conflict lines.  \n\n| Param | Description |\n| --- | --- |\n| operations | An array of string operations that are used to recreate todos. |\n\n<a name=\"readTodoStorageFile\"></a>\n\n## readTodoStorageFile(todoStorageFilePath) ⇒\nReads the .lint-todo storage file.\n\n**Kind**: global function  \n**Returns**: A array of todo operations.  \n\n| Param | Description |\n| --- | --- |\n| todoStorageFilePath | The .lint-todo storage file path. |\n\n<a name=\"writeTodoStorageFile\"></a>\n\n## writeTodoStorageFile(todoStorageFilePath, operations)\nWrites the operations to the .lint-todo storage file to the path provided by todoStorageFilePath.\n\n**Kind**: global function  \n\n| Param | Description |\n| --- | --- |\n| todoStorageFilePath | The .lint-todo storage file path. |\n| operations | An array of string operations that are used to recreate todos. |\n\n<a name=\"writeTodos\"></a>\n\n## writeTodos(baseDir, maybeTodos, options) ⇒\nWrites files for todo lint violations. One file is generated for each violation, using a generated\nhash to identify each.\n\nGiven a list of todo lint violations, this function will also delete existing files that no longer\nhave a todo lint violation.\n\n**Kind**: global function  \n**Returns**: - The counts of added and removed todos.  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the .lint-todo storage file. |\n| maybeTodos | The linting data, converted to TodoData format. |\n| options | An object containing write options. |\n\n<a name=\"readTodos\"></a>\n\n## readTodos(baseDir, options, shouldLock) ⇒\nReads all todo files in the .lint-todo file.\n\n**Kind**: global function  \n**Returns**: - A [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) of [FilePath](https://github.com/lint-todo/utils/blob/master/src/types/todo.ts#L25)/[TodoMatcher](https://github.com/lint-todo/utils/blob/master/src/todo-matcher.ts#L4).  \n\n| Param | Default | Description |\n| --- | --- | --- |\n| baseDir |  | The base directory that contains the .lint-todo storage file. |\n| options |  | An object containing read options. |\n| shouldLock | <code>true</code> | True if the .lint-todo storage file should be locked, otherwise false. Default: true. |\n\n<a name=\"readTodosForFilePath\"></a>\n\n## readTodosForFilePath(baseDir, options, shouldLock) ⇒\nReads todo files in the .lint-todo file for a specific filePath.\n\n**Kind**: global function  \n**Returns**: - A [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) of [FilePath](https://github.com/lint-todo/utils/blob/master/src/types/todo.ts#L25)/[TodoMatcher](https://github.com/lint-todo/utils/blob/master/src/todo-matcher.ts#L4).  \n\n| Param | Default | Description |\n| --- | --- | --- |\n| baseDir |  | The base directory that contains the .lint-todo storage file. |\n| options |  | An object containing read options. |\n| shouldLock | <code>true</code> | True if the .lint-todo storage file should be locked, otherwise false. Default: true. |\n\n<a name=\"readTodoData\"></a>\n\n## readTodoData(baseDir, options) ⇒\nReads todos in the .lint-todo file and returns Todo data in an array.\n\n**Kind**: global function  \n**Returns**: An array of [TodoData](https://github.com/lint-todo/utils/blob/master/src/types/todo.ts#L61)  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the .lint-todo storage file. |\n| options | An object containing read options. |\n\n<a name=\"readTodoDataForFilePath\"></a>\n\n## readTodoDataForFilePath(baseDir, options) ⇒\nReads todos for a single filePath in the .lint-todo file and returns Todo data in an array.\n\n**Kind**: global function  \n**Returns**: An array of [TodoData](https://github.com/lint-todo/utils/blob/master/src/types/todo.ts#L61)  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the .lint-todo storage file. |\n| options | An object containing read options. |\n\n<a name=\"generateTodoBatches\"></a>\n\n## generateTodoBatches(baseDir, maybeTodos, options) ⇒\nGets 4 data structures containing todo items to add, remove, those that are expired, and those that are stable (not to be modified).\n\n**Kind**: global function  \n**Returns**: - An object of [TodoBatches](https://github.com/lint-todo/utils/blob/master/src/types/todo.ts#L36).  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the .lint-todo storage file. |\n| maybeTodos | The linting data for violations. |\n| options | An object containing write options. |\n\n<a name=\"getTodoBatches\"></a>\n\n## getTodoBatches(maybeTodos, existing, options) ⇒\nGets 4 data structures containing todo items to add, remove, those that are expired, and those that are stable (not to be modified).\n\n**Kind**: global function  \n**Returns**: - An object of [TodoBatches](https://github.com/lint-todo/utils/blob/master/src/types/todo.ts#L36).  \n\n| Param | Description |\n| --- | --- |\n| maybeTodos | The linting data for violations. |\n| existing | Existing todo lint data. |\n| options | An object containing write options. |\n\n<a name=\"applyTodoChanges\"></a>\n\n## applyTodoChanges(baseDir, add, remove, shouldLock)\nApplies todo changes, either adding or removing, based on batches from `getTodoBatches`.\n\n**Kind**: global function  \n\n| Param | Default | Description |\n| --- | --- | --- |\n| baseDir |  | The base directory that contains the .lint-todo storage file. |\n| add |  | Batch of todos to add. |\n| remove |  | Batch of todos to remove. |\n| shouldLock | <code>true</code> | True if the .lint-todo storage file should be locked, otherwise false. Default: true. |\n\n<a name=\"compactTodoStorageFile\"></a>\n\n## compactTodoStorageFile(baseDir) ⇒\nCompacts the .lint-todo storage file.\n\n**Kind**: global function  \n**Returns**: The count of compacted todos.  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the .lint-todo storage file. |\n\n<a name=\"getTodoConfig\"></a>\n\n## getTodoConfig(baseDir, engine, customDaysToDecay) ⇒\nGets the todo configuration from one of a number of locations.\n\n**Kind**: global function  \n**Returns**: - The todo config object.  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the project's package.json. |\n| engine | The engine for this configuration, eg. eslint |\n| customDaysToDecay | The optional custom days to decay configuration. |\n\n**Example**  \nUsing the package.json\n```json\n{\n  \"lintTodo\": {\n    \"some-engine\": {\n      \"daysToDecay\": {\n        \"warn\": 5,\n        \"error\": 10\n      },\n      \"daysToDecayByRule\": {\n        \"no-bare-strings\": { \"warn\": 10, \"error\": 20 }\n      }\n    }\n  }\n}\n```\n**Example**  \nUsing the .lint-todorc.js file\n```js\nmodule.exports = {\n  \"some-engine\": {\n    \"daysToDecay\": {\n      \"warn\": 5,\n      \"error\": 10\n    },\n    \"daysToDecayByRule\": {\n      \"no-bare-strings\": { \"warn\": 10, \"error\": 20 }\n    }\n  }\n}\n```\n**Example**  \n```js\nUsing environment variables (`TODO_DAYS_TO_WARN` or `TODO_DAYS_TO_ERROR`)\n\t- Env vars override package.json config\n```\n**Example**  \n```js\nPassed in directly, such as from command line options.\n\t- Passed in options override both env vars and package.json config\n```\n<a name=\"validateConfig\"></a>\n\n## validateConfig(baseDir) ⇒\nValidates whether we have a unique config in a single location.\n\n**Kind**: global function  \n**Returns**: A ConfigValidationResult that indicates whether a config is unique  \n\n| Param | Description |\n| --- | --- |\n| baseDir | The base directory that contains the project's package.json. |\n\n<a name=\"getSeverity\"></a>\n\n## getSeverity(todo, today) ⇒\nReturns the correct severity level based on the todo data's decay dates.\n\n**Kind**: global function  \n**Returns**: Severity - the lint severity based on the evaluation of the decay dates.  \n\n| Param | Description |\n| --- | --- |\n| todo | The todo data. |\n| today | A number representing a date (UNIX Epoch - milliseconds) |\n\n<a name=\"isExpired\"></a>\n\n## isExpired(date, today) ⇒\nEvaluates whether a date is expired (earlier than today)\n\n**Kind**: global function  \n**Returns**: true if the date is earlier than today, otherwise false  \n\n| Param | Description |\n| --- | --- |\n| date | The date to evaluate |\n| today | A number representing a date (UNIX Epoch - milliseconds) |\n\n<a name=\"getDatePart\"></a>\n\n## getDatePart(date) ⇒\nConverts a date to include year, month, and day values only (time is zeroed out).\n\n**Kind**: global function  \n**Returns**: Date - A date with the time zeroed out eg. '2021-01-01T08:00:00.000Z'  \n\n| Param | Description |\n| --- | --- |\n| date | The date to convert |\n\n<a name=\"differenceInDays\"></a>\n\n## differenceInDays(startDate, endDate) ⇒\nReturns the difference in days between two dates.\n\n**Kind**: global function  \n**Returns**: a number representing the days between the dates  \n\n| Param | Description |\n| --- | --- |\n| startDate | The start date |\n| endDate | The end date |\n\n<a name=\"format\"></a>\n\n## format(date) ⇒\nFormats the date in short form, eg. 2021-01-01\n\n**Kind**: global function  \n**Returns**: A string representing the formatted date  \n\n| Param | Description |\n| --- | --- |\n| date | The date to format |\n\n<a name=\"buildRange\"></a>\n\n## buildRange(line, column, endLine, endColumn) ⇒\nConverts node positional numbers into a Range object.\n\n**Kind**: global function  \n**Returns**: A range object.  \n\n| Param | Description |\n| --- | --- |\n| line | The source start line. |\n| column | The source start column. |\n| endLine | The source end line. |\n| endColumn | The source end column. |\n\n<a name=\"readSource\"></a>\n\n## readSource(filePath) ⇒\nReads a source file, optionally caching it if it's already been read.\n\n**Kind**: global function  \n**Returns**: The file contents.  \n\n| Param | Description |\n| --- | --- |\n| filePath | The path to the source file. |\n\n<a name=\"getSourceForRange\"></a>\n\n## getSourceForRange(source, range) ⇒\nExtracts a source fragment from a file's contents based on the provided Range.\n\n**Kind**: global function  \n**Returns**: The source fragment.  \n\n| Param | Description |\n| --- | --- |\n| source | The file contents. |\n| range | A Range object representing the range to extract from the file contents. |\n\n\n<!--DOCS_END-->\n","readmeFilename":"README.md"}