{"_id":"@micthiesen/mitools","_rev":"50-96caf82c24871bd446b0daf73f44df15","name":"@micthiesen/mitools","dist-tags":{"latest":"4.1.0"},"versions":{"0.0.3":{"name":"@micthiesen/mitools","version":"0.0.3","_id":"@micthiesen/mitools@0.0.3","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"d6c27b2370d5143f70f366c8d4545bbbf761a475","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-0.0.3.tgz","fileCount":3,"integrity":"sha512-qGFjeAwD7qXbGhaZuSbN/ESKSN0+oM00TPEjDatEZQl70gunQQoW4yrXY2NDG1rmOjToVWMFUmky0/7N0UPHAA==","signatures":[{"sig":"MEUCIHHLSWoyLwq03B+Shz1bEFmYKWoob1ENE1Qr7zmTNWwpAiEAjxWa3m6Y0XjYA0cNvxgwSLojKDoXzWRnBeMCKMcGLZY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1742},"main":"dist/index.js","type":"module","_from":"file:micthiesen-mitools-0.0.3.tgz","engines":{"node":"20.16.0","pnpm":"9.12.0"},"scripts":{"lint":"biome lint .","build":"tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_resolved":"/tmp/a43de9d89c8658ce049a5e5947d30ccf/micthiesen-mitools-0.0.3.tgz","_integrity":"sha512-qGFjeAwD7qXbGhaZuSbN/ESKSN0+oM00TPEjDatEZQl70gunQQoW4yrXY2NDG1rmOjToVWMFUmky0/7N0UPHAA==","_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"registry":"https://npm.pkg.github.com"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mitools_0.0.3_1729980428048_0.30311631437128117","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@micthiesen/mitools","version":"1.0.0","_id":"@micthiesen/mitools@1.0.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"71cc43fcb479a65d40449657bbe58284087589eb","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.0.0.tgz","fileCount":9,"integrity":"sha512-nuP+A583bz5lqoXTyo5CQIPraiN3u9FiFQlWSaGHMVxtD55cCAnUkfjOr6eBg2PLIlF0pcDF2nUspJCUzceTxA==","signatures":[{"sig":"MEYCIQD9QSGUTd5oBoy63D4O+nGPBkTPTan2sapqmHk10NGWKgIhAIns1pBAkvsd6hBogRqj61nBJ28jEnFIvxcanfjl8+Go","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6800},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"20.16.0","pnpm":"9.12.0"},"gitHead":"d2fb8e8c5b2558057e9fd449ee4c9c29855e4973","scripts":{"lint":"biome lint .","build":"tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.0.0_1729980897450_0.15465727525218598","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@micthiesen/mitools","version":"1.0.1","_id":"@micthiesen/mitools@1.0.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"9651a442d654d2a37683bca0b4c5d45fe5b3559a","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.0.1.tgz","fileCount":27,"integrity":"sha512-4FmQA9JGbdnDM9kDnHVrkm837zAptQ1wjtCrY4gt8N7pD6gpWG9CWNIad2QcFArMM5++uHmt5WerEewolg8dJw==","signatures":[{"sig":"MEUCIQDrVpd5fKWPs32oV22LRbItmaqlYBFicY7vWnHy1/43QQIgK6P9p4u2EjLEWb/sLVS1T7v1z6So53Go5Jv7/2pKrQY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16294},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"20.16.0","pnpm":"9.12.0"},"gitHead":"5077442d12181043e8ae91cbb70bc92f006dd54b","scripts":{"lint":"biome lint .","build":"tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.0.1_1729981051797_0.4279192085233745","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@micthiesen/mitools","version":"1.0.2","_id":"@micthiesen/mitools@1.0.2","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"da20c7dfdc8b25dfb0877804f9b79daacede1a7b","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.0.2.tgz","fileCount":21,"integrity":"sha512-AC6WPTWf020YxMLCwW27tgIKb8TfjiOrHqhEWSKqHzfwNEjDzDxKLoyHup2zxTceLaTlj2Qp/BfUUlwVe6y7PQ==","signatures":[{"sig":"MEYCIQCvH8AoTfq2J0vfFo2kCJ+ITa0GYIqdXzqh/7fLmxQ11AIhAPfBg2WIlbhRT4buaubT5ip2koH0I3btb62ipI/vsPN2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11356},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"20.16.0","pnpm":"9.12.0"},"gitHead":"de71159e2bb0b20f82b9da32557dd1840977e9d4","scripts":{"lint":"biome lint .","build":"tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.0.2_1729981115392_0.3462055784144966","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@micthiesen/mitools","version":"1.0.3","_id":"@micthiesen/mitools@1.0.3","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"7e8d9046a10dd2c59915a1606f31f7b41c8b19ea","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.0.3.tgz","fileCount":36,"integrity":"sha512-KS+LYgSqp+1FRgQQCW6vT92lQuO0hmy4ysL8/DJIiLv4OZShcAQjslA0se2WCLgCj4WuT3uz7U2DVbxt9deYDA==","signatures":[{"sig":"MEUCIQDO+1cyOMPxMiWEVdPir0CTB70fx5Ek8An0+tq0lOq+XAIgdHFWoEeyr7c2B7+s7AGfA/bTVpaO7leNegLQF+KTx0s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13313},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"20.16.0","pnpm":"9.12.0"},"gitHead":"0035b29b31993c730af8c86bacac2d188f44961a","scripts":{"lint":"biome lint .","build":"tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.0.3_1729981729000_0.16959635598235323","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@micthiesen/mitools","version":"1.1.0","_id":"@micthiesen/mitools@1.1.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"d967b6115fc7616efc9104a6bc42a8a46331bc96","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.1.0.tgz","fileCount":36,"integrity":"sha512-i3F34b6M+bU9lNTCJ3+0kdz/Wm8UY9uprU6SVnznJ9F68oJCx1QU/e3O6fJ2Kk7AZn7agCY2csUmjgEHhYxsJg==","signatures":[{"sig":"MEUCIHV8qUSYTjTopdlzWrXHvj+NpNe9p+bUDJfA93cuxYRtAiEA5u66NFeinVnUe/qMxLq2M9e2jHsrKMg14YMG9xOys/8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12902},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"20.16.0","pnpm":"9.12.0"},"gitHead":"eeaf5188270e2970887215cc1324804430260132","scripts":{"lint":"biome lint .","build":"tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.1.0_1729982260970_0.7773907020538744","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@micthiesen/mitools","version":"1.1.1","_id":"@micthiesen/mitools@1.1.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"457f53e2a5e2f5c8730c347cf55de392cb714869","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.1.1.tgz","fileCount":36,"integrity":"sha512-6bOYpzoIhcBAimw0EP/Iw4nFkUaRaHrLv3BWY1UAzqk7BVmB1kqDEodLsdHSrs0TSKcFtXP9HFl8GO2tRpfkmA==","signatures":[{"sig":"MEYCIQCUTnFNuQtNJN+9FWnHQ5ifymCtpu3M3daVpj+AJLUqywIhAIBJCt7Pn0rjmxERgz/j9jTerKHHHgUKpa2eNLr0Xt9C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"20.16.0","pnpm":"9.12.0"},"gitHead":"48f216d2ab73741ac3f15bd079751ab5ff08ec35","scripts":{"lint":"biome lint .","build":"tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.1.1_1729982567501_0.06962822197727525","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@micthiesen/mitools","version":"1.1.2","_id":"@micthiesen/mitools@1.1.2","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"842182f46ee9908dd207aa1d70676bb3162e6972","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.1.2.tgz","fileCount":36,"integrity":"sha512-cbJIXzfpSDjFBcsfKac2vr8mh9ra0FKXqhhzeWEeWbRo5Qxah7Hr+nq1wQ/UhgPv/HDA5fgr11tm17bfOsPNLg==","signatures":[{"sig":"MEYCIQDNRBEZWV4fORLs5F/TMCIFnU3UrH4QofEdUVlJZ0KdegIhAKeFm0dWqVGeTWefrfmu3eLF8N1FKxgBRrm1hIYWDe9p","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13279},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"20.16.0","pnpm":"9.12.0"},"gitHead":"6659851998651fe26a3702f02e7738c58140d882","scripts":{"lint":"biome lint .","build":"tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.1.2_1729987170545_0.5610331987095798","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"@micthiesen/mitools","version":"1.1.3","_id":"@micthiesen/mitools@1.1.3","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"a0e18e2fa479e333a6a9ad49e8ddb5f37229002d","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.1.3.tgz","fileCount":33,"integrity":"sha512-CGXIAx09932kVLGz7Ckr2KG8C3ZwtZ/slcBYSnlkCeUqdv/KKVEwttcwRObrczVINigTSYcXSAcgsbxaBNabGw==","signatures":[{"sig":"MEUCIADkQoNiQ/Ka3o9PZC3pC4yi7ntnQS4ZuyR6HGBeGjcbAiEA7nqpjYB/KirMC+1u85BAuTt2rltVSDxuOCIVj52OOcQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14741},"type":"module","engines":{"node":"20.16.0","pnpm":"9.12.0"},"exports":{"./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./docstore":"./dist/persistence/docstore.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"gitHead":"184680556d13f45fea1f4c022af260c47db0b0e0","scripts":{"lint":"biome lint .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.1.3_1730012699118_0.0658472948140627","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"@micthiesen/mitools","version":"1.1.4","_id":"@micthiesen/mitools@1.1.4","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"dc298ec289b15b27c28c71998f2779d624c7dd95","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.1.4.tgz","fileCount":36,"integrity":"sha512-kO+XBMhF9HdKz+AlW+R3wT8/s/ErpMjeWuDH7TYNJe/6wwHux2m5l0rEIcD8eiSQW/09hjReF65E7qwLzBjz6A==","signatures":[{"sig":"MEYCIQC6OA8V02N2kTqxfLZboUjIfNmNjX91JzeMXTtcFJPukwIhAMb8kILyknxxxUy3+l8xm7wEi6LKXzb/GhO/2/CUmgsH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15622},"type":"module","engines":{"node":"20.16.0","pnpm":"9.12.0"},"exports":{"./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./docstore":"./dist/persistence/docstore.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"gitHead":"ee8fe97ced2352013d11655e86d8e233af6d8a65","scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.1.4_1730014105656_0.5757418294490215","host":"s3://npm-registry-packages"}},"1.1.5":{"name":"@micthiesen/mitools","version":"1.1.5","_id":"@micthiesen/mitools@1.1.5","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"3f96aa7aa333f62293077629d95a93484183bd24","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.1.5.tgz","fileCount":36,"integrity":"sha512-dM+bt2h5+2l2PXpDdSNCe3RSucpkoiL+ttsF/jy9rktUJk1lHgaFdycHBV5dhSrZq8f2WJqz829FBmrHHJbK0Q==","signatures":[{"sig":"MEUCIEYB1msgVzwBsKE+FGj3c24FgmLGKpF45qFTFDCYHR/eAiEAn0GpRl/g65rCiHJDr4pKzJWokvdjJI1b4O4fhgb87VA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15652},"type":"module","engines":{"node":"20.16.0","pnpm":"9.12.0"},"exports":{"./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./docstore":"./dist/persistence/docstore.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"gitHead":"c6a084c7794ba6f12183cf5b6bb012e029ef6558","scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.1.5_1730014545040_0.6199117757679977","host":"s3://npm-registry-packages"}},"1.1.6":{"name":"@micthiesen/mitools","version":"1.1.6","_id":"@micthiesen/mitools@1.1.6","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"aa8d8002d3522fd35d87f4360c6a3f75a8254f9b","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.1.6.tgz","fileCount":39,"integrity":"sha512-4nN2m6yHslQmPbHTTvvt3m5SPfq1ZVUFXkyHD4SdM05SIm9Ce3jmX+Cq9IYlRHZwwtJ3lF59hfdCy/zssr3w0Q==","signatures":[{"sig":"MEYCIQDXnLpicayhSvvvecsrK7R2xWAT7DQirb/rYLAgjCclgwIhALJzgERk75uyYe86IYPreCHPt828ys+4ueOuU6CyYwkb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16145},"type":"module","engines":{"node":"20.16.0","pnpm":"9.12.0"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./docstore":"./dist/persistence/docstore.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"gitHead":"c18b6d2818ac129f2b3b945c4f6761dbc119c3c9","scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.1.6_1730015054540_0.7715774758253766","host":"s3://npm-registry-packages"}},"1.1.7":{"name":"@micthiesen/mitools","version":"1.1.7","_id":"@micthiesen/mitools@1.1.7","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"29ade7c9128a48144136d6967f2fc0f753529928","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.1.7.tgz","fileCount":39,"integrity":"sha512-YCwgH6HuBu65SMjZ8nvCnKfi4BLhWNsfyc0SDAmhJP/EBXyW5Hr/rhdTxqFvOAeFa/bexY/QSDUFZ+Y3C9nv3Q==","signatures":[{"sig":"MEQCIEiytkhYZV6awV+lHaDQp1T6cbv8u0vgFGfbIyeSbELHAiAvAEfGC3V7/lmQYWT4qNigs/iuzuLJ2IoBYQyc8r0xQA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16966},"type":"module","engines":{"node":"20.16.0","pnpm":"9.12.0"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./docstore":"./dist/persistence/docstore.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"gitHead":"c89a162def82ae0cece63f48953a034c955304c3","scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.1.7_1730062699644_0.666290814328871","host":"s3://npm-registry-packages"}},"1.1.8":{"name":"@micthiesen/mitools","version":"1.1.8","_id":"@micthiesen/mitools@1.1.8","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"7270950e14ed6193c06cb60cc7c0abee337017fd","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.1.8.tgz","fileCount":45,"integrity":"sha512-kLIA5eGozoVqXg9dVD97/rnSsCS+Zo64VJ9S6uOo3wHKizd3/ZZAA8juFb05QHONcgVC5jx43NKF5jB6QG1lzQ==","signatures":[{"sig":"MEUCIAhrZNj1IQh9ljOYwZJVRlxom3c7Zw+7S3TnbMOVmIOQAiEAoB3N/b1Aqgac4NqIYmrvZhud3AacCUYRlZh+PVWLK+Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20688},"type":"module","engines":{"node":"20.16.0","pnpm":"9.12.0"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./docstore":"./dist/persistence/docstore.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"gitHead":"a31cb5768146d2cb37f31ef1b679197aaf6a0c92","scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.1.8_1730070321857_0.8587907286347809","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@micthiesen/mitools","version":"1.2.0","_id":"@micthiesen/mitools@1.2.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"b8563e882c5daeb3f34dc80becd0743398db7c66","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.2.0.tgz","fileCount":45,"integrity":"sha512-ra/cyLP0HhrWalfyv2W8PDgmepcAhUesEQWDSMYwafcJh+lIKYVPIBS1doOCraq7yJ3Vuv44M+MH0mwNGTVZWg==","signatures":[{"sig":"MEUCIQC7tlOklhU4lo+eXDbIlY0TFnTp83+/i6gBNb3akl7EyQIgcffA2ArzcjMMGovE9OlOXRjhj5cnevPeNYIse09nxLc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20740},"type":"module","engines":{"node":"20.16.0","pnpm":"9.12.0"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"gitHead":"84cc3589e357506e5e328767044e11594c729d19","scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.2.0_1730070545449_0.13423958265128255","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@micthiesen/mitools","version":"1.2.1","_id":"@micthiesen/mitools@1.2.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"b2dad3c225b7db97e24cd2d9f78038da0d89df34","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.2.1.tgz","fileCount":48,"integrity":"sha512-tggzF05bn1Avv9I8VTHBhhJxoj3vhph1MViNWqqOsjVFPFvjCnXAYj9YnvyXeMZfweGTWV2fmWO372imrDVlRw==","signatures":[{"sig":"MEUCIQDCJDmr9hpPmCAfyre1WMTw1GbVFKzx1BAQbLfXYkjyrAIgbJpeY99FHRvneXhRYtrxPLguigfL6jh1YAlsxS/XOm8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21817},"type":"module","engines":{"node":"20.16.0","pnpm":"9.12.0"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"gitHead":"ef92b8209d6ed9287899fe8be0ae13b421f88a9e","scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","publish":"pnpm build && pnpm publish --access public","typecheck":"tsc --noEmit"},"_npmUser":{"name":"micthiesen","email":"michael@thiesen.dev"},"_npmVersion":"10.8.1","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.0","devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.2.1_1730071039751_0.8502683560470616","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@micthiesen/mitools","version":"1.3.0","_id":"@micthiesen/mitools@1.3.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"92048f47062ba8deb1a9b43da6cffd43cf68141d","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.3.0.tgz","fileCount":48,"integrity":"sha512-+EvRVUHsRgEG/xtGCRnpbJqwhG5yK1UxF76HWSbuysMzJnFjTq1gTP6J7neNSeingTZqjHhNVLBOONIct1bAJQ==","signatures":[{"sig":"MEUCIQC1DCm6D0IQx2DQ9xe+Cw1cnCiFQ+yQtPeYPsfhGvSpRAIgZlYcy5eJcj1Iq/PAyTfuvt7g+9bnMN6LsUyX7+NCZ28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23944},"type":"module","_from":"file:micthiesen-mitools-1.3.0.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/efde4c102d225c50d751aaea10d7e112/micthiesen-mitools-1.3.0.tgz","_integrity":"sha512-+EvRVUHsRgEG/xtGCRnpbJqwhG5yK1UxF76HWSbuysMzJnFjTq1gTP6J7neNSeingTZqjHhNVLBOONIct1bAJQ==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.3.0_1770268785535_0.5991154948520145","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@micthiesen/mitools","version":"1.3.1","_id":"@micthiesen/mitools@1.3.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"ae9124c0ed34f408fc24216998d3da61cc8a1b63","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.3.1.tgz","fileCount":48,"integrity":"sha512-FHPAVG1mmUP/67dfW0+lLtow2Nix45U7BZAHyGKkKWy5VNqXkwW3eah7jTPwzXkYb7l2OCldreVreg2MeuOCnA==","signatures":[{"sig":"MEYCIQCGpeSIenY8y40bqpVZdcjUhB9fQ0RqOjZEUSPTEKaJ3gIhAOjASbW9+PfWwJnX5MZeJP9q8INb5Z/60memrI8rGJ8h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24633},"type":"module","_from":"file:micthiesen-mitools-1.3.1.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/623c6c74dcaf0b604ba8f4f52eb62364/micthiesen-mitools-1.3.1.tgz","_integrity":"sha512-FHPAVG1mmUP/67dfW0+lLtow2Nix45U7BZAHyGKkKWy5VNqXkwW3eah7jTPwzXkYb7l2OCldreVreg2MeuOCnA==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.3.1_1770273298357_0.4614826224751616","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@micthiesen/mitools","version":"1.3.2","_id":"@micthiesen/mitools@1.3.2","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"c72b46663c44a063ab6b60edbd87976fdecf815c","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.3.2.tgz","fileCount":48,"integrity":"sha512-Z2NotHPN6Wf0VDWwP7slmgBMarlnLPbZK27H/wKPH1a/t/cL9nnh9QRBNYzC8hM93XcObwWjP8efNdt/Em6zEw==","signatures":[{"sig":"MEUCIQDbPxLjx+1w7g4HS4Gcr+AKcfvLUqPUb1SSTTVaDW5p2gIgSA4cnW/sxdBxVR/fv+KzUjMQJxUhfTVMqi9jBqi3Ccg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24701},"type":"module","_from":"file:micthiesen-mitools-1.3.2.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/f2ca587dd44b8f694dcf6a1e4537ecf5/micthiesen-mitools-1.3.2.tgz","_integrity":"sha512-Z2NotHPN6Wf0VDWwP7slmgBMarlnLPbZK27H/wKPH1a/t/cL9nnh9QRBNYzC8hM93XcObwWjP8efNdt/Em6zEw==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.3.2_1771189319590_0.3206230411115103","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@micthiesen/mitools","version":"1.4.0","_id":"@micthiesen/mitools@1.4.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"3aab5f6b5a6e79830959bf04a2a9b28885658e89","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.4.0.tgz","fileCount":51,"integrity":"sha512-x1v/5TK8uPFYLKtdL4i0b5unWiMGZJ1Prtfp7JSNABjz9KX/c91sP3p362DrDYGQwT6FvZ4S1kyUdMYA3PIVBQ==","signatures":[{"sig":"MEUCIC/E/9rvtxiA8VYLQSWXwJtGW6eej6cwZCpfTquh3tEeAiEA7v4T6YQDM78KANJIIRqODAHPUUL91lkP39rFMSo2HsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27273},"type":"module","_from":"file:micthiesen-mitools-1.4.0.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/a895e525779a01ddf1a899e9a206e8f4/micthiesen-mitools-1.4.0.tgz","_integrity":"sha512-x1v/5TK8uPFYLKtdL4i0b5unWiMGZJ1Prtfp7JSNABjz9KX/c91sP3p362DrDYGQwT6FvZ4S1kyUdMYA3PIVBQ==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.4.0_1772401283817_0.7642284919106754","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@micthiesen/mitools","version":"1.5.0","_id":"@micthiesen/mitools@1.5.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"8d6eb393e61e57073a94a1edc6c69d581f43cff9","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.5.0.tgz","fileCount":51,"integrity":"sha512-jqY6gyBLBEw9ch7uUTKLnlVbxGLTHj7mdAALrcH/TqCEn/ViKWco3dw2cDzI1reLd7mH+5knpq0WE4VCiex2Vg==","signatures":[{"sig":"MEYCIQDSEFVjxg9znHFqlA7d1jGck85evXFPamKYIfG+DrvAjwIhAJyL5qDf0KZ/G1QhC66yrwkBtUytMzbx0AEltExTSAh7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":35311},"type":"module","_from":"file:micthiesen-mitools-1.5.0.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/9292559b52b9a785212d59e6cf867238/micthiesen-mitools-1.5.0.tgz","_integrity":"sha512-jqY6gyBLBEw9ch7uUTKLnlVbxGLTHj7mdAALrcH/TqCEn/ViKWco3dw2cDzI1reLd7mH+5knpq0WE4VCiex2Vg==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.5.0_1774069818955_0.9813091430447431","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@micthiesen/mitools","version":"1.6.0","_id":"@micthiesen/mitools@1.6.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"e458d79dac22f802735c878c3b84f6c3fca3d5e1","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.6.0.tgz","fileCount":51,"integrity":"sha512-B/enzXFVSKVJSd1FC0EVjBEDJaQNZKPJq5OoMzcZ5DYF+UM19IX9YYQj/LWW/L1yihYLlDE/HQ2NLhCNUye1EA==","signatures":[{"sig":"MEUCIGFyNLraBiNJSZLrWYlqizIKjau9K/jQnCNAlVMZ+KIBAiEAyY7DIcuN/X/nUoqGrVkqawUGXZixAsE/TO+AnALF1UA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37304},"type":"module","_from":"file:micthiesen-mitools-1.6.0.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/5c30e8eb161f09756c93c5eb2dce6da6/micthiesen-mitools-1.6.0.tgz","_integrity":"sha512-B/enzXFVSKVJSd1FC0EVjBEDJaQNZKPJq5OoMzcZ5DYF+UM19IX9YYQj/LWW/L1yihYLlDE/HQ2NLhCNUye1EA==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.6.0_1774078672408_0.09091354717812661","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@micthiesen/mitools","version":"1.6.1","_id":"@micthiesen/mitools@1.6.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"2d0a7f7f1b76c6b9de1bfe7add5b351e11b1364f","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.6.1.tgz","fileCount":51,"integrity":"sha512-lUuM/q77dMgVevVU+Bz3d4cl33TXuNkYjQiFeYzPjoHk8tF0IYMaOz7Z0yubgT2WkFY7z7pPfvnbRb4/7GnrYA==","signatures":[{"sig":"MEYCIQD2363/Y0LnzT4IDDhNQAPM6Tw7DwIvTmgg893m10ctlAIhAN9abMcSh/yg1A35dynV5/KoWbixA2U2whgZd7QC4+1z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37855},"type":"module","_from":"file:micthiesen-mitools-1.6.1.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/3879ca7e322d0d961e43e35859ee9cc6/micthiesen-mitools-1.6.1.tgz","_integrity":"sha512-lUuM/q77dMgVevVU+Bz3d4cl33TXuNkYjQiFeYzPjoHk8tF0IYMaOz7Z0yubgT2WkFY7z7pPfvnbRb4/7GnrYA==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.6.1_1774079468537_0.25782642115136745","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@micthiesen/mitools","version":"1.6.2","_id":"@micthiesen/mitools@1.6.2","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"dacd244f712054047e03da7b124d3bbb22843b9c","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.6.2.tgz","fileCount":51,"integrity":"sha512-kYJoxLY3KWxJFnY8yqSqtBph5lbbxO3g00QmaTaQp6eypfW2QpGhUrh2Y6Z3UWXK3u/B6NuFe/WUrAyW5N9PLA==","signatures":[{"sig":"MEUCIQD7XvREJhz/nDJQ4jJueha9eO4nI54HvWipEJBM+Be2twIgCNSsSI4kqWByNenTksVX/w34wmD9fOrdFHXr/5+dlPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37950},"type":"module","_from":"file:micthiesen-mitools-1.6.2.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/2241cfb8500a074278091684f29179e5/micthiesen-mitools-1.6.2.tgz","_integrity":"sha512-kYJoxLY3KWxJFnY8yqSqtBph5lbbxO3g00QmaTaQp6eypfW2QpGhUrh2Y6Z3UWXK3u/B6NuFe/WUrAyW5N9PLA==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.6.2_1774081815396_0.07543369699263303","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@micthiesen/mitools","version":"1.7.0","_id":"@micthiesen/mitools@1.7.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"1d9d1d7f2d7bffb0b44a08d273a3f2e556b12bb9","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.7.0.tgz","fileCount":57,"integrity":"sha512-x+IV75V5vSTelVBHWx3w1unwZ7eM44skK7nQFcPh3f2WndFC0Zt6jr5rE/Nc8UAGuYUI9JGhDZK9g0NN8ssxLw==","signatures":[{"sig":"MEQCIDXp1GPXVKli4rNgxHCpA2dCjVmGxGJRs8PjR0OqrqceAiBM5wz+FDGnFg2PQC53j7zsugJ3yl3ASJeGppaF4s/agw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39364},"type":"module","_from":"file:micthiesen-mitools-1.7.0.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/cf161652347c38b88972932adff2ae79/micthiesen-mitools-1.7.0.tgz","_integrity":"sha512-x+IV75V5vSTelVBHWx3w1unwZ7eM44skK7nQFcPh3f2WndFC0Zt6jr5rE/Nc8UAGuYUI9JGhDZK9g0NN8ssxLw==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.7.0_1774317179827_0.5958263215748232","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@micthiesen/mitools","version":"1.7.1","_id":"@micthiesen/mitools@1.7.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"b67cafce356473b60fc100eeb3d73cb9625e4817","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.7.1.tgz","fileCount":57,"integrity":"sha512-35ftZdLHk2Ak4VG+qApzHXIRxcm7f0tuRXC6+2TKatXj+dbXBj7CSq4zWC/Z/hm78qD3ofjPyiP3qa03psRviA==","signatures":[{"sig":"MEYCIQCZ+EfIUJmqfsqX0GHCvF3z0szP/d1uW5yedsLUkeEX+wIhANGswaMuFh8ZEXbd5zV4G+0UmCtn6SnPPJ512uvRGpeQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39460},"type":"module","_from":"file:micthiesen-mitools-1.7.1.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/e0cbc154bc5bb98e6bcb0faf34495317/micthiesen-mitools-1.7.1.tgz","_integrity":"sha512-35ftZdLHk2Ak4VG+qApzHXIRxcm7f0tuRXC6+2TKatXj+dbXBj7CSq4zWC/Z/hm78qD3ofjPyiP3qa03psRviA==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"1.9.3","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.7.1_1774317283814_0.8821578017688694","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"@micthiesen/mitools","version":"1.7.2","_id":"@micthiesen/mitools@1.7.2","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"434fd39605d889b665c1ed8bb15991e908219e9e","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-1.7.2.tgz","fileCount":57,"integrity":"sha512-jYeqjDExG1yTZtRUT9RGR+aD1baG6809EK1+DCTTCsA/JvBFGzT3rRampvENSf5JF/rTx1FxXDRMdOjwtKgYyQ==","signatures":[{"sig":"MEUCID/lKzkaDxAGXODsUOUQoPYygcmW/QDoTlUR2XgK7fTCAiEAk9XyDGR9XsQAvYyX21/1bt069XD162ZlmrbLe0N/cb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@1.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39412},"type":"module","_from":"file:micthiesen-mitools-1.7.2.tgz","engines":{"node":"24.13.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest .","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/2091ad218000c9556f24df974d91a8aa/micthiesen-mitools-1.7.2.tgz","_integrity":"sha512-jYeqjDExG1yTZtRUT9RGR+aD1baG6809EK1+DCTTCsA/JvBFGzT3rRampvENSf5JF/rTx1FxXDRMdOjwtKgYyQ==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.6.2","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.23.8","cbor":"^9.0.2","better-sqlite3":"^11.5.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","vitest":"^2.1.3","typescript":"^5.0.4","@types/node":"^20.14.12","@biomejs/biome":"2.3.11","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/mitools_1.7.2_1774317525902_0.4800432580476792","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@micthiesen/mitools","version":"2.0.0","_id":"@micthiesen/mitools@2.0.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"ffa5cbb1af5458fad7164235155523c77485998b","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.0.0.tgz","fileCount":57,"integrity":"sha512-N5Q2xV7+JJ97z2+9pQt9HGeNsUfkdHIoaa+CUU65uDmYmBR7nhYYo2JUo3Jv7FHriZFJv9jCmLsSxavpRRuAFw==","signatures":[{"sig":"MEUCIQCPVja7Vu8cHRQv3coSIsokfAMAURaaSoivgMBDXdqnIwIgcbHElRurQB8WVkEyw1AmSc0eL5tE8mcXAJghAFCQmz8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39098},"type":"module","_from":"file:micthiesen-mitools-2.0.0.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./pushover":"./dist/services/pushover.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/07ba051dac24dded633016538fcb31c1/micthiesen-mitools-2.0.0.tgz","_integrity":"sha512-N5Q2xV7+JJ97z2+9pQt9HGeNsUfkdHIoaa+CUU65uDmYmBR7nhYYo2JUo3Jv7FHriZFJv9jCmLsSxavpRRuAFw==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","cbor":"^10.0.12","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.0.0_1774317944343_0.9950068561608127","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@micthiesen/mitools","version":"2.1.0","_id":"@micthiesen/mitools@2.1.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"8aaea6e1bb79cca76833be07fa7c1b599dba64ce","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.1.0.tgz","fileCount":75,"integrity":"sha512-QlejdNLmx4NJkLtBbphYQNomY0NwpIlgaEUMMPy1RkYghf555UUu5D6md3rhtrYQMcouxTRPLP4OltAYP5ELTg==","signatures":[{"sig":"MEUCIEKQga5khU08xl+faQez8gDky0zDN+HDLBFrtZqJqiN5AiEAgpm9JEVdJvQUFBgef+jQ8pBlGFzJau8xnOFUFr1mMPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53368},"type":"module","_from":"file:micthiesen-mitools-2.1.0.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./async":"./dist/async/index.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/8907991c639dac21c9f5c917346a30f7/micthiesen-mitools-2.1.0.tgz","_integrity":"sha512-QlejdNLmx4NJkLtBbphYQNomY0NwpIlgaEUMMPy1RkYghf555UUu5D6md3rhtrYQMcouxTRPLP4OltAYP5ELTg==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.1.0_1774319213940_0.3654940119498107","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@micthiesen/mitools","version":"2.1.1","_id":"@micthiesen/mitools@2.1.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"d1ddc6d7dd512f971ba42ec66864e92977a31be4","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.1.1.tgz","fileCount":75,"integrity":"sha512-I6u5lGLc8+ypjM/7k67ZG1uSAhlJCje334Dwur6XZcZJyp0HMlpVBMdU6sOeQ+ceGEoBGOz2+nNn6oxvQo9lPA==","signatures":[{"sig":"MEYCIQDdQ8PRhRwNILC2hASHTDq4FZfpQhX/SEw3hl5skQZ6UAIhAOT67YVhPNvpVsYp741GJ84/eLCETkOLDgd1Hg51cC6w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53600},"type":"module","_from":"file:micthiesen-mitools-2.1.1.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./async":"./dist/async/index.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/4ab693b2363e99d54f2e467fe46cd9b7/micthiesen-mitools-2.1.1.tgz","_integrity":"sha512-I6u5lGLc8+ypjM/7k67ZG1uSAhlJCje334Dwur6XZcZJyp0HMlpVBMdU6sOeQ+ceGEoBGOz2+nNn6oxvQo9lPA==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.1.1_1774319925372_0.22033338097916366","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@micthiesen/mitools","version":"2.2.0","_id":"@micthiesen/mitools@2.2.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"af2d2a7faead77eee6b385700391767893479052","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.2.0.tgz","fileCount":81,"integrity":"sha512-kt2JmxvECm5xeVHPAyf86TD4GRBsoeZ076KNnwPYkTacW5UTf6Cw1QAW9SDMFqS6GxNMwb4aHVqUGalR6io04g==","signatures":[{"sig":"MEUCIQCgvue91OMuaNZ0c8OmcwsXOEe9Li+pX93Axp3W8/FnngIgYVDhICo0HLDiKw+A9K4Kk2h88/7KTZL9Ey1RsZT0WLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":62902},"type":"module","_from":"file:micthiesen-mitools-2.2.0.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/bc88cd154075585a9105ee1126e1ea2c/micthiesen-mitools-2.2.0.tgz","_integrity":"sha512-kt2JmxvECm5xeVHPAyf86TD4GRBsoeZ076KNnwPYkTacW5UTf6Cw1QAW9SDMFqS6GxNMwb4aHVqUGalR6io04g==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"got":"^14.6.6","zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.2.0_1774320464384_0.4686971983577921","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@micthiesen/mitools","version":"2.2.1","_id":"@micthiesen/mitools@2.2.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"6bbaacc183f5f755ab94b9194abeea43c3bf3ec9","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.2.1.tgz","fileCount":84,"integrity":"sha512-uj4h6kM7X4DnfiwhNa+0ytB7U3SP01+h8MUbv/RlJyq0fHdAIJ+ibnJsskh4FhmEjr9IKhB9/OFuQ9piu1AZWA==","signatures":[{"sig":"MEYCIQCVL8zgsG4qD+QXHHNGnfvRsEgbyCP88TV3oHugkXqKrgIhAMt9ZG4sT4amTmPSVLQaN5C4nnffRRcnkYgs+I/jPUAY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":68273},"type":"module","_from":"file:micthiesen-mitools-2.2.1.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/de9e45a09d453e0457bf53174b3909cf/micthiesen-mitools-2.2.1.tgz","_integrity":"sha512-uj4h6kM7X4DnfiwhNa+0ytB7U3SP01+h8MUbv/RlJyq0fHdAIJ+ibnJsskh4FhmEjr9IKhB9/OFuQ9piu1AZWA==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"got":"^14.6.6","zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.2.1_1774320716074_0.7384642065411295","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@micthiesen/mitools","version":"2.2.2","_id":"@micthiesen/mitools@2.2.2","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"89b5d73ecb1004d8b7ec55ad2557dec8e835f38e","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.2.2.tgz","fileCount":84,"integrity":"sha512-l7WzVYHtUip4KganxnPXXyTXXWbL9rCEafVeHl6akH44a3zOZNJa1EHAHk4tuFUsyE0g+6+vZWXeZ8pV3VU38g==","signatures":[{"sig":"MEYCIQDF0TkkgC3sSc+8KqjoEOp9VMz5mHVPOzL14RQaLANESgIhANC3NRSwXm+6fdX2zq6Gnp8yJKk/DbZs21rhUFSJ9IXd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":70242},"type":"module","_from":"file:micthiesen-mitools-2.2.2.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/43173eec3dd731ab7853496f1434f607/micthiesen-mitools-2.2.2.tgz","_integrity":"sha512-l7WzVYHtUip4KganxnPXXyTXXWbL9rCEafVeHl6akH44a3zOZNJa1EHAHk4tuFUsyE0g+6+vZWXeZ8pV3VU38g==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"got":"^14.6.6","zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.2.2_1774320990261_0.25335817191011234","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@micthiesen/mitools","version":"2.3.0","_id":"@micthiesen/mitools@2.3.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"c4cce20c6bcc9421f350285befb04ed670c3d6af","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.3.0.tgz","fileCount":99,"integrity":"sha512-stgUAjhW4Yn30zujXpFD+WwTKgzyWg7St2cdjqG2RZaEzD0Sq1gfue4rYrXvyVwj0Cyn1wsY9k0u6VVxijbagA==","signatures":[{"sig":"MEQCIHacl7djI0OCQkH8NiDj0r3kMJePfwbWqaPZ5vEmDc8EAiBzaGgHrM4D3TivIN9U0AgZxWIC8gzej+ahKnHN4GcJGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89676},"type":"module","_from":"file:micthiesen-mitools-2.3.0.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/6e4595161578f3aac10309e6bd31f8d2/micthiesen-mitools-2.3.0.tgz","_integrity":"sha512-stgUAjhW4Yn30zujXpFD+WwTKgzyWg7St2cdjqG2RZaEzD0Sq1gfue4rYrXvyVwj0Cyn1wsY9k0u6VVxijbagA==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"got":"^14.6.6","zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.3.0_1774504818702_0.6933953878056622","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@micthiesen/mitools","version":"2.3.1","_id":"@micthiesen/mitools@2.3.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"e4be1d076d491df103042ec72d84fc12e9a45a64","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.3.1.tgz","fileCount":99,"integrity":"sha512-MR6jVGGIKBLSuQCLJLNxwssWFGFBuitjGZ7G7IIqFzeIFKHyaUPcjkcjGyBNg2nVeeNFKdmnk0F+nhikspAFlg==","signatures":[{"sig":"MEUCID1jkWSoIWMFdtc6n3sNGCzL+9ujLHOWaVeRIPWC6IHrAiEAnLlvSxb6gE67hQJTR4AZQkSeuPBeEflazGy9nJX5bjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89678},"type":"module","_from":"file:micthiesen-mitools-2.3.1.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/71234805a8a2da85dcde8d3a11f7cf8b/micthiesen-mitools-2.3.1.tgz","_integrity":"sha512-MR6jVGGIKBLSuQCLJLNxwssWFGFBuitjGZ7G7IIqFzeIFKHyaUPcjkcjGyBNg2nVeeNFKdmnk0F+nhikspAFlg==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"got":"^14.6.6","zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.3.1_1774504945783_0.5960309241460382","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"@micthiesen/mitools","version":"2.3.2","_id":"@micthiesen/mitools@2.3.2","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"a816a4a0195ed895c2ae7d9a334a5992ba5dd0b8","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.3.2.tgz","fileCount":99,"integrity":"sha512-bhkUF2IjG2RgmbFEtUw+Dqj+d+jt+YJ06KKFebZkzwNcS9G+pjILo7fGKnCUHfJ8d7uHJG1DMU22rKR0QieFwA==","signatures":[{"sig":"MEUCIQCT+8bp2ny4flUR6F+ayLQGZAz271QeY7f0AZ1MjCJ92wIgWP36r8mV3iV/oDDwmsU5EbaaB02a86QhD38GIYW1RCk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89731},"type":"module","_from":"file:micthiesen-mitools-2.3.2.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/e0a4fcdeba42d63e65416f6ce035cb3a/micthiesen-mitools-2.3.2.tgz","_integrity":"sha512-bhkUF2IjG2RgmbFEtUw+Dqj+d+jt+YJ06KKFebZkzwNcS9G+pjILo7fGKnCUHfJ8d7uHJG1DMU22rKR0QieFwA==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"got":"^14.6.6","zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.3.2_1774507148765_0.9932060625861208","host":"s3://npm-registry-packages-npm-production"}},"2.3.3":{"name":"@micthiesen/mitools","version":"2.3.3","_id":"@micthiesen/mitools@2.3.3","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"e625313684447a659a421f478a08de37c0f95452","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.3.3.tgz","fileCount":102,"integrity":"sha512-upcYJ4qTcc8RL7GOFyKVXG9c6UWyOOyXd1ELK2CCH5px9ezgBqFRF1oOldgMkGcx3Tmqfm77W1bbC8FiMWYG6g==","signatures":[{"sig":"MEUCICnAzgrtTGVu9KKaTOTiX+YQT9Yehr/pRs+aj6WxtHSmAiEAzjVfeUfhGRjetF7vBGw2MLzuOUz4cXmRVYfS9ZsrCys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93763},"type":"module","_from":"file:micthiesen-mitools-2.3.3.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./ntfy":"./dist/services/ntfy.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/d86d68ced1d18c90064b7cfd166ff8c3/micthiesen-mitools-2.3.3.tgz","_integrity":"sha512-upcYJ4qTcc8RL7GOFyKVXG9c6UWyOOyXd1ELK2CCH5px9ezgBqFRF1oOldgMkGcx3Tmqfm77W1bbC8FiMWYG6g==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"got":"^14.6.6","zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.3.3_1775236697305_0.4513925837141657","host":"s3://npm-registry-packages-npm-production"}},"2.3.4":{"name":"@micthiesen/mitools","version":"2.3.4","_id":"@micthiesen/mitools@2.3.4","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"5f9d489c5975631aea6e1ff0925d853cbc7a2f00","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.3.4.tgz","fileCount":99,"integrity":"sha512-jXCPt1K3YuN1VPr/2+k1rmYlbk6rjVqRS33WdcaEnBiI57RyQfoCboj61qvGgtKRMk5VB1TZLJdA8EdwfgTGQQ==","signatures":[{"sig":"MEYCIQDZ7TrwjkqZSiB56VbXTkFLjyu25awx8EmWErjbSZaMYAIhAN9aqADk6r5VxDNZglJ9YxqAAFtC3GqwJc6ojbH33q9W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89731},"type":"module","_from":"file:micthiesen-mitools-2.3.4.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/7ab7f486c0fe85ecb897cb905cfdff74/micthiesen-mitools-2.3.4.tgz","_integrity":"sha512-jXCPt1K3YuN1VPr/2+k1rmYlbk6rjVqRS33WdcaEnBiI57RyQfoCboj61qvGgtKRMk5VB1TZLJdA8EdwfgTGQQ==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"got":"^14.6.6","zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.3.4_1775240512045_0.4983029347895267","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@micthiesen/mitools","version":"2.4.0","_id":"@micthiesen/mitools@2.4.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"homepage":"https://github.com/micthiesen/mitools#readme","bugs":{"url":"https://github.com/micthiesen/mitools/issues"},"dist":{"shasum":"8d3c76bc024734231720058ff42e40859d82213d","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.4.0.tgz","fileCount":102,"integrity":"sha512-50o5+2X1vh8xbUMvvZiVu0efsebT1VJWKpEwKYGpiITlYEeHix//9RiLbGX7Lj2EAgdlceie2LsR8k46RlUJZQ==","signatures":[{"sig":"MEUCIAbnZeamPPn9KALT4woMP9IEPCEd8UdhmO3N6F/2gBoDAiEAhwRQD+F9VcC8tXY3ez+rmNA6gMHr+ejlNI9neC1ZzJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94164},"type":"module","_from":"file:micthiesen-mitools-2.4.0.tgz","engines":{"node":"24.14.0","pnpm":"10.28.2"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"_resolved":"/tmp/cc832d8e7e4691c7ad9af8dfceb5262d/micthiesen-mitools-2.4.0.tgz","_integrity":"sha512-50o5+2X1vh8xbUMvvZiVu0efsebT1VJWKpEwKYGpiITlYEeHix//9RiLbGX7Lj2EAgdlceie2LsR8k46RlUJZQ==","repository":{"url":"git+https://github.com/micthiesen/mitools.git","type":"git"},"_npmVersion":"11.9.0","description":"Michael's helpful TypeScript functions and classes.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"got":"^14.6.6","zod":"^4.3.6","cbor":"^10.0.12","p-queue":"^9.1.0","node-cron":"^4.2.1","better-sqlite3":"^12.8.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^8.0.2","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^25.5.0","@biomejs/biome":"2.4.8","@types/node-cron":"^3.0.11","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.4.0_1784161366548_0.7916085404080935","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@micthiesen/mitools","version":"2.5.0","_id":"@micthiesen/mitools@2.5.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"c8ea17f62d2acb718bb228b7c99a494d6bc4a151","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.5.0.tgz","fileCount":102,"integrity":"sha512-ISRoCOerK/CSzgZT0yDm+4ewBYiFPRT7jgZOkpGfntGr3HxXolpbeiTCWUJdy81J+DpIC9heZBU6nvjNOpic2g==","signatures":[{"sig":"MEUCIBZgXV2QbhJRr1TSqIa0DtkaL9xylLw5XmGzt08Ip/DmAiEA/AvgM3rHpdM0L8rN4rYhuz89lg8+MjzOFF6UvNy4JJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94436},"type":"module","engines":{"node":"24.18.0","pnpm":"11.13.0"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"got":"^15.1.0","zod":"^4.4.3","cbor":"^10.0.12","p-queue":"^9.3.1","node-cron":"^4.6.0","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","@biomejs/biome":"2.5.4","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.5.0_1784162000610_0.572802450320465","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@micthiesen/mitools","version":"2.5.1","_id":"@micthiesen/mitools@2.5.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"f3b72fe441ffe5a405435215dc07087a2d092ba6","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.5.1.tgz","fileCount":102,"integrity":"sha512-ophw6HxB3AaUjBB1SJOXkLYcODWywvgcJUcyWTGKM9VhJLVz/lwsVO+66VOvvweyT8z6WuNJ096JBC+z3AySHA==","signatures":[{"sig":"MEQCIFfZVAJBX96EF5LRubWuPU1l/g2JtEf4QdAdxsjkzmFHAiADKyNf6K7jBfkU2XJMZOTbKVZTnlmOlB6HgZUNzxzvmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94436},"type":"module","engines":{"node":"24.18.0","pnpm":"11.13.0"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"got":"^15.1.0","zod":"^4.4.3","cbor":"^10.0.12","p-queue":"^9.3.1","node-cron":"^4.6.0","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","@biomejs/biome":"2.5.4","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.5.1_1784162095102_0.4853468609349474","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"@micthiesen/mitools","version":"2.5.2","_id":"@micthiesen/mitools@2.5.2","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"1d3235816b7fc41e0331b21a61ab92c94b3afc9f","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-2.5.2.tgz","fileCount":102,"integrity":"sha512-Kd3dmQlq4/xyLwWFP4HCSVgTocNO9AvBg+IG82mJ3Nf0Fv7gvIkARR5wLwC66Gk6txADqVmEozv3EqcD330Aiw==","signatures":[{"sig":"MEUCIFp9XLEwHk6myIGZ1tO9WssrznDt+4w8KnThNtuZDm86AiEA5f1OoiDwjVf55qiUczQuXqz0h/8cqWYYqO8qjhBuMhg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@2.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94430},"type":"module","engines":{"node":">=20","pnpm":">=10"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"got":"^15.1.0","zod":"^4.4.3","cbor":"^10.0.12","p-queue":"^9.3.1","node-cron":"^4.6.0","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","@biomejs/biome":"2.5.4","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_2.5.2_1784265965067_0.9581472594321334","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@micthiesen/mitools","version":"3.0.0","_id":"@micthiesen/mitools@3.0.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"0c7fd2997c868ad3a95bb21d53f4529c45c252df","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-3.0.0.tgz","fileCount":102,"integrity":"sha512-g1QfNYpyR+aQ49BcYud4IaOvrWuQlZ1QGmmoRZZ4DC2M/MuDrk59I48AIpjs0aPMInhdAkztx2ODkRZyJeNzEw==","signatures":[{"sig":"MEYCIQCIznvMJ3nV17qEJDbQI22RTR6lUg79vrikgmSH6XqUGgIhAKuwKZ9Yf0ycH789YHBAPwRNnEM8Y+mS17T5xhiEtgg4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124539},"type":"module","engines":{"node":">=20","pnpm":">=10"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"got":"^15.1.0","zod":"^4.4.3","cbor":"^10.0.12","p-queue":"^9.3.1","node-cron":"^4.6.0","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","@biomejs/biome":"2.5.4","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_3.0.0_1784531878910_0.5122989160287141","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@micthiesen/mitools","version":"3.0.1","_id":"@micthiesen/mitools@3.0.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"4e7ff84a97628269ec5696f1a76ee50590af3f51","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-3.0.1.tgz","fileCount":102,"integrity":"sha512-g2b1hvRt1KKYVTY9WW73MUnmdAvdsKtDAcxTtJ5skPVLrN0w+fYbgOpAtMwDTVxR30EPXyeAfaSKS4fDkktx2A==","signatures":[{"sig":"MEYCIQCGECW+QqjBEdqmIoAY0oHRYIQcripC6yUJ6iw1INR6+QIhANnczyyyRfrzYb5fr6nBqZGO6Uk90BkMWrI7gmgeiaCi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":126598},"type":"module","engines":{"node":">=20","pnpm":">=10"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"got":"^15.1.0","zod":"^4.4.3","cbor":"^10.0.12","p-queue":"^9.3.1","node-cron":"^4.6.0","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","@biomejs/biome":"2.5.4","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_3.0.1_1784533306283_0.4611773572446094","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@micthiesen/mitools","version":"3.0.2","_id":"@micthiesen/mitools@3.0.2","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"e82541bca397b81cab023aac6c46516a1b13ec2b","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-3.0.2.tgz","fileCount":102,"integrity":"sha512-F4sXf2o172y8fMTkuGnUVqjQ0zV8H250UjYnuzmV3wkdjn79o9wCM68RkR9QZLG0jMlfNKwTqSpUH3HoqOajdQ==","signatures":[{"sig":"MEUCIQDuYcdRVvHPA9re2U4eQWWtP2KDHssT8LRLy+dGh0rgpwIgCaHlGgomtAIRagvE/n25C/c/1WPMx/2iFjdLTkAtDj8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@3.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":130793},"type":"module","engines":{"node":">=20","pnpm":">=10"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"got":"^15.1.0","zod":"^4.4.3","cbor":"^10.0.12","p-queue":"^9.3.1","node-cron":"^4.6.0","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","@biomejs/biome":"2.5.4","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_3.0.2_1784561151078_0.1793047466123514","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@micthiesen/mitools","version":"3.0.3","_id":"@micthiesen/mitools@3.0.3","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"ade45ac216ef39cad4f8f255f297dff0c60fcf50","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-3.0.3.tgz","fileCount":102,"integrity":"sha512-7Pv+mKhVmV4XCRtY4dGyV06ThLUHQnkszLeL5W/vU+z/hzzDIpaQpqYyK9Dt7fYOMPMufUiJDh5uGuVEijXljw==","signatures":[{"sig":"MEUCIQDE3c/hB3fzDpS76eMDVBY8NWtUlfHO/hoi3TSaOPs4RgIgEaiyYrpLaaDYw9EQxFS6iSOcQ/mtFRqB3BFa8kxo+mM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@3.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":131428},"type":"module","engines":{"node":">=20","pnpm":">=10"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"got":"^15.1.0","zod":"^4.4.3","cbor":"^10.0.12","p-queue":"^9.3.1","node-cron":"^4.6.0","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","@biomejs/biome":"2.5.4","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_3.0.3_1784561692649_0.9433042111285741","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@micthiesen/mitools","version":"3.0.4","_id":"@micthiesen/mitools@3.0.4","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"2ff0cd0953dedec34d5559bab9141fd6ea990803","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-3.0.4.tgz","fileCount":102,"integrity":"sha512-5/GhG1blEzUmF8DT8mlqFiDa6XfVtBItANfwikZXuYGSsVVSFwa0xineu2aoR7OznhkNzrSUk86djST4V1dG2A==","signatures":[{"sig":"MEUCIQCBCkM2Vg6jHqCqpmZHZONfqvBMvTQk7yg0YfRF4oBm6gIgIlBtwIUHcflOqiUZFnP4FFf1XT0geKws3OfHRz/S0JU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@3.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":132985},"type":"module","engines":{"node":">=20","pnpm":">=10"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"biome lint .","test":"vitest","build":"rm -fr ./dist && tsc","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"got":"^15.1.0","zod":"^4.4.3","cbor":"^10.0.12","p-queue":"^9.3.1","node-cron":"^4.6.0","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","@biomejs/biome":"2.5.4","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mitools_3.0.4_1784562116766_0.7432666459013539","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@micthiesen/mitools","version":"4.0.0","_id":"@micthiesen/mitools@4.0.0","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"9e8c035ece07fac672ccfef01de2e85ba8d5ffc6","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-4.0.0.tgz","fileCount":62,"integrity":"sha512-1g8ccqumavkWaFk6ucvt+j/ELL/ZE1Yy5H83Ztwe/A7YZ0kCgx/62dhILNAPE8tK2AfyMUDaLa7IHyOLLD8cLw==","signatures":[{"sig":"MEQCIBifQ0C+AKCEkUWsofhXV4Bq3DAqcySkY5/OGTEWYMiBAiBeQMbYvfwOX1uPolinAS4cpS6vq+jIaPacuCNflD/2EA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":145930},"type":"module","engines":{"node":">=20","pnpm":">=11"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./errors":"./dist/errors/index.js","./sqlite":"./dist/persistence/sqlite.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"effect-tsgo diagnostics --project tsconfig.json --strict","test":"vitest","build":"rm -fr ./dist && tsc -p tsconfig.build.json","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"cbor":"^10.0.12","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","effect":"4.0.0-rc.112","vitest":"^4.1.10","typescript":"7.0.2","@types/node":"^24.13.3","@effect/tsgo":"0.39.1","@biomejs/biome":"2.5.4","@effect/vitest":"4.0.0-rc.112","@types/better-sqlite3":"^7.6.13"},"peerDependencies":{"vite":">=8","effect":">=4.0.0-rc.112 <4.1","vitest":">=4.1.0 <5"},"peerDependenciesMeta":{"vite":{"optional":true},"vitest":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mitools_4.0.0_1788370300229_0.9924590752601252","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@micthiesen/mitools","version":"4.0.1","_id":"@micthiesen/mitools@4.0.1","maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"dist":{"shasum":"7fe70e0508a8873901719094478c27e491156dd3","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-4.0.1.tgz","fileCount":62,"integrity":"sha512-ZQU9BYyjbR45v3NFzljudV5lf0GMo3NqL2+mM99A2GXf7JKTVQKIbRlLjsch7GN+qcLofIoXkY59U07qOLoc2w==","signatures":[{"sig":"MEUCIQDq4xlFXIkra8xQvNzjOhjPTDQV5l8Whn8iTtIPaZXQIQIgORmzZoNusACe/s0ZMLX19LTOqNJRdAl4bSty8xp5bgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":146134},"type":"module","engines":{"node":">=20","pnpm":">=11"},"exports":{"./xml":"./dist/xml/index.js","./http":"./dist/http/index.js","./text":"./dist/text/index.js","./async":"./dist/async/index.js","./table":"./dist/persistence/table.js","./types":"./dist/types/index.js","./config":"./dist/config/index.js","./errors":"./dist/errors/index.js","./sqlite":"./dist/persistence/sqlite.js","./vitest":"./dist/vitest/config.js","./logfile":"./dist/services/logfile.js","./logging":"./dist/logging/index.js","./streams":"./dist/streams/index.js","./strings":"./dist/utils/strings.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./karakeep":"./dist/karakeep/index.js","./markdown":"./dist/markdown/index.js","./pushover":"./dist/services/pushover.js","./scheduling":"./dist/scheduling/index.js","./collections":"./dist/collections/index.js","./tsconfig/*.json":"./tsconfig/*.json","./biome.shared.json":"./biome.shared.json"},"scripts":{"lint":"effect-tsgo diagnostics --project tsconfig.json --strict","test":"vitest","build":"rm -fr ./dist && tsc -p tsconfig.build.json","check":"biome check .","format":"biome format .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"repository":{"url":"https://github.com/micthiesen/mitools","type":"git"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"cbor":"^10.0.12","better-sqlite3":"^12.11.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vite":"^8.1.4","effect":"4.0.0-rc.112","vitest":"^4.1.10","typescript":"7.0.2","@types/node":"^24.13.3","@effect/tsgo":"0.39.1","@biomejs/biome":"2.5.4","@effect/vitest":"4.0.0-rc.112","@types/better-sqlite3":"^7.6.13"},"peerDependencies":{"vite":">=8","effect":">=4.0.0-rc.112 <4.1","vitest":">=4.1.0 <5"},"peerDependenciesMeta":{"vite":{"optional":true},"vitest":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mitools_4.0.1_1788370408079_0.040838756555746425","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@micthiesen/mitools","version":"4.1.0","repository":{"type":"git","url":"https://github.com/micthiesen/mitools"},"type":"module","exports":{"./errors":"./dist/errors/index.js","./collections":"./dist/collections/index.js","./config":"./dist/config/index.js","./cli":"./dist/cli/index.js","./sqlite":"./dist/persistence/sqlite.js","./docstore":"./dist/persistence/docstore.js","./entities":"./dist/persistence/entities.js","./table":"./dist/persistence/table.js","./logging":"./dist/logging/index.js","./logfile":"./dist/services/logfile.js","./pushover":"./dist/services/pushover.js","./async":"./dist/async/index.js","./proc":"./dist/proc/index.js","./locks":"./dist/locks/index.js","./probes":"./dist/probes/index.js","./strings":"./dist/utils/strings.js","./types":"./dist/types/index.js","./http":"./dist/http/index.js","./karakeep":"./dist/karakeep/index.js","./scheduling":"./dist/scheduling/index.js","./streams":"./dist/streams/index.js","./boundary":"./dist/boundary/index.js","./react":"./dist/react/index.js","./testing":"./dist/testing/index.js","./text":"./dist/text/index.js","./xml":"./dist/xml/index.js","./markdown":"./dist/markdown/index.js","./vitest":"./dist/vitest/config.js","./biome.shared.json":"./biome.shared.json","./tsconfig/*.json":"./tsconfig/*.json"},"dependencies":{"better-sqlite3":"^12.11.1","cbor":"^10.0.12","smol-toml":"^1.8.0"},"devDependencies":{"@biomejs/biome":"2.5.4","@effect/tsgo":"0.39.1","@effect/vitest":"4.0.0-rc.112","@types/better-sqlite3":"^7.6.13","@types/node":"^24.13.3","@types/react":"^19.2.18","effect":"4.0.0-rc.112","react":"^19.2.8","tsx":"^4.23.1","typescript":"7.0.2","vite":"^8.1.4","vitest":"^4.1.10"},"engines":{"node":">=20","pnpm":">=11"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"peerDependencies":{"effect":">=4.0.0-rc.112 <4.1","react":">=18","vite":">=8","vitest":">=4.1.0 <5"},"peerDependenciesMeta":{"vite":{"optional":true},"vitest":{"optional":true},"react":{"optional":true}},"scripts":{"build":"rm -fr ./dist && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","lint":"effect-tsgo diagnostics --project tsconfig.json --strict","format":"biome format .","check":"biome check .","test":"vitest"},"_nodeVersion":"24.18.0","_id":"@micthiesen/mitools@4.1.0","dist":{"integrity":"sha512-MdoRgbDTw5NJ0Zj2gUUcyNuLFZ/xWLTvVnsqfVOrzBhgnaynNeIbvuY/0OHvPu2LWlqe6Kqi40B3SoraWhDjzw==","shasum":"a686cd2a72b700530b68582e3394007048c27f4c","tarball":"https://registry.npmjs.org/@micthiesen/mitools/-/mitools-4.1.0.tgz","fileCount":88,"unpackedSize":293904,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@micthiesen%2fmitools@4.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDaFoFmIitpp6SE0KMRV678zGAuKo+trGJiiQZZcHsSGgIhAKbDWJwHpVaf5CvfHSROUSXLA5SLmO+B2ZebhMvi5KJj"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dd3ecaef-47f2-4f1e-b880-b93a5cedd92e"}},"directories":{},"maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mitools_4.1.0_1788373364922_0.646990245782818"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-26T22:07:07.958Z","modified":"2026-09-02T18:22:45.386Z","0.0.3":"2024-10-26T22:07:08.231Z","1.0.0":"2024-10-26T22:14:57.695Z","1.0.1":"2024-10-26T22:17:32.034Z","1.0.2":"2024-10-26T22:18:35.573Z","1.0.3":"2024-10-26T22:28:49.271Z","1.1.0":"2024-10-26T22:37:41.163Z","1.1.1":"2024-10-26T22:42:47.725Z","1.1.2":"2024-10-26T23:59:30.777Z","1.1.3":"2024-10-27T07:04:59.321Z","1.1.4":"2024-10-27T07:28:25.887Z","1.1.5":"2024-10-27T07:35:45.276Z","1.1.6":"2024-10-27T07:44:14.745Z","1.1.7":"2024-10-27T20:58:19.832Z","1.1.8":"2024-10-27T23:05:22.067Z","1.2.0":"2024-10-27T23:09:05.685Z","1.2.1":"2024-10-27T23:17:19.955Z","1.3.0":"2026-02-05T05:19:45.755Z","1.3.1":"2026-02-05T06:34:58.497Z","1.3.2":"2026-02-15T21:01:59.750Z","1.4.0":"2026-03-01T21:41:23.979Z","1.5.0":"2026-03-21T05:10:19.109Z","1.6.0":"2026-03-21T07:37:52.559Z","1.6.1":"2026-03-21T07:51:08.690Z","1.6.2":"2026-03-21T08:30:15.566Z","1.7.0":"2026-03-24T01:52:59.976Z","1.7.1":"2026-03-24T01:54:43.958Z","1.7.2":"2026-03-24T01:58:46.030Z","2.0.0":"2026-03-24T02:05:44.524Z","2.1.0":"2026-03-24T02:26:54.089Z","2.1.1":"2026-03-24T02:38:45.513Z","2.2.0":"2026-03-24T02:47:44.569Z","2.2.1":"2026-03-24T02:51:56.242Z","2.2.2":"2026-03-24T02:56:30.458Z","2.3.0":"2026-03-26T06:00:18.842Z","2.3.1":"2026-03-26T06:02:25.915Z","2.3.2":"2026-03-26T06:39:08.912Z","2.3.3":"2026-04-03T17:18:17.466Z","2.3.4":"2026-04-03T18:21:52.206Z","2.4.0":"2026-07-16T00:22:46.689Z","2.5.0":"2026-07-16T00:33:20.750Z","2.5.1":"2026-07-16T00:34:55.233Z","2.5.2":"2026-07-17T05:26:05.206Z","3.0.0":"2026-07-20T07:17:59.072Z","3.0.1":"2026-07-20T07:41:46.422Z","3.0.2":"2026-07-20T15:25:51.265Z","3.0.3":"2026-07-20T15:34:52.770Z","3.0.4":"2026-07-20T15:41:56.905Z","4.0.0":"2026-09-02T17:31:40.406Z","4.0.1":"2026-09-02T17:33:28.225Z","4.1.0":"2026-09-02T18:22:45.088Z"},"repository":{"type":"git","url":"https://github.com/micthiesen/mitools"},"maintainers":[{"name":"micthiesen","email":"michael@thiesen.dev"}],"readme":"# MiTools\n\nMichael's shared TypeScript utility library, built on [Effect 4](https://effect.website/docs/v4/).\nEvery function that does I/O, waits, retries, owns a resource or coordinates\nconcurrency returns a typed `Effect`; the library never runs an effect itself.\nYou compose the pieces you need, provide their layers once, and run the result\nat your program's boundary.\n\n## Install\n\n```bash\npnpm add @micthiesen/mitools effect@4.0.0-rc.112\n```\n\nThe `sqlite`, `docstore`, `entities` and `table` modules need better-sqlite3's\nnative build; pnpm 10+ only runs it when allowed in `pnpm-workspace.yaml`:\n\n```yaml\nallowBuilds:\n  better-sqlite3: true\n```\n\n`effect` is a **peer dependency** (`>=4.0.0-rc.112 <4.1`), never bundled and\nnever re-exported, so your project ends up with exactly one copy. If another\ndependency drags in a different 4.x release candidate, pin it. pnpm 10+ reads\noverrides from `pnpm-workspace.yaml` (pnpm 11 ignores `package.json#pnpm`):\n\n```yaml\noverrides:\n  effect: 4.0.0-rc.112\n```\n\nnpm uses `package.json#overrides`, yarn `resolutions`. Verify with\n`pnpm why effect`: one version, one path.\n\n## The boundary\n\nEffects run in exactly one place per process. A long-running service:\n\n```ts\nimport { Effect, Layer } from \"effect\";\nimport { FetchHttpClient } from \"effect/unstable/http\";\nimport { Docstore } from \"@micthiesen/mitools/docstore\";\nimport { Sqlite } from \"@micthiesen/mitools/sqlite\";\nimport { Logger } from \"@micthiesen/mitools/logging\";\nimport { Pushover } from \"@micthiesen/mitools/pushover\";\nimport { Scheduler } from \"@micthiesen/mitools/scheduling\";\n\nconst AppLayer = Layer.mergeAll(\n  Docstore.layer,\n  Scheduler.layer,\n  Logger.layerAdapter, // Effect.log* -> Logger\n).pipe(\n  Layer.provideMerge(Sqlite.layerConfig), // DB_NAME, DOCKERIZED\n  Layer.provideMerge(Logger.layerConfig({ onError: Pushover.logHook })), // LOG_LEVEL\n  Layer.provideMerge(Pushover.layerConfig), // PUSHOVER_TOKEN, PUSHOVER_USER\n  Layer.provideMerge(FetchHttpClient.layer),\n);\n\nconst program = Effect.gen(function* () {\n  const logger = Logger.named(\"Main\");\n  yield* logger.info(\"Starting\");\n  const scheduler = yield* Scheduler;\n  yield* scheduler.register(myTask);\n  yield* scheduler.start;\n  yield* Effect.never; // interrupted by the process runtime on SIGTERM\n}).pipe(Effect.scoped, Effect.provide(AppLayer));\n\nEffect.runPromise(program);\n```\n\nFor code that must expose Promises (an HTTP framework handler, a test helper),\nbuild one `ManagedRuntime` from the same layer and call `runtime.runPromise(effect)`.\nNothing in this library needs `Effect.runSync`, `runFork` or a Promise twin.\n\n## Modules\n\nImport by subpath: `@micthiesen/mitools/<name>`. Requirements are the services\nan effect needs in its `R` channel; provide them with the listed layers.\n\n| Subpath | What | Requirements / layers |\n| --- | --- | --- |\n| `errors` | `OperationError`, `operationErrors(source)`, `causeMessage` | none |\n| `logging` | `Logger` service, `Logger.named(name)` (a `NamedLogger` with `.extend` and `.channel`), `LogLevel`, `LogItem`, sinks (`consoleSink`, `dailyFileSink`, `channelSink`, `levelSink`, `filterSink`), capture layer, Effect logger adapter, tracer layer | `Logger.layer(...)`, `Logger.layerConfig(...)`, `Logger.layerCapture(...)`, `Logger.layerAdapter`, `Logger.layerTracer` |\n| `config` | `baseConfigFields`, `baseConfig`, `isSensitiveKey`, `redactConfig`, `logConfig`; TOML providers (`tomlConfigProvider`, `layerToml`, `layerTomlWithEnv`), `required`/`withRemedy` (`ConfigRemedyError`), `withAliases` | `ConfigProvider` (defaults to env) |\n| `sqlite` | `Sqlite` service: one better-sqlite3 connection, `transaction` | `Sqlite.layer({ path })`, `Sqlite.layerConfig`, `Sqlite.layerMemory` |\n| `docstore` | `Docstore` service + accessors (`getDoc`, `upsertDoc`, ...), `CorruptRowError` | `Docstore.layer` (needs `Sqlite`), `Docstore.layerMemory` |\n| `entities` | `Entity<Data, PK>`: typed documents keyed by primary key, TTL, migration | `Docstore` |\n| `table` | `Table.make(options)`: typed real SQL tables | `Sqlite` |\n| `scheduling` | `Scheduler` service, `ScheduledTask`, six-field cron | `Scheduler.layer` |\n| `async` | Schedule presets (`exponentialBackoff`, `spacedUpTo`, `lockContention`, `retrySchedule`), `withRetry`, `makeDebounced` (scoped trailing-edge debounce) | none |\n| `proc` | `run`, `runOk`, `runQuiet`, `runStreaming`, `terminateSubprocess`, `sanitizeLine`, `Proc*` errors; bounded by `ProcConcurrency` (8 permits) | none (`ProcConcurrency` is a `Context.Reference`) |\n| `locks` | `withLock`, `acquireLock`, `tryAcquireLock`, `lockStatus`, `LockError`: a cross-process file lock with pid/mtime staleness | none |\n| `probes` | `probePort` (listening / free / unknown), `lsofScan`, `listeningProcesses`, `processCwds`, `parseListeners`, `isUnderPath` | none (macOS/BSD `lsof`) |\n| `boundary` | `runQuery(effect, signal)`, `forkReported(effect, report)`, `makeBoundary(runner)`, `EffectRunner` | none |\n| `react` | `useEffectFiber(make, deps, runner?)`, `fiberLifecycle` | `react` (optional peer) |\n| `testing` | `withVirtualTime`, `runWithVirtualTime`, `tmpDir`, `trackedTmpDirs`, `testRuntime` | `vitest` (optional peer); test files only |\n| `cli` | `runMain`, `renderFailure`, `exitCodeFor` | none |\n| `pushover` | `Pushover` service, `notify`, `PushoverError`, `Pushover.logHook` | `Pushover.layer(creds)` and `Pushover.layerConfig` need `HttpClient`; `Pushover.layerNoop` needs nothing |\n| `karakeep` | `Karakeep` service, `addBookmark`, `KarakeepError` | `Karakeep.layer(creds)` and `Karakeep.layerConfig` need `HttpClient`; `Karakeep.layerDisabled` needs nothing |\n| `http` | `httpErrorInfo(error)`: loggable view of an `HttpClientError` | none |\n| `logfile` | `LogFile.make`, `LogFile.timestamped`: sectioned log files | none (`Logger` for `.log`) |\n| `streams` | `streamToBuffer`, `fromReadable`, `readFdSlice`, `readFileSlice`, `jsonlTimestamp` | none |\n| `collections`, `strings`, `text`, `xml`, `markdown`, `types` | pure helpers | none |\n| `vitest` | `baseVitestConfig` | |\n| `biome.shared.json`, `tsconfig/*.json` | shared tooling config | |\n\n`HttpClient` comes from `effect/unstable/http` (`FetchHttpClient.layer`).\n\n## Errors\n\nDomain failures are `Data.TaggedError` classes with fields you can match on\n(`CorruptRowError`, `InvalidKeyError`, `EntityValidationError`,\n`InvalidScheduleError`, `PushoverError`, `KarakeepError`,\n`KarakeepDisabledError`). Every untyped boundary (better-sqlite3, cbor,\n`node:fs`, Node streams) is wrapped once as `OperationError { source, operation, cause }`\nwhose message reads `operation: cause`. Nothing is swallowed: a failure the\ncaller might act on is in the error channel.\n\n```ts\nyield* entity.get({ id }).pipe(\n  Effect.catchTag(\"CorruptRowError\", (e) => Effect.logWarning(e.message).pipe(Effect.as(Option.none()))),\n);\n```\n\n## Logging\n\n`Logger.named(\"Main\")` is pure; its methods are effects requiring the `Logger`\nservice. `Logger.layer({ level, sinks, onError, onWarn, onLog })` wires it:\n`level` is the threshold below which no sink sees a line, `sinks` is where\nlines go (default: the console through Effect's `Console`), `onLog` is a tap\nthat sees every call regardless of level, and `onError`/`onWarn` run in their\nown fibers so `Logger.flush` can wait for them. Add `Logger.layerAdapter` so\n`Effect.logInfo` and friends (including the library's own internal logging)\nreach the same sinks; annotate with `Effect.annotateLogs({ logger: \"Name\" })`\nto name those lines. In tests, `Logger.layerCapture()` records into\n`CapturedLogs` (`Logger.captured`).\n\n**Sinks.** A `LogSink` is `{ write(item), flush? }`. Every sink receives every\nline at or above `level`, in order, so a pane feed and a toast always agree.\n`Logger.dailyFileSink({ directory, prefix, retainDays })` appends to one file\nper local day through a single writer fiber (`Logger.flush` and the layer's\nscope wait for it) and unlinks files older than `retainDays`. `channelSink`,\n`levelSink` and `filterSink` narrow any sink.\n\n**Channels.** `Logger.named(\"Main\").channel(\"attention\").warn(\"...\")` tags\nthe line with a channel; the level never sets one, so an `error` log is not\nan attention line by itself. A toast sink is `channelSink(toast, \"attention\")`\nnext to the pane sink, which guarantees a pane line behind every toast:\n\n```ts\nconst AppLogger = Logger.layer({\n  sinks: [\n    Logger.consoleSink,\n    Logger.dailyFileSink({ directory: \"~/.cache/app/logs\", prefix: \"app\" }),\n    channelSink({ write: (item) => Effect.sync(() => toast(item.message)) }, \"attention\"),\n  ],\n});\n```\n\n**Spans.** `Logger.layerTracer` is a `Tracer` that writes every ended\n`Effect.fn` / `Effect.withSpan` span to the logger at debug\n(`Service.method 12ms { outcome, parent, attributes }`). Provide it with the\nlogger layer and set `level: LogLevel.DEBUG` to see them.\n\n## Configuration files\n\n`config` sits on Effect `Config` / `ConfigProvider`. `layerToml(path)` installs\na TOML file as the ambient provider (nested tables are `Config.nested(\"paths\")`\nor, with the default `dotted` option, `Config.string(\"paths.main_clone\")`);\n`layerTomlWithEnv(path)` lets environment variables override it\n(`PATHS_MAIN_CLONE` with `constantCase: true`). `required(config, remedy)` and\n`withRemedy` turn a missing or invalid key into a `ConfigRemedyError` whose\nmessage carries a copy-pasteable fix, and `renderConfigErrors` prints several\nat once. `withAliases(provider, { \"paths.main_clone\": [\"paths.clone\"] })`\nreads a renamed key from its old name and logs one deprecation warning.\n\n```ts\nimport { layerTomlWithEnv, renderConfigErrors, required } from \"@micthiesen/mitools/config\";\n\nconst mainClone = required(\n  Config.string(\"main_clone\").pipe(Config.nested(\"paths\")),\n  \"set paths.main_clone in ~/.config/wt/config.toml\",\n);\nconst program = Effect.gen(function* () {\n  const path = yield* mainClone;\n}).pipe(\n  Effect.provide(layerTomlWithEnv(configPath, { constantCase: true })),\n  Effect.catchTag(\"ConfigRemedyError\", (e) => Effect.fail(renderConfigErrors([e]))),\n);\n// paths.main_clone: not set\n//   set paths.main_clone in ~/.config/wt/config.toml\n```\n\n## CLI entry points\n\n`cli` is the process boundary. `runMain(program, { debug, flush })` forks the\nprogram, interrupts it on SIGINT/SIGTERM (finalizers run), maps the outcome to\nan exit code (a `number` result is the code, `void` is 0, a failure or defect\nprints through `renderFailure` and exits 1, an interruption exits 130), runs\n`flush` on every path and then exits. `renderFailure(cause, { debug })` prints\na tagged failure's `message` (the `operation: cause` chain), a defect's stack,\nand both with `debug`.\n\n```ts\nimport { runMain } from \"@micthiesen/mitools/cli\";\n\nrunMain(main.pipe(Effect.provide(AppLayer)), {\n  debug: process.env.APP_DEBUG !== undefined,\n  flush: Logger.flush.pipe(Effect.provide(AppLayer)),\n});\n```\n\n## Subprocesses\n\n`proc` runs commands as Effects with the semantics that cost incidents when\nthey are missing: a bounded number of concurrent children (`ProcConcurrency`,\n8 permits, the acquire masked so a cancelled wait never leaks one), process\ngroup termination (SIGTERM, one second of grace, SIGKILL, then a full join of\nexit and both pipes) on interruption, and `timedOut` as a first-class result\nfield, because a SIGKILLed command's empty stdout is not an empty answer.\n\n```ts\nimport { ProcConcurrency, run, runOk, runStreaming } from \"@micthiesen/mitools/proc\";\n\nconst branch = yield* runOk([\"git\", \"rev-parse\", \"--abbrev-ref\", \"HEAD\"]); // ProcNonZeroExitError on failure\nconst scan = yield* run([\"lsof\", \"-nP\", \"-iTCP\"], { cwd: \"/\", timeoutMs: 8_000 });\nif (scan.timedOut) return; // do not read \"\" as \"nothing listening\"\nyield* runStreaming([\"pnpm\", \"install\"], { onLine: (line) => log(line), killAfterMs: 600_000 });\n```\n\n`probes` is the same stance for the network: `probePort` answers\n`\"listening\" | \"free\" | \"unknown\"`, where a timeout on our own event loop is\n`unknown` and never `free`; `lsofScan` retries a blown budget once and then\nreports `complete: false` instead of an empty list.\n\n## Locks and debounce\n\n`locks` serializes work across processes with a lock file created atomically\n(`wx`) that records `{ op, phase, pid, host, startedAt }`. A holder whose pid\nis dead, or whose file is older than `staleMs`, is reclaimed. Waiting uses the\n`lockContention` schedule (jittered 150 ms polls up to `timeoutMs`), and\n`withLock` runs the body with `acquireUseRelease`, so interruption releases.\n\n```ts\nimport { withLock, tryAcquireLock, lockStatus, lockLabel } from \"@micthiesen/mitools/locks\";\n\nyield* withLock(\"/tmp/app/deploy.lock\", deploy, { op: \"deploy\", timeoutMs: 30_000 });\n\nconst handle = yield* tryAcquireLock(path, { op: \"deploy\", phase: \"build\" }); // Option, scoped\nif (Option.isNone(handle)) {\n  const held = yield* lockStatus(path);\n  return Option.isSome(held) ? `busy: ${lockLabel(held.value)}` : \"busy\";\n}\nyield* handle.value.phase(\"upload\");\n```\n\n`makeDebounced(onChange, ms)` (in `async`) is a trailing-edge debounce as a\nscoped resource: `trigger`/`cancel` are effects, `triggerUnsafe`/`cancelUnsafe`\nare the adapters for an `fs.watch` callback, and closing the scope cancels the\npending call.\n\n## UI boundaries\n\n`boundary` holds the two places a UI hands an Effect to code that cannot\nyield: `runQuery(effect, signal)` for a TanStack `queryFn` (aborting the signal\ninterrupts the fiber) and `forkReported(effect, report)` for an event callback\n(fork once, report the typed failure, never throw into React). `makeBoundary(runner)`\nbinds both to an `EffectRunner` (a `ManagedRuntime` fits) so a production entry\npoint can be driven under `TestClock` in tests. `react` adds `useEffectFiber`:\none fiber per mount, interrupted on cleanup.\n\n```ts\nuseQuery({ queryKey: [\"worktrees\"], queryFn: ({ signal }) => runQuery(listWorktrees, signal) });\n<button onClick={() => forkReported(remove(slug), (e) => toast(e.message))} />;\nuseEffectFiber(() => (slug ? watchStatus(slug, setStatus) : null), [slug]);\n```\n\n## Testing\n\nUse `@effect/vitest`: `it.effect` runs under a `TestClock`, so retries,\ntimeouts and cron schedules are driven with `TestClock.adjust`. Persistence\ntests use `Docstore.layerMemory`. See `src/**/*.spec.ts`.\n\n`@micthiesen/mitools/testing` (test files only; it imports `vitest`) has the\nhelpers every consumer rewrites: `withVirtualTime(effect, \"1 minute\")`\n(fork, adjust, join), `runWithVirtualTime` (the Promise form with its own\n`TestClock.layer()`), `tmpDir(prefix)` (a scratch directory removed with the\nscope), `trackedTmpDirs()` (one `afterAll` sweep per file) and\n`testRuntime(layer)` (an `EffectRunner` over a test layer, for entry points\nthat take a runner).\n\n## Development\n\n```bash\npnpm test        # vitest (CI=true pnpm test for one run)\npnpm typecheck   # tsc --noEmit (patched with Effect diagnostics)\npnpm lint        # effect-tsgo diagnostics --strict (Effect rules)\npnpm check       # biome format + lint\npnpm build\n```\n\nReleases: bump `version`, commit `Bump to X.Y.Z`, push `main`; CI publishes.\nSee [MIGRATION.md](./MIGRATION.md) for moving from v3 and [CHANGELOG.md](./CHANGELOG.md).\n","readmeFilename":""}