{"_id":"@akuseru_w/kura","_rev":"17-db2fae596d795cadd7c5ef46a7ca243b","name":"@akuseru_w/kura","dist-tags":{"latest":"0.1.15"},"versions":{"0.1.0":{"name":"@akuseru_w/kura","version":"0.1.0","keywords":["bun","framework","http","typescript","kura"],"license":"UNLICENSED","_id":"@akuseru_w/kura@0.1.0","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"820858ff6d717848bca00abeed11159d47e1f9fe","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.0.tgz","fileCount":115,"integrity":"sha512-c4IzL4dh/a1VbEj7w6No42KxSTCcsCQ9qXx6ny5PhJnDrQ889Z0F+qXN7jl7qktlHAItq4Sy9Adz121FeJAvyg==","signatures":[{"sig":"MEYCIQDNNs4pK3Z/Gcrru4N7XDEhW54iqtgjQmtVmGbw4LNUyQIhAIgudtYm7uUGaP8lLEO5okb4epucTYuxDi0i2/TvkIkI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1390753},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","typecheck":"tsc --noEmit"},"_npmUser":{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.11.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.0_1781775106232_0.5254234729566627","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@akuseru_w/kura","version":"0.1.1","keywords":["bun","framework","http","typescript","kura"],"license":"UNLICENSED","_id":"@akuseru_w/kura@0.1.1","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"39fc303c307db43dd4608dd1293327ae78986c2c","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.1.tgz","fileCount":115,"integrity":"sha512-dvZ0tAJSwmBLuAXYpK7pJq0CAvjaU4iIXlxv+9yA0C+jnlYVG7D+aCExDpRpEwaWY7YDS/7OEBd0eNSEEbiLag==","signatures":[{"sig":"MEQCIGT1K209Pr4n+aXExhTSUh+/W2/ov+tUG9hG9MmRV7O0AiArWSXfQhzOVuE9BRog1RjgpeK0XXxRR5QhJEe/BlSHtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1390745},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","typecheck":"tsc --noEmit"},"_npmUser":{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.11.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.1_1781776123132_0.627715117969579","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@akuseru_w/kura","version":"0.1.2","keywords":["bun","framework","http","typescript","kura"],"license":"UNLICENSED","_id":"@akuseru_w/kura@0.1.2","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"2e4404caa12d5b14b2f049d1a4b5e3d91cc84438","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.2.tgz","fileCount":115,"integrity":"sha512-DRZ9ia5zaj+WKNcDQ7e2AL6iOqB9K8jVfGLSL6j6s4MN4d+mR4BLGNR+YBBZHID8/LgS5aVOU0k/ctvgMuYACQ==","signatures":[{"sig":"MEQCIEivEq/jIad3LY2OEeFfufRghq86bl9xcvJ2n6KbPC9iAiBXkWBE7/MVcFXok45ol05BFr+qR0VbljXCufTbGlKH2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1412493},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","typecheck":"tsc --noEmit"},"_npmUser":{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.11.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.2_1781798978808_0.6191115480925744","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@akuseru_w/kura","version":"0.1.3","keywords":["bun","framework","http","typescript","kura"],"license":"UNLICENSED","_id":"@akuseru_w/kura@0.1.3","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"6619cbd11ec3bc83d29346f47789983b271417d6","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.3.tgz","fileCount":115,"integrity":"sha512-4AY7PnXFRaWurrF2w/LUDyel5Omij63wRq4BbaGkLXYaOUYqXjBWIN2cTBPCeimTPzb+T5ezN5YVWL7rMhMVxg==","signatures":[{"sig":"MEUCIQDURe661QGKO+ouvPvrok+unmJF9gjkqwhW9nSgYHVkogIgDqpw2+KouJykpuUskPIOj3s/3jin3oN84w4fTwzJKSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1417890},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","typecheck":"tsc --noEmit"},"_npmUser":{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.11.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.3_1781802868404_0.7599639315183429","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@akuseru_w/kura","version":"0.1.4","keywords":["bun","framework","http","typescript","kura"],"license":"UNLICENSED","_id":"@akuseru_w/kura@0.1.4","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"f65d7717a45d371710038daf9d1836fc7d169d2b","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.4.tgz","fileCount":115,"integrity":"sha512-fuQ/wL4N349P14kK+FM4aP/MHCTXGF0ii73evpPvRF1uTlmqtNzD95u5RVcSZdpQC2ZUEwjBbB0qD4vymhmRnA==","signatures":[{"sig":"MEUCIQCccSYVKVtPqWj6gyWQswuDpBrGrjIqby5SuhuJDhjveQIgTYm8A4rLShFN//JH4VbaVyqDfJ5pbl0JmA3yNR/raew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1455868},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","typecheck":"tsc --noEmit"},"_npmUser":{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.11.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.4_1781804110806_0.49014642058814806","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@akuseru_w/kura","version":"0.1.6","keywords":["bun","framework","http","typescript","kura"],"license":"UNLICENSED","_id":"@akuseru_w/kura@0.1.6","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"9497ab042f70016f8a7c603a9cadf3a3375d1ea6","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.6.tgz","fileCount":119,"integrity":"sha512-btgyc5r/Opa45aBE/X8v7i/EQSP9XnFun3XuZmWmAqx4MbMd64k+5MKYjWXdtfH75KnE72IKOO0lF/a5M/dYgQ==","signatures":[{"sig":"MEQCIGjrVgUrz20V4aTLk66zZDUfycmrjE+Y1S6CObBJydHIAiATEM3GllMeBnzn7Pt/EGw49puT7F8wAcvpHUg1aKKxMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1558387},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"d16b8eb68ee125b7f2e39ce7f28ed4dcf401e768","scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","bench:run":"bun run benchmarks/scripts/run.ts","typecheck":"tsc --noEmit","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.13.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"elysia":"^1.4.29","lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.6_1781860082165_0.7000102575234473","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@akuseru_w/kura","version":"0.1.7","keywords":["bun","framework","http","typescript","kura"],"license":"MIT","_id":"@akuseru_w/kura@0.1.7","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"c796f91f479573425970459998d423e4c97a5188","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.7.tgz","fileCount":122,"integrity":"sha512-1JpuQfEUlRp3uensjY9shawoa8FnRD/8ior/aFCt5j2dfKKwDImK7WLcEwpx+5mBEhnBKpK4hNhdwJsO+a3CoA==","signatures":[{"sig":"MEYCIQCaeDqrGI3bxL/lEQCnBm280PRJuRHhVEHevDunizUGkAIhAJ8E45aCVL6jVBcdmedp1gL9vAt7upqKqhx65Z0Jw/TG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1665856},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a916c1ebc58f9472be592625b36904db2135241a","scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","bench:run":"bun run benchmarks/scripts/run.ts","typecheck":"tsc --noEmit","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.13.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"elysia":"^1.4.29","lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.7_1781898151588_0.5071948204423726","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@akuseru_w/kura","version":"0.1.8","keywords":["bun","framework","http","typescript","kura"],"license":"MIT","_id":"@akuseru_w/kura@0.1.8","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"d1b3345e7e73f3d5807a13d3e2421c325a59490c","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.8.tgz","fileCount":126,"integrity":"sha512-7lanQDbA+QeT2rLnfCRvC7HNVXavBSEuh0aysBZlE8FVfGciw2PsKf0V2Bik2O3/jaSIStoYC5oNbHJ3aX8lyQ==","signatures":[{"sig":"MEUCIQD7rZEx4UJht6zh5lsmzzuOieI7hGTpfWa42Q+VlXyIVwIgCWx7UNcJw9qR322XUQJGOF32QxVBoSZArOTXajf/eR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1790093},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"3474e42ce4fde1ac45fb367ea6e736b23c4ba5cc","scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","bench:run":"bun run benchmarks/scripts/run.ts","typecheck":"tsc --noEmit","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.13.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"elysia":"^1.4.29","lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.8_1781933807004_0.5937903648604752","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@akuseru_w/kura","version":"0.1.9","keywords":["bun","framework","http","typescript","kura"],"license":"MIT","_id":"@akuseru_w/kura@0.1.9","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"573b67ca8bf4c9ed12b6a839385122911c2d20b8","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.9.tgz","fileCount":126,"integrity":"sha512-Z11yEqTJ4J7XoiIgyAzxqFSFHtpoyyBPSl+ia0M+o5inEIoKuB53vJk8S0/Q9qGWPIEUc0550oXqoD0biCJoSA==","signatures":[{"sig":"MEQCIC+u2wlWJ0MP5+PqbjuvzW01NPv2lqDGa4OWel+fp2g0AiBxo0J0aecrQBBlrbNO+MswByq8HFEIj+yGUyDzFTG8Ew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1790070},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"e33da05b1f13ba4259c5eecd52d0376e51cf8a9d","scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","bench:run":"bun run benchmarks/scripts/run.ts","typecheck":"tsc --noEmit","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.13.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.9_1781935599792_0.13362319359078856","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@akuseru_w/kura","version":"0.1.10","keywords":["bun","framework","http","typescript","kura"],"license":"MIT","_id":"@akuseru_w/kura@0.1.10","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"37a63f74652c3d126a476b7063204767d54ef405","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.10.tgz","fileCount":216,"integrity":"sha512-hsN3HzKQFkB1xOB47IG4JtcLc0o+JfTNxjpUDf8YpX/aZsJeFel3e7kG19tY2S9yUPADL9RcHywxe4bGuNeI5g==","signatures":[{"sig":"MEUCIQCuorYQ2fH0MIpsqLvfiYtlJ5MOqy+buM9Z0TZpWhOwWAIgcp9dhaT3hy2RgOvUBPfyuiYhdaoZHpWw2PeJcERNPlo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2983162},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./auth":{"types":"./dist/auth.d.ts","import":"./dist/auth.js","default":"./dist/auth.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","default":"./dist/core.js"},"./hash":{"types":"./dist/hash.d.ts","import":"./dist/hash.js","default":"./dist/hash.js"},"./http":{"types":"./dist/http.d.ts","import":"./dist/http.js","default":"./dist/http.js"},"./view":{"types":"./dist/view.d.ts","import":"./dist/view.js","default":"./dist/view.js"},"./cache":{"types":"./dist/cache.d.ts","import":"./dist/cache.js","default":"./dist/cache.js"},"./queue":{"types":"./dist/queue.d.ts","import":"./dist/queue.js","default":"./dist/queue.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js","default":"./dist/config.js"},"./events":{"types":"./dist/events.d.ts","import":"./dist/events.js","default":"./dist/events.js"},"./console":{"types":"./dist/console.d.ts","import":"./dist/console.js","default":"./dist/console.js"},"./openapi":{"types":"./dist/openapi.d.ts","import":"./dist/openapi.js","default":"./dist/openapi.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js","default":"./dist/testing.js"},"./database":{"types":"./dist/database.d.ts","import":"./dist/database.js","default":"./dist/database.js"},"./container":{"types":"./dist/container.d.ts","import":"./dist/container.js","default":"./dist/container.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.js","default":"./dist/validation.js"},"./queue/redis":{"types":"./dist/queue/redis.d.ts","import":"./dist/queue/redis.js","default":"./dist/queue/redis.js"},"./package.json":"./package.json","./queue/sqlite":{"types":"./dist/queue/sqlite.d.ts","import":"./dist/queue/sqlite.js","default":"./dist/queue/sqlite.js"}},"gitHead":"67a1fbc08d04c4966d82ba2d35aca9fb6c3bb195","scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","bench:run":"bun run benchmarks/scripts/run.ts","typecheck":"tsc --noEmit","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.13.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.10_1781997814517_0.5917154463158858","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@akuseru_w/kura","version":"0.1.11","keywords":["bun","framework","http","typescript","kura"],"license":"MIT","_id":"@akuseru_w/kura@0.1.11","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"2e9d34bdb02902bde8f3fe6cc79e482845a0b944","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.11.tgz","fileCount":244,"integrity":"sha512-RxwrtYdh3UOTPVuIKy1OA8FSMrjEfbF/+ju2IdXuiL/1ML2EhEsrraQdHc8eZFH5PY2+jE+Plk1jOCUMa0x5+A==","signatures":[{"sig":"MEUCIQCDBcQw4ijPHtYSaUDJ/Dx/y+e9PmD4wOldEdfFPLNyTwIgG8NzSE8IZ2BkyLaghXTLANW6hwuw54Wkd9rR+w5incA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3553263},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./auth":{"types":"./dist/auth.d.ts","import":"./dist/auth.js","default":"./dist/auth.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","default":"./dist/core.js"},"./hash":{"types":"./dist/hash.d.ts","import":"./dist/hash.js","default":"./dist/hash.js"},"./http":{"types":"./dist/http.d.ts","import":"./dist/http.js","default":"./dist/http.js"},"./view":{"types":"./dist/view.d.ts","import":"./dist/view.js","default":"./dist/view.js"},"./cache":{"types":"./dist/cache.d.ts","import":"./dist/cache.js","default":"./dist/cache.js"},"./queue":{"types":"./dist/queue.d.ts","import":"./dist/queue.js","default":"./dist/queue.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js","default":"./dist/config.js"},"./events":{"types":"./dist/events.d.ts","import":"./dist/events.js","default":"./dist/events.js"},"./console":{"types":"./dist/console.d.ts","import":"./dist/console.js","default":"./dist/console.js"},"./openapi":{"types":"./dist/openapi.d.ts","import":"./dist/openapi.js","default":"./dist/openapi.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js","default":"./dist/testing.js"},"./database":{"types":"./dist/database.d.ts","import":"./dist/database.js","default":"./dist/database.js"},"./container":{"types":"./dist/container.d.ts","import":"./dist/container.js","default":"./dist/container.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.js","default":"./dist/validation.js"},"./queue/redis":{"types":"./dist/queue/redis.d.ts","import":"./dist/queue/redis.js","default":"./dist/queue/redis.js"},"./package.json":"./package.json","./queue/sqlite":{"types":"./dist/queue/sqlite.d.ts","import":"./dist/queue/sqlite.js","default":"./dist/queue/sqlite.js"}},"gitHead":"a5accb3ef17643cf1d90e30321e5c1f6f481bfe5","scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","bench:run":"bun run benchmarks/scripts/run.ts","typecheck":"tsc --noEmit","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.13.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.11_1782141469918_0.5495273355761465","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@akuseru_w/kura","version":"0.1.12","keywords":["bun","framework","http","typescript","kura"],"license":"MIT","_id":"@akuseru_w/kura@0.1.12","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"45e83bd1ef8efb457778d8ae139fb634c43fef6d","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.12.tgz","fileCount":246,"integrity":"sha512-Hma9LAx1lVjwM/9iNctONk/u75idT7/470VMybxKNY8urL1NlhacnTsfI5ZCVIIGusfblt87wo/XlDcouJtvpA==","signatures":[{"sig":"MEQCIBR4YLZYw6EywAYl2MwPr8V0eY7FPigmmCaZyvptYTUDAiAIZZF1xhp7vtFQXW9KfUh2tJ2Nb9COb/+pXzMpUxcolg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3562060},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./auth":{"types":"./dist/auth.d.ts","import":"./dist/auth.js","default":"./dist/auth.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","default":"./dist/core.js"},"./hash":{"types":"./dist/hash.d.ts","import":"./dist/hash.js","default":"./dist/hash.js"},"./http":{"types":"./dist/http.d.ts","import":"./dist/http.js","default":"./dist/http.js"},"./view":{"types":"./dist/view.d.ts","import":"./dist/view.js","default":"./dist/view.js"},"./cache":{"types":"./dist/cache.d.ts","import":"./dist/cache.js","default":"./dist/cache.js"},"./queue":{"types":"./dist/queue.d.ts","import":"./dist/queue.js","default":"./dist/queue.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js","default":"./dist/config.js"},"./events":{"types":"./dist/events.d.ts","import":"./dist/events.js","default":"./dist/events.js"},"./console":{"types":"./dist/console.d.ts","import":"./dist/console.js","default":"./dist/console.js"},"./openapi":{"types":"./dist/openapi.d.ts","import":"./dist/openapi.js","default":"./dist/openapi.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js","default":"./dist/testing.js"},"./database":{"types":"./dist/database.d.ts","import":"./dist/database.js","default":"./dist/database.js"},"./container":{"types":"./dist/container.d.ts","import":"./dist/container.js","default":"./dist/container.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.js","default":"./dist/validation.js"},"./queue/redis":{"types":"./dist/queue/redis.d.ts","import":"./dist/queue/redis.js","default":"./dist/queue/redis.js"},"./package.json":"./package.json","./queue/sqlite":{"types":"./dist/queue/sqlite.d.ts","import":"./dist/queue/sqlite.js","default":"./dist/queue/sqlite.js"}},"gitHead":"cc4b5221ebc0f77437f1ee8a893b793c865cff5f","scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","bench:run":"bun run benchmarks/scripts/run.ts","typecheck":"tsc --noEmit","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.13.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.12_1782186778953_0.7997256987022274","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@akuseru_w/kura","version":"0.1.13","keywords":["bun","framework","http","typescript","kura"],"license":"MIT","_id":"@akuseru_w/kura@0.1.13","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"19aaec121fbcf2bcce6c15893641ae6032c5d515","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.13.tgz","fileCount":246,"integrity":"sha512-xokOfaR81EKD0h6k4g7FH37ISP+aACPubAmgPsQr1rGTJfIPhiV0ZplHSsZvPPIereJrYk2SuASMjP1L+ABY2Q==","signatures":[{"sig":"MEUCIDabf/q3GDNepaW5S1C6edUFO2j2RoAiuHY5WJpEHCV+AiEA4+bsH3ga0j7ocy82xMB+u8WVtNpENs96m41NTV2KBEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3562119},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./auth":{"types":"./dist/auth.d.ts","import":"./dist/auth.js","default":"./dist/auth.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","default":"./dist/core.js"},"./hash":{"types":"./dist/hash.d.ts","import":"./dist/hash.js","default":"./dist/hash.js"},"./http":{"types":"./dist/http.d.ts","import":"./dist/http.js","default":"./dist/http.js"},"./view":{"types":"./dist/view.d.ts","import":"./dist/view.js","default":"./dist/view.js"},"./cache":{"types":"./dist/cache.d.ts","import":"./dist/cache.js","default":"./dist/cache.js"},"./queue":{"types":"./dist/queue.d.ts","import":"./dist/queue.js","default":"./dist/queue.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js","default":"./dist/config.js"},"./events":{"types":"./dist/events.d.ts","import":"./dist/events.js","default":"./dist/events.js"},"./console":{"types":"./dist/console.d.ts","import":"./dist/console.js","default":"./dist/console.js"},"./openapi":{"types":"./dist/openapi.d.ts","import":"./dist/openapi.js","default":"./dist/openapi.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js","default":"./dist/testing.js"},"./database":{"types":"./dist/database.d.ts","import":"./dist/database.js","default":"./dist/database.js"},"./container":{"types":"./dist/container.d.ts","import":"./dist/container.js","default":"./dist/container.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.js","default":"./dist/validation.js"},"./queue/redis":{"types":"./dist/queue/redis.d.ts","import":"./dist/queue/redis.js","default":"./dist/queue/redis.js"},"./package.json":"./package.json","./queue/sqlite":{"types":"./dist/queue/sqlite.d.ts","import":"./dist/queue/sqlite.js","default":"./dist/queue/sqlite.js"}},"gitHead":"d649a85788f2ea0c14094396df4dfc03b41117b2","scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","bench:run":"bun run benchmarks/scripts/run.ts","typecheck":"tsc --noEmit","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts","smoke:published":"bun run scripts/smoke-published.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.13.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.13_1782188668165_0.8408006038574707","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@akuseru_w/kura","version":"0.1.14","keywords":["bun","framework","http","typescript","kura"],"license":"MIT","_id":"@akuseru_w/kura@0.1.14","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"bin":{"kura":"dist/bin/kura.js"},"dist":{"shasum":"d6b3f1dfcdd595b68eaff067ac3d84f3d8294b1a","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.14.tgz","fileCount":246,"integrity":"sha512-KbpHefXztHdZANsnLp/9en9W4zwJG2eMTp/fuY8X8HhtvmFmeYMWwvYtuRap28SRVYhy3OVKz6S4XqiIDjdggw==","signatures":[{"sig":"MEYCIQDBTNB1CJA4RQoN40+x1RnWIC3XWsRe3QR1SCTzUqUhSAIhAM+QdZ4SIQ+MBa0KatplKixWVX3hktGzMmYnO/izUjVQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3562119},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./auth":{"types":"./dist/auth.d.ts","import":"./dist/auth.js","default":"./dist/auth.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","default":"./dist/core.js"},"./hash":{"types":"./dist/hash.d.ts","import":"./dist/hash.js","default":"./dist/hash.js"},"./http":{"types":"./dist/http.d.ts","import":"./dist/http.js","default":"./dist/http.js"},"./view":{"types":"./dist/view.d.ts","import":"./dist/view.js","default":"./dist/view.js"},"./cache":{"types":"./dist/cache.d.ts","import":"./dist/cache.js","default":"./dist/cache.js"},"./queue":{"types":"./dist/queue.d.ts","import":"./dist/queue.js","default":"./dist/queue.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js","default":"./dist/config.js"},"./events":{"types":"./dist/events.d.ts","import":"./dist/events.js","default":"./dist/events.js"},"./console":{"types":"./dist/console.d.ts","import":"./dist/console.js","default":"./dist/console.js"},"./openapi":{"types":"./dist/openapi.d.ts","import":"./dist/openapi.js","default":"./dist/openapi.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js","default":"./dist/testing.js"},"./database":{"types":"./dist/database.d.ts","import":"./dist/database.js","default":"./dist/database.js"},"./container":{"types":"./dist/container.d.ts","import":"./dist/container.js","default":"./dist/container.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.js","default":"./dist/validation.js"},"./queue/redis":{"types":"./dist/queue/redis.d.ts","import":"./dist/queue/redis.js","default":"./dist/queue/redis.js"},"./package.json":"./package.json","./queue/sqlite":{"types":"./dist/queue/sqlite.d.ts","import":"./dist/queue/sqlite.js","default":"./dist/queue/sqlite.js"}},"gitHead":"9e0785f5c782a1bbdd9bfcda365c6043f22737db","scripts":{"lint":"biome check .","test":"bun test","build":"bun run scripts/build.ts","format":"biome format . --write","bench:run":"bun run benchmarks/scripts/run.ts","typecheck":"tsc --noEmit","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts","smoke:published":"bun run scripts/smoke-published.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"repository":{"url":"git+https://github.com/AkuseruW/kura.git","type":"git"},"_npmVersion":"11.13.0","description":"A Bun-native TypeScript web framework.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.0.15","@types/bun":"^1.3.6","typescript":"^5.9.3","@biomejs/biome":"^2.3.10"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kura_0.1.14_1782189567690_0.4771109167596499","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@akuseru_w/kura","version":"0.1.15","description":"A Bun-native TypeScript web framework.","keywords":["bun","framework","http","typescript","kura"],"homepage":"https://github.com/AkuseruW/kura#readme","bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"repository":{"type":"git","url":"git+https://github.com/AkuseruW/kura.git"},"license":"MIT","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","bin":{"kura":"dist/bin/kura.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./auth":{"types":"./dist/auth.d.ts","import":"./dist/auth.js","default":"./dist/auth.js"},"./cache":{"types":"./dist/cache.d.ts","import":"./dist/cache.js","default":"./dist/cache.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","default":"./dist/client.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js","default":"./dist/config.js"},"./container":{"types":"./dist/container.d.ts","import":"./dist/container.js","default":"./dist/container.js"},"./console":{"types":"./dist/console.d.ts","import":"./dist/console.js","default":"./dist/console.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","default":"./dist/core.js"},"./database":{"types":"./dist/database.d.ts","import":"./dist/database.js","default":"./dist/database.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./events":{"types":"./dist/events.d.ts","import":"./dist/events.js","default":"./dist/events.js"},"./hash":{"types":"./dist/hash.d.ts","import":"./dist/hash.js","default":"./dist/hash.js"},"./http":{"types":"./dist/http.d.ts","import":"./dist/http.js","default":"./dist/http.js"},"./openapi":{"types":"./dist/openapi.d.ts","import":"./dist/openapi.js","default":"./dist/openapi.js"},"./queue":{"types":"./dist/queue.d.ts","import":"./dist/queue.js","default":"./dist/queue.js"},"./queue/redis":{"types":"./dist/queue/redis.d.ts","import":"./dist/queue/redis.js","default":"./dist/queue/redis.js"},"./queue/sqlite":{"types":"./dist/queue/sqlite.d.ts","import":"./dist/queue/sqlite.js","default":"./dist/queue/sqlite.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js","default":"./dist/testing.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.js","default":"./dist/validation.js"},"./view":{"types":"./dist/view.d.ts","import":"./dist/view.js","default":"./dist/view.js"},"./package.json":"./package.json"},"publishConfig":{"access":"public"},"engines":{"bun":">=1.3.0"},"scripts":{"bench:run":"bun run benchmarks/scripts/run.ts","bench:scaffold":"bun run benchmarks/scripts/scaffold.ts","build":"bun run scripts/build.ts","lint":"biome check .","format":"biome format . --write","smoke:mysql":"bun run scripts/smoke-mysql.ts","smoke:published":"bun run scripts/smoke-published.ts","test":"bun test","typecheck":"tsc --noEmit"},"devDependencies":{"@biomejs/biome":"^2.3.10","@types/bun":"^1.3.6","lefthook":"^2.0.15","typescript":"^5.9.3"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"typescript":{"optional":true}},"gitHead":"6e57a7c064e7ca40d51f11f851fa27b67f7c1d50","_id":"@akuseru_w/kura@0.1.15","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-g3p0182EfoKkAqTMWHSjsqXYF4/ULfW3ZFD7x8tH4grm03f6ofqjuls2RoG8MHvgUL2vR/PnhvDHHXPblpMpbQ==","shasum":"ecfb5e2966517d03b36c7ff67c10e3ca429d6f69","tarball":"https://registry.npmjs.org/@akuseru_w/kura/-/kura-0.1.15.tgz","fileCount":270,"unpackedSize":4629312,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akuseru_w%2fkura@0.1.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCG2G7xgRQ4wjEw6PQFDUFCua54Fig5XLeBCoBE5OcwegIhAP/bgrdux9/+7byl6Uua312Xmrb8UcMUpVpizRucY21h"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab38c1cd-53bb-4276-b158-4bd2206b5d75"}},"directories":{},"maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kura_0.1.15_1786020994734_0.33725868101899503"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-18T09:31:45.959Z","modified":"2026-08-06T12:56:35.329Z","0.1.0":"2026-06-18T09:31:46.390Z","0.1.1":"2026-06-18T09:48:43.304Z","0.1.2":"2026-06-18T16:09:39.029Z","0.1.3":"2026-06-18T17:14:28.693Z","0.1.4":"2026-06-18T17:35:11.002Z","0.1.6":"2026-06-19T09:08:02.374Z","0.1.7":"2026-06-19T19:42:31.794Z","0.1.8":"2026-06-20T05:36:47.154Z","0.1.9":"2026-06-20T06:06:39.986Z","0.1.10":"2026-06-20T23:23:34.693Z","0.1.11":"2026-06-22T15:17:50.089Z","0.1.12":"2026-06-23T03:52:59.136Z","0.1.13":"2026-06-23T04:24:28.345Z","0.1.14":"2026-06-23T04:39:27.845Z","0.1.15":"2026-08-06T12:56:34.935Z"},"bugs":{"url":"https://github.com/AkuseruW/kura/issues"},"license":"MIT","homepage":"https://github.com/AkuseruW/kura#readme","keywords":["bun","framework","http","typescript","kura"],"repository":{"type":"git","url":"git+https://github.com/AkuseruW/kura.git"},"description":"A Bun-native TypeScript web framework.","maintainers":[{"name":"akuseru_w","email":"wolfs.axelw@gmail.com"}],"readme":"# Kura\n\nKura is a Bun-native TypeScript web framework for building HTTP applications with\na conventional project structure, typed primitives, and a first-party CLI.\n\nIt gives you the foundation of a full-stack framework without hiding the Bun\nruntime: routing, middleware, configuration, validation, console commands,\ntesting tools, cache, queue, auth primitives, and database building blocks.\n\n## Requirements\n\n- Bun 1.3 or newer\n- TypeScript 5 when type-checking applications\n\n## License\n\nKura is open source software licensed under the MIT license.\n\n## Create An Application\n\nCreate a new project with the application starter.\n\n```sh\nbun create kura-app my-app\ncd my-app\nbun install\nbun run dev\n```\n\nThe development server starts on http://localhost:3333.\n\nYou can also scaffold without prompts.\n\n```sh\nbun create kura-app my-api -- --yes --preset=api\n```\n\nAvailable starter choices include:\n\n- `preset`: `api`, `web`, or `full`\n- `architecture`: `standard`, `modular`, or `domain`\n- `database`: `none`, `sqlite`, `postgres`, or `mysql`\n- `auth`: `none`, `session`, or `access-token`\n- `cache`: `memory`, `file`, or `redis`\n- `queue`: `none`, `memory`, `sqlite`, or `redis`\n- `module`: `mail`, `storage`, `i18n`, or `websockets`\n\n## Application Code\n\nGenerated applications install the framework runtime under the local `kura`\nalias, while the published package remains `@akuseru_w/kura` on npm.\n\n```ts\nimport type { Context } from \"kura/http\";\nimport { view } from \"kura/view\";\n\nexport class HomeController {\n\tasync index(_ctx: Context): Promise<Response> {\n\t\treturn view(\"home\", {\n\t\t\tpreset: \"web\",\n\t\t});\n\t}\n}\n```\n\nRoutes are usually declared in `start/routes.ts` and point to controllers.\n\n```ts\nimport { Router } from \"kura/http\";\nimport { HomeController } from \"#controllers/home_controller\";\n\nexport const router = new Router();\n\nconst homeController = new HomeController();\n\nrouter.get(\"/\", (ctx) => homeController.index(ctx)).as(\"home\");\nrouter.get(\"/health\", () => Response.json({ status: \"up\" })).as(\"health\");\n```\n\nKura keeps the root import stable for compatibility and recommends domain\nentrypoints for smaller, clearer imports.\n\n```ts\nimport { Router } from \"kura/http\";\nimport { BaseModel, column } from \"kura/database\";\nimport { k } from \"kura/validation\";\nimport { SQLiteQueueDriver } from \"kura/queue/sqlite\";\n```\n\n## Request Context\n\nRoute handlers receive a typed context. `ctx.request` stays the native\n`Request`, and Kura adds small helpers for the data apps read most often.\n\n```ts\nrouter.get(\"/users/:id\", (ctx) => {\n\tctx.setState(\"startedAt\", Date.now());\n\n\treturn Response.json({\n\t\tid: ctx.param(\"id\"),\n\t\ttab: ctx.query(\"tab\", \"overview\"),\n\t\ttags: ctx.queries(\"tag\"),\n\t\ttenant: ctx.header(\"x-tenant\"),\n\t\tsession: ctx.cookie(\"session\"),\n\t\tstartedAt: ctx.getState<number>(\"startedAt\"),\n\t});\n});\n```\n\n- `ctx.param()` returns all route params, and `ctx.param(\"id\")` returns\n  `string | null`.\n- `ctx.query()` preserves repeated query values as arrays, while\n  `ctx.query(\"page\")` returns the first value.\n- `ctx.queries(\"tag\")` always returns `string[]`.\n- `ctx.header()` and `ctx.cookie()` read request headers and cookies with\n  predictable `null` or default-value fallbacks.\n- `ctx.bodyValue()`, `ctx.validatedData()`, `ctx.validatedParams()`,\n  `ctx.validatedQuery()`, and `ctx.validatedBody()` expose parsed and validated\n  request input when middleware or route schemas populate it.\n- `ctx.setState()` and `ctx.getState()` store request-local values without\n  touching globals.\n\nAPI and full-stack starters expose OpenAPI docs from the route table.\n\n```ts\nimport { Router } from \"kura/http\";\nimport { registerOpenApiRoutes } from \"kura/openapi\";\nimport { k } from \"kura/validation\";\n\nexport const router = new Router();\n\nconst userResponse = k.object({\n\tid: k.number(),\n\temail: k.string().email(),\n});\n\nrouter.get(\"/users/:id\", (ctx) => Response.json({ id: ctx.params?.id })).openapi({\n\ttags: [\"Users\"],\n\tsummary: \"Get a user\",\n\tresponses: {\n\t\t200: userResponse,\n\t},\n});\n\nregisterOpenApiRoutes(router, {\n\ttitle: \"My API\",\n\tversion: \"1.0.0\",\n\tspecVersion: \"3.1.2\",\n\tui: \"scalar\",\n});\n```\n\nThe generated app serves `/openapi.json` and `/docs`. Set `ui: \"swagger\"` when\nyou prefer Swagger UI. Kura defaults to OpenAPI `3.1.2`; use\n`specVersion: \"3.2.0\"` when you need the latest OpenAPI spec.\n\nGenerate a typed API client from the same route table when frontend or server\ncode needs to call your API without duplicating endpoint types.\n\n```sh\nbun kura client:generate\n```\n\nThe command writes `app/client/api_client.ts` by default. It infers params,\nquery, headers, bodies, and success responses from route schemas.\n\n```ts\nimport { createApi } from \"./app/client/api_client\";\n\nconst api = createApi({ baseUrl: \"http://localhost:3333\" });\nconst user = await api.usersShow({\n\tparams: { id: \"1\" },\n});\n```\n\nNon-2xx responses throw `ApiClientError` with the original `Response`, status,\nand parsed JSON/text payload. Multipart route bodies generated from `k.file()`\nor `k.files()` are sent as `FormData`.\n\nRoute schemas also validate requests before handlers run. Invalid input returns\nthe standard `422` JSON error response, and handlers can read parsed values from\nthe validated helpers.\n\n```ts\nconst createUserRequest = k.object({\n\temail: k.string().email(),\n\tpassword: k.string().min(8),\n});\n\nrouter.post(\"/users\", (ctx) => {\n\tconst input = ctx.validatedBody<{ email: string; password: string }>();\n\n\treturn Response.json({ email: input?.email });\n}).schema({\n\tbody: createUserRequest,\n});\n```\n\n## File Uploads\n\nMultipart requests use the same route schema flow as JSON requests. Declare file\nfields with `k.file()` or repeated file fields with `k.files()`, then read the\nwrapped upload from the context when you need metadata or storage helpers.\n\n```ts\nimport { Router } from \"kura/http\";\nimport { k } from \"kura/validation\";\n\nconst uploadRequest = k.object({\n\tavatar: k.file().maxSize(2_000_000).mimeTypes([\"image/png\"]),\n\tgallery: k.files(k.file().extensions([\"jpg\", \"png\"])).min(1),\n});\n\nrouter.post(\"/profile/avatar\", async (ctx) => {\n\tconst input = ctx.validatedBody<{ avatar: File; gallery: File[] }>();\n\tconst avatar = await ctx.file(\"avatar\");\n\n\tif (!input || !avatar) {\n\t\treturn Response.json({ error: \"missing upload\" }, { status: 400 });\n\t}\n\n\tawait avatar.moveTo(\"storage/app/avatars\", {\n\t\tname: avatar.clientName,\n\t});\n\n\treturn Response.json({\n\t\tfile: avatar.clientName,\n\t\tgallery: input.gallery.length,\n\t});\n}).schema({\n\tbody: uploadRequest,\n});\n```\n\nOpenAPI docs automatically use `multipart/form-data` when the request body\nschema contains file fields. The current parser is Bun-native and uses\n`Bun.readableStreamToFormData`, so multipart bodies are processed in memory.\nUse `BodyLimit` and file validation for public endpoints; streaming multipart\ndrivers can be added later without changing the public route schema API.\n\n## Response Helpers\n\nRoute handlers can always return a native `Response`. For common JSON responses,\nKura also exposes `KuraResponse`.\n\n```ts\nimport { KuraResponse } from \"kura/http\";\n\nrouter.post(\"/users\", async () => {\n\treturn KuraResponse.created({ id: 1 });\n});\n\nrouter.get(\"/me\", () => {\n\treturn KuraResponse.unauthenticated();\n});\n```\n\nFramework-generated JSON errors use a stable shape.\n\n```json\n{\n\t\"error\": {\n\t\t\"code\": \"E_UNAUTHENTICATED\",\n\t\t\"message\": \"Unauthenticated\",\n\t\t\"status\": 401\n\t}\n}\n```\n\nHelpers also cover `noContent()`, `redirect()`, `download()`, `validation()`,\nand `problem()` for `application/problem+json` responses.\n\nExpected HTTP failures can be raised with first-party exceptions and rendered by\nthe same pipeline used by `Server`, `kura serve`, and the test client.\n\n```ts\nimport { NotFoundException } from \"kura/http\";\n\nrouter.get(\"/users/:id\", () => {\n\tthrow new NotFoundException(\"User not found\", {\n\t\tdetails: { resource: \"users\" },\n\t});\n});\n```\n\nUse `createHttpErrorHandler()` when an app needs a custom renderer while keeping\nKura's normalization for status codes and framework exceptions.\n\n### Protected cookies\n\nPlain cookie parsing and serialization remain the low-level default. Use signed\nvalues for tamper protection and encrypted values when the browser must not see\nthe plaintext. Pass `APP_KEY` explicitly; the first key is used for writes and\nthe remaining keys allow rotation while reading existing cookies.\n\n```ts\nimport {\n\treadEncryptedCookie,\n\tserializeEncryptedCookie,\n} from \"kura/http\";\n\nconst protection = {\n\tkeys: [env.required(\"APP_KEY\"), ...previousAppKeys],\n\tpurpose: \"preferences\",\n};\n\nconst header = await serializeEncryptedCookie(\n\t\"preferences\",\n\tJSON.stringify({ theme: \"dark\" }),\n\tprotection,\n\t{ httpOnly: true, sameSite: \"lax\", secure: true },\n);\nconst value = await readEncryptedCookie(\n\trequest.headers.get(\"cookie\"),\n\t\"preferences\",\n\tprotection,\n);\n```\n\nProtection keys must contain at least 32 bytes. Changing `purpose` intentionally\ninvalidates values created for another cookie or application concern.\n\n### Distributed rate limits\n\n`MemoryRateLimitStore` is process-local. Multi-instance deployments can use\n`RedisRateLimitStore`, whose client contract executes the fixed-window update as\none atomic Redis script. Redis failures throw by default; applications must opt\nexplicitly into `failureMode: \"allow\"` or `failureMode: \"deny\"` when that tradeoff\nis appropriate.\n\nThe store accepts Bun's native Redis client directly:\n\n```ts\nimport { redis } from \"bun\";\nimport { RateLimit, RedisRateLimitStore } from \"kura/http\";\n\nconst rateLimit = RateLimit({\n\tlimit: 120,\n\tstore: new RedisRateLimitStore({ client: redis }),\n\twindowMs: 60_000,\n});\n```\n\nGenerated applications can set `RATE_LIMIT_STORE=redis`; Bun then reads the\nconnection from `REDIS_URL`. The default remains the process-local memory store.\n\nServer-backed sessions continue to store only an opaque random session ID in\n`SessionCookie`; protected-cookie helpers are intended for values whose integrity\nor confidentiality must be enforced directly in the browser.\n\n### MySQL database driver\n\nGenerated applications can select `--database=mysql` and connect through Bun's\nnative SQL client without installing another database package. Configure a MySQL\nURL and run migrations normally:\n\n```env\nDB_CONNECTION=mysql\nDATABASE_URL=mysql://kura:secret@127.0.0.1:3306/kura\n```\n\n```sh\nbun kura migration:run\n```\n\nThe repository integration smoke can be run against an isolated database:\n\n```sh\nMYSQL_SMOKE_URL=mysql://kura:secret@127.0.0.1:3306/kura_test \\\n  bun run scripts/smoke-mysql.ts\n```\n\nBoth `mysql://` and `mysql2://` URLs are accepted. Query-builder identifiers,\nmigration auto-increment columns, transactions, affected-row counts, and model\ninsert IDs are adapted to MySQL semantics. MySQL does not support `RETURNING`;\ninserted models use Bun SQL's `lastInsertRowid`, while explicit mutation\n`returning()` calls produce no returned rows. Configure the Bun SQL pool and TLS\noptions explicitly for production deployments.\n\nFor web apps, views live in `resources/views` and use the `.kura.html`\nextension.\n\n```html\n<h1>Kura</h1>\n<p>{{ preset }} app</p>\n```\n\nFull-stack apps use Bun's native HTML routes for the browser entrypoint. The\ngenerated `resources/pages/home.html` imports TypeScript and CSS directly, and\nKura continues to handle the API, middleware, controllers, and validation.\n\n```ts\nimport home from \"../resources/pages/home.html\";\nimport { type BunStaticRouteMap } from \"kura/http\";\n\nexport const staticRoutes = {\n\t\"/\": home,\n} satisfies BunStaticRouteMap;\n```\n\n## Generated Structure\n\nA new application uses the `standard` structure by default.\n\n```txt\napp/\n  controllers/\nbin/\n  console.ts\n  server.ts\n  test.ts\nconfig/\nstart/\n  env.ts\n  kernel.ts\n  routes.ts\nkura.config.ts\npackage.json\ntsconfig.json\n```\n\n- `app/` contains application code.\n- `bin/` contains executable entrypoints for the console, server, and tests.\n- `config/` contains typed configuration files.\n- `start/` contains boot files loaded during application startup.\n- `kura.config.ts` is the application manifest used by Kura tooling.\n- `database/` is added when database or auth features need schema files.\n\nFor larger applications, choose the feature-based `modular` structure.\n\n```sh\nbun create kura-app my-app -- --architecture=modular\n```\n\n```txt\napp/\n  modules/\n    api/\n      api_controller.ts\n    auth/\n      auth_controller.ts\n      user.ts\n    web/\n      home_controller.ts\nconfig/\nresources/\nstart/\n```\n\nFor domain-heavy applications, choose the clean `domain` structure.\n\n```sh\nbun create kura-app my-app -- --architecture=domain\n```\n\n```txt\napp/\n  domains/\n    auth/\n      domain/\n        user.ts\n        user_repository.ts\n      application/\n        register_user.ts\n      infrastructure/\n        persistence/\n          user_record.ts\n          sql_user_repository.ts\n      http/\n        auth_controller.ts\nconfig/\ndatabase/\nstart/\n```\n\nIn the `domain` structure, domain entities stay framework-free. Database models\nand other adapters live under `infrastructure/`.\n\n## Console Commands\n\nGenerated applications expose a local Kura console.\n\n```sh\nbun kura\nbun kura routes\nbun kura doctor\nbun kura env\nbun kura config app.starter\nbun kura make:controller Home\nbun kura serve --watch\n```\n\nIf the framework is installed globally, the `kura` binary delegates to the\napplication console when it is run inside a generated project.\n\n```sh\nbun install -g @akuseru_w/kura\nkura serve\nkura routes\n```\n\nCommon package scripts are also generated.\n\n```sh\nbun run dev\nbun run build\nbun run typecheck\nbun run test\n```\n\n## Framework Primitives\n\nKura currently includes:\n\n- Application lifecycle and service container\n- Configuration and environment loading\n- HTTP server, router, middleware pipeline, and controllers\n- Standard JSON response helpers and framework error responses\n- OpenAPI generation with Scalar or Swagger UI docs\n- `.kura.html` view rendering with escaped interpolation\n- Bun fullstack HTML route support for generated browser entrypoints\n- Body parsing, CORS, request IDs, request logging, and metrics helpers\n- Schema validation with type inference\n- Console kernel and generator commands\n- Cache manager with memory, file, and Redis drivers\n- Queue manager with memory driver and explicit SQLite or Redis driver\n  entrypoints\n- Auth guards, access token guard, session guard, JWT guard, and policy helpers\n- Database manager, query builder, migrations, models, factories, and seeders\n- Test client and framework fakes\n\n## Example Validation\n\n```ts\nimport { k } from \"kura/validation\";\n\nconst createUser = k.object({\n\temail: k.string().email(),\n\tname: k.string().min(2),\n\tbirthdate: k.date(),\n});\n\nconst payload = createUser.parse({\n\temail: \"ada@example.com\",\n\tname: \"Ada\",\n\tbirthdate: \"1815-12-10\",\n});\n```\n\n## Example Test\n\n```ts\nimport { describe, expect, test } from \"bun:test\";\nimport { createTestClient } from \"kura/testing\";\nimport { router } from \"#start/routes\";\n\ndescribe(\"home\", () => {\n\ttest(\"returns the home payload\", async () => {\n\t\tconst client = createTestClient(router);\n\t\tconst response = await client.get(\"/\");\n\n\t\texpect(response.status).toBe(200);\n\t});\n});\n```\n\n## Working On Kura\n\nClone the repository and install dependencies.\n\n```sh\nbun install\n```\n\nBuild, test, and check the framework.\n\n```sh\nbun run build\nbun test\nbun run typecheck\nbun run lint\n```\n\n## Release\n\nThe npm packages are published by GitHub Actions when a semver tag is pushed.\n\n```sh\ngit tag v0.1.7\ngit push origin v0.1.7\n```\n\nBefore tagging, make sure `package.json`,\n`packages/create-kura-app/package.json`, and the `@akuseru_w/kura` dependency\nrange inside `create-kura-app` all use the same version. The release workflow\nchecks this before publishing.\n\nPublishing uses npm trusted publishing, so both npm packages must allow the\n`publish.yml` GitHub Actions workflow as a trusted publisher:\n\n- `@akuseru_w/kura`\n- `create-kura-app`\n\n## Project Status\n\nKura is early-stage. The public API is taking shape around the generated\napplication structure, the local `kura` import alias, and the Bun runtime.\nExpect fast iteration before a stable 1.0 release.\n","readmeFilename":"README.md"}