{"_id":"@avelonjs/assay","_rev":"16-2a14468b5cd9ba37e0b8ec6e8616ff7f","name":"@avelonjs/assay","dist-tags":{"latest":"0.8.3"},"versions":{"0.1.0":{"name":"@avelonjs/assay","version":"0.1.0","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.1.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"5f700ca23268dbddc9788f1060d956d46a732920","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.1.0.tgz","fileCount":8,"integrity":"sha512-70MZ2+TBsSY6JuGAMa7XrA3fLjipgp4ZUoJ4040DxEjkuKVryzncVahMnlmeR5lMx6OPHHVBx6QUgvsfahT2Hg==","signatures":[{"sig":"MEYCIQCZn3cKa1OMU+fPNyhYmwJep6FAfSKvRFEywLtVNwKbzAIhAIe4EaGCxQYpgzDLfiSdvC6wkozaRhH0ngqEqUJCI/yL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"4dd65334a5b17f25e548c8a1601d7445349b79da","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"12.0.2","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.1.0_1787877827129_0.19709303668661748","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@avelonjs/assay","version":"0.3.0","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.3.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"20caa380d16885d324a346023cbf3176968e98f5","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.3.0.tgz","fileCount":8,"integrity":"sha512-D19icvwVPimq7FIm62f4yNVsSMw5ymY9gfOJBJWfvzay95NKd0GMXq+wYfcwU9DD96fem6XsgM+/K18w2QK6Lg==","signatures":[{"sig":"MEUCIQDfxKoWMLDJaqLwlrLQJBoKRfzoiGOgiTW+z7CVZIDdpwIgIn9CH9fEG7SsMh3nzcCSLRXwzWh/97xOsz/BaPn2l34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"5ca2de946d13813afe58a4fe89b01ef65edc2870","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.3.0_1788023484081_0.2884473560581531","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@avelonjs/assay","version":"0.3.1","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.3.1","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"21f7d5ac16304dbcaf6eaac385e575ae06afcaea","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.3.1.tgz","fileCount":8,"integrity":"sha512-Iz3eeaoBUZfhKb1XRh2csZ/5EuP8Z2qvLGibK33Nsg5Sg7i6VwvAA/OqU1i73hOUB/XPBnkdQNc8WGTsHJIzSg==","signatures":[{"sig":"MEYCIQDs0/Bjr8mREo/T4jO2CnR+6x3Cr+z3n/oI88guYM4IVwIhAOfLp752IG3A+BFBefnwm86T3YjaFplYlTsRULCAPQtm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"7db3e1301e4ce243c5b34a813b50c6b286d5bd81","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.3.1_1788024221831_0.9022180569325102","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@avelonjs/assay","version":"0.3.2","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.3.2","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"845bb3c72cf54f0153e5523bd8b5dcd9f7d20cb8","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.3.2.tgz","fileCount":8,"integrity":"sha512-e7wPns2xzZhekfdYjVVChTCyER1jCDlLUJ2VXwlynPGuszY3S3x8+l9M+coeRw3NztwN498oLHSUhI0wOAEhkw==","signatures":[{"sig":"MEUCIGbHUaD3+XxYTK3EMihH1R4DsdnECFp0tQS03ozM79Y7AiEA2uIE2fjW/phqg1CFtrm9fcF25pJFpqsHOq8SBau02CM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"373016ed35e1c24c983e76bd76fab0959b249021","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.3.2_1788025883075_0.3367508822460934","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@avelonjs/assay","version":"0.3.3","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.3.3","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"5e272e6aa1b23c9c23f80e9f0d31d9177983eae8","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.3.3.tgz","fileCount":8,"integrity":"sha512-09cNA4e+KI3GDLAm4+1qpJPfrDPDnwKGwXyEW6HHtHdPGSDmDEoeQR6Cu5Qq76yV4uNkWM2KwS7esCuARO21IQ==","signatures":[{"sig":"MEYCIQCbwN4ILF1UYGfNHqf+xuvgbcAmta+aMG/YUvbVk5XjMgIhAL/xW3JH0hF8+V7HWBFORQILITGsqUOEWFFly+YKVZYr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"7cf9902a019c313c1754d81e2ff067147b39cc8f","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.3.3_1788028630962_0.0943580174761145","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@avelonjs/assay","version":"0.3.4","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.3.4","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"2f73fe45c74ba6700cc1f25eda3bbce518bf8839","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.3.4.tgz","fileCount":8,"integrity":"sha512-ds3sJF//VPmmGTxls8J4LLe9UlHrMzZEQ3VrQduisouxpmlqnigpfxqd8GiQu/lB3g5PFmsoHGW6ca/rEAloJg==","signatures":[{"sig":"MEQCIFbN4ACXHZrWWbiFwMjs9oEbXTbzX1CjDIgxmEvJtaTuAiBerUdtUiwNW01oY6xmJZq9YyAFobzRqUJ5JNB7x1w89A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"90bba7a154835ac71d6aca6c0e3a83dea5d5a709","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.3.4_1788030156153_0.6442451984754276","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@avelonjs/assay","version":"0.3.5","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.3.5","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"01e118c95dbe10b5e4443567045f6b197e20416b","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.3.5.tgz","fileCount":8,"integrity":"sha512-VY7i2Ku1MpNH2DmpPVBtE6nUioXetwcmigmNQVRqm2vHKbLzymF2h/02xHfnv/A4jZj8hMJzuStdEhYm3u79fQ==","signatures":[{"sig":"MEQCIH24zns+oDS74G+x8yb7eo/6oX9W/sHuwN1krfKYzq0mAiA5ghDDARbDOwAmmHH6ayeRnQriOxuOkiIT+gk9lM7E9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"3f76dd494bd9e721f9088db1a8f4daea53410a7a","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.3.5_1788032075508_0.286521082020031","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@avelonjs/assay","version":"0.3.6","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.3.6","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"3e4eb7ba1dce32ba05d3f52efd47fd932247fbdd","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.3.6.tgz","fileCount":8,"integrity":"sha512-v1YfCZxHzf3OaIu8hiLIFeNzz27L86dzh1K8rqgtIxeu9XyOg0WsxJD49obf08p24YXrh2KhYZFUA2GVkBTuhA==","signatures":[{"sig":"MEUCIQDdnUuJkgMowOBLVrPodYc9v7BUWxL0q+H5ND00ZxH2VAIge/u6tlyMbUBketivJ+irg5OAsp0m/oCnfwkDjSjbKDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"3ef55fff54a51fd6085a5ed18163ddd0b8ccebb4","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.3.6_1788039408097_0.2485170254067326","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@avelonjs/assay","version":"0.4.0","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.4.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"816b595a72019dee1b0c70d859bd66c924922029","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.4.0.tgz","fileCount":8,"integrity":"sha512-2ifyfvmXcYH8MQPzaEf3pEh6dDSYPI1nAGQUeS0lmBTS5oZCSDiDctLcn6qrsvDKYMbC+PzcK5B6NdP/w5wghQ==","signatures":[{"sig":"MEYCIQDxyypH4gDq22gsvjISfcjDaRPnQeGjGn9Q+ALwNggOogIhANumolHoSNPVO5mpwYjaqC4LhS1UCtiRnUiaOsk57K/7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"012a24ec3e5cbf2682493e79398779c5f4ce50d5","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.4.0_1788047805561_0.5485454563463747","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@avelonjs/assay","version":"0.5.0","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.5.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"1b436fb4e9389a0cffcffcad56ad95ead312b63a","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.5.0.tgz","fileCount":8,"integrity":"sha512-NnCkIlDV4EBsl9oond61roSyWJ2WQYuZGWjldWhqQgw9H2Xc24jfTClcIBhHoNwZfpz/5wMv6naPVXQUNL1HPA==","signatures":[{"sig":"MEQCIE2BpVEvmGYI49ZRDySFlaARA22z7Yq2sQEn4n/GhBapAiAJB3eq6J4k5ng9XAacj03ovD2YBJKe6cQLIcy44Vn5Rw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"9605f4db9921b323684a72cca1eb125fca936237","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.5.0_1788054183246_0.815416490690209","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@avelonjs/assay","version":"0.6.0","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.6.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"bc0975e283375cb1660af5013f81f3ecd0d01f33","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.6.0.tgz","fileCount":8,"integrity":"sha512-ZIUQng8DJ4D+UUMbgat7FJbVHkyBW3sggE6FJy9Rsvf7vCfRcCLBbZ/I1CjKTQZLu17n357EDn+ZVL00/ptJVQ==","signatures":[{"sig":"MEQCIF0sDYYb4IkVYlXxM4XnIyxkKTq13/0yj8V0NNmL0IxAAiARRT09zoznlcdDN5+PWNq4ICzU33bVzOahlUq+seyRNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"54023b71e432677d2cf32a6b5cceeb2eb90aac3f","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.6.0_1788059433916_0.3208962748239774","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@avelonjs/assay","version":"0.7.0","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.7.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"0e4ba59044bc1807a1dc5321515bd644d5cbc310","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.7.0.tgz","fileCount":8,"integrity":"sha512-4TOX42OyhtWrnxSTsrLbSkD087KPbhfei9PhE1tsWDAiomO4ReY4OoooailNqYV/QhqV4jNmFr8/lQLNDNlj3A==","signatures":[{"sig":"MEUCIDXr3UcbOQxNuxyG/irgrNAFxVOww4PNs/zVDqfBkr/ZAiEAq1oQ3df3sOIEntoUASCvA5thC/y9TuO7RnWdsk96wsw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"b8ce5ffcbba806b76a3a92f0e92e5455f42e5802","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.7.0_1788061411156_0.20935580195965686","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@avelonjs/assay","version":"0.8.0","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.8.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"a8cac6df923b0dfcafe372b343b37219cb2fb85f","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.8.0.tgz","fileCount":8,"integrity":"sha512-ESleDIRAssUU1/bGXb9XgvIiowUSVTqY4LEs6mfizEBWOOmQPYOBfQSkec22QjGxWuMYu0L1WOZnVYHY24Wcrg==","signatures":[{"sig":"MEQCICKcJhh6YpmKjPkGjeevYTK73gZwNAWP0v0jtWty5YCkAiBxh2WtaNOqKuAA8uS+x8IlW/BoMdTymKBawyuwSGluOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"85231d8c4b64ac61a0a67f1ae8d1610bd8e609ac","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.8.0_1788068902888_0.6461802126316134","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@avelonjs/assay","version":"0.8.1","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.8.1","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"f183eb3fcdf28e39c30ad6b8913b8b2d1cdfe7d8","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.8.1.tgz","fileCount":8,"integrity":"sha512-iF7dYzPn802nDkeZVNh6m9WlGWr9mr2jZgFDjMwqq4qzbfOU10UNrBgBB2lzOUbSj5znCxFr5tUZytp2vl2k9w==","signatures":[{"sig":"MEYCIQC8VvQiBjHuSOPnV/ywUwm2fWoaLREjsbAprIhvYCj3ygIhAJ9yFlM5aC7r2F4A1KeA5gGfYp2FNejGrVyC96txGDG6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBKWsnjhUe72KtPh0191kBOv6yLuUpvKY8UqBoelaFcDAiALLppJjcJugg4Ja9XRojSi37oAOiwmZDe19sqK8bw70Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"3d7d0c0ff7f417e9f9a5c54dc85f037e8901bf81","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.8.1_1788573218381_0.10008785091780115","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@avelonjs/assay","version":"0.8.2","keywords":["avelon","typescript","testing","harness"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/assay@0.8.2","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"49fe707cb084e3e02ea9ca341d1631e25bc3cfe4","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.8.2.tgz","fileCount":8,"integrity":"sha512-7A9Q+JGw+sAKJVW8zSzDSDvuPrOdJaxzyAcO/9zAHVCoqS/8yV+2YTwIgzZbTsjmdUMMHjkVviHyF347hASpjg==","signatures":[{"sig":"MEUCIBtn7O4raZTqkIJbnmdxIRb5J9YxYcTMRo6KhQUHnDZRAiEAremZJl6NyZ3Vj+BBDLBxFNcFlOgChcE7krN9uyX21+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBOKfhdNwhhOqpWwRjwUz4OTMD81qZ2gVk4+QRTg3Dq3AiAogH1RN0WgSJgx6//cwpn2QQDUBl15lbPgJPzEXDeSnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26892},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"25bfcd03379ae9ef7fc42aab33748eebc468170b","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/assay_0.8.2_1789879602173_0.4193007475967745","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"_id":"@avelonjs/assay@0.8.3","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"667f3e693814e633bbde0d6a5cbff90af4fa3619","tarball":"https://registry.npmjs.org/@avelonjs/assay/-/assay-0.8.3.tgz","fileCount":8,"integrity":"sha512-kPvZ2pI5buKn7T9Swxid3bO+pRfXZvsrP+G1aX2sag9wPglWOklFSQtaOmxjx27bF0+VuyMC+KGhB9y7s0fUiA==","signatures":[{"sig":"MEYCIQDrKvBY/DHp+5F+KCkCl8rr4b5F44+wWBEzxKP1ZzuKNQIhAMJO2HbA3Q9KCoeAaBMYSDuxr2S0q588kDR74XBt7hnM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE72LHkw/A4af0hOKT1KBwbw6kH59mpH4+LxIxrc06HpAiAYQ/Be5wu1hqDeL28IsN5MiTzP6lt6lOmUBm0L/C0JNQ=="}],"unpackedSize":26917},"name":"@avelonjs/assay","type":"module","author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts"},"gitHead":"1231a6430f47d15b9e6fe6cbc04dbbb5d189124e","license":"MIT","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"version":"0.8.3","_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"homepage":"https://github.com/yannelli/avelon","keywords":["avelon","typescript","testing","harness"],"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"_npmVersion":"10.9.8","description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","directories":{},"maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/orm":"workspace:*","@avelonjs/core":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/assay_0.8.3_1789881705823_0.2770548033277733"}}},"time":{"created":"2026-08-28T00:43:46.954Z","modified":"2026-09-20T05:21:46.092Z","0.1.0":"2026-08-28T00:43:47.285Z","0.3.0":"2026-08-29T17:11:24.213Z","0.3.1":"2026-08-29T17:23:41.975Z","0.3.2":"2026-08-29T17:51:23.219Z","0.3.3":"2026-08-29T18:37:11.095Z","0.3.4":"2026-08-29T19:02:36.258Z","0.3.5":"2026-08-29T19:34:35.622Z","0.3.6":"2026-08-29T21:36:48.230Z","0.4.0":"2026-08-29T23:56:45.721Z","0.5.0":"2026-08-30T01:43:03.380Z","0.6.0":"2026-08-30T03:10:34.095Z","0.7.0":"2026-08-30T03:43:31.302Z","0.8.0":"2026-08-30T05:48:23.012Z","0.8.1":"2026-09-05T01:53:38.475Z","0.8.2":"2026-09-20T04:46:42.264Z","0.8.3":"2026-09-20T05:21:45.921Z"},"bugs":{"url":"https://github.com/yannelli/avelon/issues"},"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","homepage":"https://github.com/yannelli/avelon","keywords":["avelon","typescript","testing","harness"],"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/assay"},"description":"Test harness with HTTP helpers, factories, and seeds for Avelon applications.","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"readme":"# @avelonjs/assay\n\n`@avelonjs/assay` is the test harness. It sits on `bun test` and gives you HTTP helpers that dispatch through the core kernel, model factories, and seeds. Reach for it when a feature test should speak in requests, factories, and assertions rather than constructing `HttpRequest` by hand.\n\nAssay tests a material for what it really is: the same kernel, routes, and models the adapter will serve.\n\n## Installation\n\n```sh\nbun add -d @avelonjs/assay\n```\n\nAssay expects `@avelonjs/core` and `@avelonjs/orm`. You pass a kernel and route table in; vendor drivers stay in test setup, never in `app/`.\n\n## Basic Usage\n\n```ts\nimport { FakeDatabase } from '@avelonjs/conformance'\nimport { createKernel, defineConfig, view } from '@avelonjs/core'\nimport { assay } from '@avelonjs/assay'\n\ndefineConfig({ name: 'tests', drivers: { database: new FakeDatabase() } })\n\nconst kernel = createKernel()\nconst client = assay({ kernel, routes })\n\nconst index = await client.get('/users')\nindex.assertOk().assertView('users.index')\nconst stored = await client.actingAs({ id: 'u1' }).post('/users', { name: 'Ada' })\nstored.assertRedirect('/users/u1')\n```\n\n## HTTP Helpers\n\n`assay()` matches method plus path against a `RouteDefinition` table, preferring static segments so `/users/create` does not lose to `/users/{user}`. Each helper builds an `HttpRequest`, dispatches through the kernel, and flushes `after` listeners.\n\n```ts\nconst shown = await client.get('/users/u1')\nshown.assertStatus(200)\nshown.view().props\n```\n\n`call(name, httpRequest())` dispatches a named route when you already have params. Unauthenticated S4-style kernels still read `cookies.user`; `actingAs('ada')` writes that cookie.\n\n## Factories\n\nFactories fill Scrivener models. Sequence numbers start at 1. There is no bundled faker; you return plain attributes so tests stay deterministic.\n\n```ts\nimport { defineFactory } from '@avelonjs/assay'\nimport { User } from '@/app/Models/User'\n\nconst UserFactory = defineFactory(User, (sequence) => ({\n  id: `user-${sequence}`,\n  email: `user-${sequence}@example.test`,\n  name: `User ${sequence}`,\n}))\n\nUserFactory.state('ada', () => ({ name: 'Ada Lovelace', email: 'ada@example.test' }))\n\nawait UserFactory.make()\nawait UserFactory.create({ name: 'Ada' })\nawait UserFactory.as('ada').create()\nawait UserFactory.createMany(3)\n```\n\n## Seeds\n\nSeeds are ordinary modules with a default export. `reeve db:seed` and `runSeeds(dir)` load `database/seeds` in filename order.\n\n```ts\nimport { defineSeed } from '@avelonjs/assay'\n\nexport default defineSeed(async () => {\n  await UserFactory.createMany(5)\n}, 'users')\n```\n\n```ts\nimport { runSeed, runSeeds } from '@avelonjs/assay'\n\nawait runSeed(seed)\nawait runSeeds('database/seeds')\n```\n\n## Method Reference\n\n| Method / export                | Signature                                           | Description                                               |\n| ------------------------------ | --------------------------------------------------- | --------------------------------------------------------- |\n| `assay`                        | `(options: AssayOptions) => AssayClient`            | Creates an HTTP client bound to a kernel and route table. |\n| `AssayClient.get`              | `(path, headers?) => Promise<AssayResponse>`        | Dispatches GET.                                           |\n| `AssayClient.post`             | `(path, body?, headers?) => Promise<AssayResponse>` | Dispatches POST.                                          |\n| `AssayClient.put`              | `(path, body?, headers?) => Promise<AssayResponse>` | Dispatches PUT.                                           |\n| `AssayClient.patch`            | `(path, body?, headers?) => Promise<AssayResponse>` | Dispatches PATCH.                                         |\n| `AssayClient.delete`           | `(path, headers?) => Promise<AssayResponse>`        | Dispatches DELETE.                                        |\n| `AssayClient.call`             | `(name, request) => Promise<AssayResponse>`         | Dispatches a named route with an existing `HttpRequest`.  |\n| `AssayClient.actingAs`         | `(actor: { id: string } \\| string) => this`         | Sets the actor cookie for subsequent requests.            |\n| `AssayClient.asGuest`          | `() => this`                                        | Clears actor cookies.                                     |\n| `AssayResponse.assertOk`       | `() => this`                                        | Fails unless the outcome is 2xx and not a failed action.  |\n| `AssayResponse.assertStatus`   | `(expected: number) => this`                        | Fails unless the status hint equals `expected`.           |\n| `AssayResponse.assertRedirect` | `(location: string) => this`                        | Fails unless the kernel redirected to `location`.         |\n| `AssayResponse.assertView`     | `(view: unknown) => this`                           | Fails unless the kernel rendered `view`.                  |\n| `AssayResponse.status`         | `() => number`                                      | Returns the transport-neutral status hint.                |\n| `AssayResponse.view`           | `() => ViewResult`                                  | Returns the view result or throws.                        |\n| `AssayResponse.data`           | `() => unknown`                                     | Returns action data or view props.                        |\n| `AssayResponse.result`         | `KernelResult`                                      | Underlying kernel result.                                 |\n| `AssayAssertion`               | `class AssayAssertion extends Error`                | Thrown when an assertion does not hold.                   |\n| `matchRoute`                   | `(routes, method, path) => { route, params }`       | Resolves a path, preferring static segments.              |\n| `httpRequest`                  | `(overrides?) => HttpRequest`                       | Builds a kernel request with test defaults.               |\n| `parsePath`                    | `(path: string) => { pathname, query }`             | Splits path and query, preserving repeated keys.          |\n| `requestFromCall`              | `(options) => HttpRequest`                          | Builds a request for an HTTP helper call.                 |\n| `encodeBody`                   | `(body: unknown) => Uint8Array`                     | Encodes a body for `rawBody()`.                           |\n| `defineFactory`                | `(model, definition) => Factory`                    | Creates a model factory.                                  |\n| `Factory.make`                 | `(overrides?) => Promise<TModel>`                   | Builds a model without persisting.                        |\n| `Factory.create`               | `(overrides?) => Promise<TModel>`                   | Persists one model.                                       |\n| `Factory.createMany`           | `(count, overrides?) => Promise<readonly TModel[]>` | Persists `count` models.                                  |\n| `Factory.state`                | `(name, attributes) => this`                        | Registers a named attribute overlay.                      |\n| `Factory.as`                   | `(name: string) => this`                            | Applies a named state to the next make/create.            |\n| `Factory.reset`                | `() => void`                                        | Clears sequence and pending states.                       |\n| `Factory.sequence`             | `number`                                            | Current sequence number.                                  |\n| `defineSeed`                   | `(run, name?) => Seed`                              | Wraps a seed callback.                                    |\n| `runSeed`                      | `(seed, context?) => Promise<void>`                 | Runs one seed.                                            |\n| `runSeeds`                     | `(dir: string) => Promise<readonly string[]>`       | Imports and runs default exports in filename order.       |\n| `AssayOptions`                 | `interface`                                         | Kernel, routes, and optional actor cookie name.           |\n| `Seed`                         | `interface`                                         | Named seed with a `run` callback.                         |\n| `FactoryDefinition`            | `type`                                              | `(sequence) => attributes` factory callback.              |\n| `FactoryState`                 | `type`                                              | `() => attributes` overlay registered with `Factory.state`. |\n| `SeedCallback`                 | `type`                                              | `(context: SeedContext) => Promise<void> \\| void` seed body. |\n| `SeedContext`                  | `interface`                                         | Optional `path` of a seed file loaded from disk.          |\n\n## Testing\n\nAssay is itself tested with `FakeDatabase` and `createKernel`. Point `assay()` at the same kernel your adapter mounts.\n\n```ts\nimport { assay } from '@avelonjs/assay'\nimport { FakeDatabase } from '@avelonjs/conformance'\n\nconst client = assay({ kernel, routes })\nawait client.get('/users').assertOk()\n```\n\n```sh\nbun test\nbun run typecheck\n```\n","readmeFilename":"README.md"}