{"_id":"@iamsuperdev/typeful","_rev":"63-e0f3f1d77d25c5872567288a9696bfe5","name":"@iamsuperdev/typeful","dist-tags":{"latest":"1.2.1"},"versions":{"1.1.16":{"name":"@iamsuperdev/typeful","version":"1.1.16","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.16","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"183422bacc19031b55dbabcde380301d29d9e422","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.16.tgz","fileCount":17,"integrity":"sha512-orPTjl1z2G166fd7vV6bv5ZIC6upJ70jUTfuEQ+Yup3eDZQWn+Uu4HT79MJ9dXA4ana44nMNDjhEJIerRav4HQ==","signatures":[{"sig":"MEUCIQDTDKnlj8wXhTmPG3aCvHyKfd6IK2QJQ1qabxThnAHT8gIgB/k25JF7AzSC0BJHGLmCP+JX371cLKAero2pKWmE+KY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24070},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"dde6740a79155c2e3668897196663ec44ea9b766","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","build:core":"tsc && npm run uglify && rm -rf dist/core && rm -rf src/core && mv dist/private dist/core && cp -r dist/core src/core","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.9.2","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.16_1754684427470_0.5009163332726614","host":"s3://npm-registry-packages-npm-production"}},"1.1.17":{"name":"@iamsuperdev/typeful","version":"1.1.17","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.17","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"05997e5654b859674521169b4f9907708fde4219","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.17.tgz","fileCount":17,"integrity":"sha512-bwCgNUQISSSNBjXwlATiDquP13wGw00kwie4+jH4pUZj7sBzAsrQImz+Y2pNCgovC4+0XN2C/ziVw4JcH49W5g==","signatures":[{"sig":"MEUCIQDV/4TeySinhyV2Q4jGVmDtS00BObt7Rt3hACRVNlbzpwIgPhROXrnD9TT4IJ2FG3UIeSQ0dIkNC9ENFdWehCDDRhk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24088},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"89c29796d61e274c428ca74bebccf865f64f9b47","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","build:core":"tsc && npm run uglify && rm -rf dist/core && rm -rf src/core && mv dist/private dist/core && cp -r dist/core src/core","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.9.2","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.17_1758577708437_0.9603877131147485","host":"s3://npm-registry-packages-npm-production"}},"1.1.18":{"name":"@iamsuperdev/typeful","version":"1.1.18","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.18","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"a295946f9664833adb6367549839da4b2aab6e65","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.18.tgz","fileCount":17,"integrity":"sha512-EKQklhPF64YuWSYS71wCUOh35TDKbRBQEAhzzvzzL2e683yesBvufQNMr10u3O0kYRZRskKrQ9bS0vy6vBvemw==","signatures":[{"sig":"MEUCIASs8tgunXREU906lYCbt0p7OH8fQgskUWNk/eUAdoC3AiEA6LxreBcY9YqEPQ3jkH6FqdqiKHK/gZcjiOtiBkqPMqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24165},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"34923627ed6303105abc9d665034d22091d64fe1","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","build:core":"tsc && npm run uglify && rm -rf dist/core && rm -rf src/core && mv dist/private dist/core && cp -r dist/core src/core","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.9.2","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.18_1758660164900_0.5356694058307527","host":"s3://npm-registry-packages-npm-production"}},"1.1.19":{"name":"@iamsuperdev/typeful","version":"1.1.19","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.19","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"6f6703684c68cf83be5aa4f8285155804c34bd06","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.19.tgz","fileCount":17,"integrity":"sha512-e9Udu59VmCzZ7+KlMoWk+X2ykPjTfF9kDezzc1ZKhn1BBI/15BwGktl5UOC8MTsiBqgf0kMgTYYNi4eheaXP3w==","signatures":[{"sig":"MEQCIBakJTBeJZ2faPEpqTyQMP8adWGsHys28+weGw5P90d/AiBv4LdfpHjDJJxRjyGKafYtzoQvKlaN+6cwmWos5rPFlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24420},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"1589edad30d9ff32fba594613f37fa79268275aa","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","build:core":"tsc && npm run uglify && rm -rf dist/core && rm -rf src/core && mv dist/private dist/core && cp -r dist/core src/core","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.9.2","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.19_1758660858617_0.6742761234477941","host":"s3://npm-registry-packages-npm-production"}},"1.1.20":{"name":"@iamsuperdev/typeful","version":"1.1.20","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.20","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"42e5c2d4d1545100b4313a6e77acd5c26f3eecd9","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.20.tgz","fileCount":17,"integrity":"sha512-1s2sgeb00S7M/194yFPSXybf25VfltvcCrZLb0ScXeDuo2w8voWL+tFPhk1pbeIUtcAcurjqAhCrEnf2kO7N2A==","signatures":[{"sig":"MEUCIQDMlqytQBYVopdzpjS9IKDST/GQiE0NTHLJTvdnVFjTbgIgFhk5uW6Zupbw8JD776me7Zzs3GudR5twYjEhrrwIWXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24449},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"0f5c99de42f97d095447a4bae8946f52f29eb83e","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","build:core":"tsc && npm run uglify && rm -rf dist/core && rm -rf src/core && mv dist/private dist/core && cp -r dist/core src/core","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.9.2","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.20_1758666146927_0.5391489390410311","host":"s3://npm-registry-packages-npm-production"}},"1.1.21":{"name":"@iamsuperdev/typeful","version":"1.1.21","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.21","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"75440e1b183b744955bf5e11aab5632bba18c8bd","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.21.tgz","fileCount":17,"integrity":"sha512-+WpQJIl4QUYciHx2FoNXb4BMy6Y1Cp8JQiUUiKOmRmuyBbt108qq3ckeCtrTu2lN5V9ymR1MtmSAJjPbL1/6og==","signatures":[{"sig":"MEUCIQCS3y0vS2vvIfjwMaUwfi6JLKAgd9FCydYyXKfI3vTWaQIgM3G1itu5LyTEH/iE+ptEpviBM0G38RdJAbigDP9BdtQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24449},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"b218e1135e19cd36594c425d9595ce338baf11b7","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","build:core":"tsc && npm run uglify && rm -rf dist/core && rm -rf src/core && mv dist/private dist/core && cp -r dist/core src/core","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.9.2","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.21_1758666602741_0.9975181396509365","host":"s3://npm-registry-packages-npm-production"}},"1.1.22":{"name":"@iamsuperdev/typeful","version":"1.1.22","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.22","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"a52c48031f2015cb93dd2007d310529aa2f393c5","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.22.tgz","fileCount":17,"integrity":"sha512-m7JYTI0Z0sY8xeaiu3QLRyv8xWte+dfxTqFd8DaDUI4nmpsqBxa/Ag+pi2d7GVT/WnFIKSAZlDUubUdwzw3Ycw==","signatures":[{"sig":"MEQCIGQ91SkurOO6S6AI6Bu8aXpyRFIVxfj5m7zapsHge3BqAiBwvZK9g7x6xwdIlr8vc6YJ79zE18Vuo3xNtjQvuYezfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24434},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"b218e1135e19cd36594c425d9595ce338baf11b7","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","build:core":"tsc && npm run uglify && rm -rf dist/core && rm -rf src/core && mv dist/private dist/core && cp -r dist/core src/core","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.9.2","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.22_1758666875955_0.7565048723149377","host":"s3://npm-registry-packages-npm-production"}},"1.1.23":{"name":"@iamsuperdev/typeful","version":"1.1.23","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.23","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"d5dc8b8051d7c80e5333cc393e70dc1b2fb54ab8","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.23.tgz","fileCount":17,"integrity":"sha512-KEcoUBqiLwgyWMM+n3FSldQ/80EkK0aRuhge3p3xOBMlY3LWdphfuJPjPb6gYHvmvMWGIHbshpeBcHymIH3syw==","signatures":[{"sig":"MEQCICuRbB7I7h9GcL/JAbUEftUshxWMZFuiNoeNJTLz5OLLAiAb7RW+Ac8F5IjEqD9fyz6/TdK6QfXfd6lZ8vy4D5gbYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24440},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"8d7415653d93d67c179c7513bcd16ff5174cfca4","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","build:core":"tsc && npm run uglify && rm -rf dist/core && rm -rf src/core && mv dist/private dist/core && cp -r dist/core src/core","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.7.0","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"20.15.1","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.23_1760187520763_0.20827004669017923","host":"s3://npm-registry-packages-npm-production"}},"1.1.24":{"name":"@iamsuperdev/typeful","version":"1.1.24","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.24","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"1c464b5f2dd6bdd180eb7c45becd4cc0b852316a","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.24.tgz","fileCount":17,"integrity":"sha512-Wr+v5q5ShWzzWFXTUnXM31PkRksQprhOgIImAWe+ckl6S3KYZsVe4cZBIgx4tZJ2R1iK/bfb9Y+HEb2G6m8r9Q==","signatures":[{"sig":"MEUCIG7rBAaZHIYNIzqmcsdBLll6BDR0xvwCU52wea+YGvM9AiEAwyI+y9OZOHbEzRTtJN2pnBbitg//MdzpyXLZiRvjIaU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24441},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"8d7415653d93d67c179c7513bcd16ff5174cfca4","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","build:core":"tsc && npm run uglify && rm -rf dist/core && rm -rf src/core && mv dist/private dist/core && cp -r dist/core src/core","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.7.0","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"20.15.1","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.24_1760188695284_0.5418124768503754","host":"s3://npm-registry-packages-npm-production"}},"1.1.25":{"name":"@iamsuperdev/typeful","version":"1.1.25","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.25","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"9cefdd1b2a9d648af53288fa38687ce50ee00014","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.25.tgz","fileCount":19,"integrity":"sha512-KQl+i2UYToaznL0kJfDuqIU3SzrPK31eoZ9se0cc4vQ1nOzlgQ4HeF0DgQgX3QMzlF055VluM724Ss4F0Ju5MQ==","signatures":[{"sig":"MEUCIQCiSzmSy0GSgYbNiWbOjGKHvpYl+N0JBitjVjU59dzUfAIgeye24/Cn1dyDrXWtQucQA/gLj2PHxxtJzOznMpjOMZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35472},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"6b17b5b82186a21b2d2b9cbfe8252e27a35b67ee","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.js","lint:fix":"eslint . --fix","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.7.0","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"20.15.1","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.25_1760298484014_0.2990391460971771","host":"s3://npm-registry-packages-npm-production"}},"1.1.26":{"name":"@iamsuperdev/typeful","version":"1.1.26","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.26","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"9f0b5a8d511e23f781967b548ee2ca1e8422cdf1","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.26.tgz","fileCount":19,"integrity":"sha512-ElIcC6mOSN/h/y9ZuJEvmBOZa6uUYSLt97uBnWpM19ZoC18Tw4DZB26D+GQ4EwaQ/zkuk1bx5uRUT1vEE4ZB7Q==","signatures":[{"sig":"MEQCIGHj4nZYIc/4t5jAr/A6vDIjhja/04EjVQlLMKTe6RJeAiALKOXDHXhI0I5UcPD8+bp9oszV0gSW+4aHFfms/WNDAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35502},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"39f9a728608ff7058ca40f5a459ad4d25a25c230","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.ts","lint:fix":"eslint . --fix","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.7.0","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"20.15.1","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/jest":"^30.0.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.26_1760301150352_0.8682450705098776","host":"s3://npm-registry-packages-npm-production"}},"1.1.27":{"name":"@iamsuperdev/typeful","version":"1.1.27","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"license":"MIT","_id":"@iamsuperdev/typeful@1.1.27","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"homepage":"https://github.com/drunkify/typeful#readme","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"bin":{"generate":"dist/run-generate.js"},"dist":{"shasum":"f1c887e24913af4d4bcd3de400d9c90b2cd07440","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.1.27.tgz","fileCount":19,"integrity":"sha512-RlPrORQLV2Qm+LAbj4FRrCIbnfhD3BFE2KNmKQmQD364zaI7P/XUI48QprJiI5guXfX+vtkjifirpR+WSJnYwg==","signatures":[{"sig":"MEUCIA1PMCBVe4m5/w3EKamzFJGOCD4U68X0dB+5fOlh3sfyAiEAqe7Sok79Rx5y53v+ck+7i2cBx62fMprsaUHL7bq91Qg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36434},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"39f9a728608ff7058ca40f5a459ad4d25a25c230","scripts":{"lint":"eslint .","build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","format":"prettier --write .","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","generate":"bun src/run-generate.ts","lint:fix":"eslint . --fix","format:check":"prettier --check ."},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"repository":{"url":"git+https://github.com/drunkify/typeful.git","type":"git"},"_npmVersion":"10.7.0","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","directories":{},"_nodeVersion":"20.15.1","dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3","@eslint/js":"^9.17.0","@types/jest":"^30.0.0","@types/node":"^24.2.0","@types/lodash":"^4.17.16","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"peerDependencies":{"typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/typeful_1.1.27_1760301329416_0.9280865187714191","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@iamsuperdev/typeful","description":"Full-stack type safety ORM for PostgreSQL with TypeScript","repository":{"type":"git","url":"git+https://github.com/drunkify/typeful.git"},"version":"1.2.1","license":"MIT","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"type":"module","main":"dist/index.js","bin":{"generate":"dist/run-generate.js"},"scripts":{"build":"tsc && npm run uglify && cp -r src/core dist && rm -rf dist/private","uglify":"find dist -name '*.js' -type f -exec npx uglifyjs {} -o {} -c -m \\;","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","generate":"bun src/run-generate.ts"},"devDependencies":{"@eslint/js":"^9.17.0","@types/jest":"^30.0.0","@types/lodash":"^4.17.16","@types/node":"^24.2.0","@typescript-eslint/eslint-plugin":"^8.20.0","@typescript-eslint/parser":"^8.20.0","eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","uglify-js":"^3.19.3"},"peerDependencies":{"typescript":"^5.8.2"},"dependencies":{"dotenv":"^17.2.1","lodash":"^4.17.21","postgres":"^3.4.5"},"types":"./dist/index.d.ts","_id":"@iamsuperdev/typeful@1.2.1","gitHead":"39f9a728608ff7058ca40f5a459ad4d25a25c230","bugs":{"url":"https://github.com/drunkify/typeful/issues"},"homepage":"https://github.com/drunkify/typeful#readme","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"integrity":"sha512-y7JqDAL1356wgw0y8lAHmYjJevuv8UZp74sUJf+UcKo9Ba1MA4HjHYbSj4KpjYBcHRrCDTQ1FsEGogEvMxbKwA==","shasum":"a0ea773caf3f8520cf0775b7d7e089040ca92205","tarball":"https://registry.npmjs.org/@iamsuperdev/typeful/-/typeful-1.2.1.tgz","fileCount":19,"unpackedSize":39746,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDGyoLtbWxKFjiBTfbGzfOQGlowVbOd676hVVBmOp935QIgCGKN3inMRoif/XY4jpF4dZ0HCOEd0noQPXqqhI/H5Io="}]},"_npmUser":{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"},"directories":{},"maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/typeful_1.2.1_1760352187076_0.5785629870766213"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-06T16:24:55.638Z","modified":"2025-10-13T10:43:07.448Z","1.0.0":"2025-08-06T16:24:55.974Z","1.0.1":"2025-08-06T16:57:23.366Z","1.0.2":"2025-08-06T17:01:46.818Z","1.0.3":"2025-08-06T17:31:27.745Z","1.0.4":"2025-08-06T17:41:38.679Z","1.0.5":"2025-08-06T17:44:18.035Z","1.0.6":"2025-08-06T17:54:25.654Z","1.0.7":"2025-08-06T18:01:04.254Z","1.0.8":"2025-08-06T18:31:58.977Z","1.1.0":"2025-08-07T22:06:08.766Z","1.1.1":"2025-08-07T22:38:59.430Z","1.1.2":"2025-08-07T22:42:19.069Z","1.1.3":"2025-08-07T22:53:27.306Z","1.1.4":"2025-08-07T22:59:51.886Z","1.1.5":"2025-08-08T08:51:27.549Z","1.1.6":"2025-08-08T09:25:34.850Z","1.1.7":"2025-08-08T10:57:46.920Z","1.1.8":"2025-08-08T11:54:16.819Z","1.1.9":"2025-08-08T13:31:55.927Z","1.1.10":"2025-08-08T13:35:46.014Z","1.1.11":"2025-08-08T13:49:06.489Z","1.1.12":"2025-08-08T13:53:56.177Z","1.1.13":"2025-08-08T14:04:04.106Z","1.1.14":"2025-08-08T14:05:00.675Z","1.1.15":"2025-08-08T20:17:04.313Z","1.1.16":"2025-08-08T20:20:27.638Z","1.1.17":"2025-09-22T21:48:28.613Z","1.1.18":"2025-09-23T20:42:45.099Z","1.1.19":"2025-09-23T20:54:18.864Z","1.1.20":"2025-09-23T22:22:27.114Z","1.1.21":"2025-09-23T22:30:02.972Z","1.1.22":"2025-09-23T22:34:36.150Z","1.1.23":"2025-10-11T12:58:40.952Z","1.1.24":"2025-10-11T13:18:15.486Z","1.1.25":"2025-10-12T19:48:04.188Z","1.1.26":"2025-10-12T20:32:30.519Z","1.1.27":"2025-10-12T20:35:29.616Z","1.2.1":"2025-10-13T10:43:07.254Z"},"bugs":{"url":"https://github.com/drunkify/typeful/issues"},"license":"MIT","homepage":"https://github.com/drunkify/typeful#readme","keywords":["typescript","orm","postgresql","postgres","database","type-safety","typesafe","sql","query-builder","full-stack","backend","node","schema","migration","type-checking"],"repository":{"type":"git","url":"git+https://github.com/drunkify/typeful.git"},"description":"Full-stack type safety ORM for PostgreSQL with TypeScript","maintainers":[{"name":"iamsuperdev","email":"whoissuperdev@gmail.com"}],"readme":"<img width=\"572\" height=\"143\" alt=\"logo\" src=\"https://github.com/user-attachments/assets/5943e26a-6387-4ca5-a313-4776425c3cba\" />\n\n# Full-stack type safety ORM\n\n## Why?\n\nThe idea is to create a robust solution that helps maintain consistency from the database level to the frontend application. Tiny changes in the database structure will affect the whole application. **Say goodbye to \"any\".**\n\n## Core Benefits\n\n**End-to-End Type Safety**\n\n- Database schema drives all types\n- Compile-time error detection for database changes\n- No runtime surprises from schema mismatches\n\n**Developer Experience**\n\n- Full IDE autocompletion for all queries and responses\n- Auto-generated types from database schema\n- Instant feedback on breaking changes\n\n**Simplified Architecture**\n\n- Just one API endpoint needed\n- Reduced boilerplate code\n- No duplicate type definitions\n\n## How?\n\n**There are two steps:**\n\n- Generate types\n- Reuse types on the backend and frontend with special type utilities and tools, which are **all provided by this library**\n\n## Usage\n\nReady to use template https://github.com/drunkify/typeful-monorepo-template\n\nLet's say we have the following monorepo folder structure:\n\n```\n├── apps/\n│   ├── api/          # Backend API service with typeful ORM\n│   └── client/       # React frontend application\n├── packages/\n│   └── ui/           # Common ui library\n└── package.json      # Root package configuration\n```\n\nAdd `DATABASE_URL` to the `.env` file (only PostgreSQL is available at this moment).\nIt assumes the database has an existing data structure and schema.\n\nGenerate types:\n\n```bash\nnpx @iamsuperdev/typeful packages\n```\n\nThen in the packages folder, a new folder named \"generated\" will appear.\n\nUpdated folder structure:\n\n```\n├── apps/\n│   ├── api/          \n│   └── client/      \n├── packages/\n│   └── generated/    # Auto-generated types and shared definitions\n│   └── ui/           \n└── package.json   \n```\n\nAdd packages.json to the generated folder.\n```json\n{\n  \"name\": \"@repo/generated\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"main\": \"./index.js\",\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./index.d.ts\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n\n```\nInstall the **typeful** and create a **single endpoint** on the backend:\n\n```bash\npnpm i -D @iamsuperdev/typeful\n```\n\n```js\nimport { performQuery, type TablesObject } from '@iamsuperdev/typeful'\nimport { Elysia } from 'elysia'\nimport { cors } from '@elysiajs/cors'\n\nnew Elysia().use(cors()).post('/api', async ({ body }) => {\n    const payload = body as { query: TablesObject }\n    const data = await performQuery(payload.query)\n    return data\n}).listen(4000)\n```\n\nThat's it for the backend! 🎉\n\nNow let's install **typeful** on the frontend and create a users service.\n\n```bash\npnpm i -D @iamsuperdev/typeful\n```\n\n```js\nimport type { DTO, QueryInstance } from \"@iamsuperdev/typeful\";\nimport type { Tables } from \"@repo/generated\";\n\nexport function findUserById({ userId }: { userId: number }) {\n  return {\n      tables: {\n          users: {\n              select: ['id', 'email'],\n              where: { id: { eq: userId } },\n              join: {\n                  users_organizations: {\n                      select: ['id', 'organization_id'],\n                      where: { organization_id: { eq: 1 } },\n                      join: {\n                          organizations: {\n                              select: ['id', 'name']\n                          }\n                      }\n                  }\n              }\n          }\n      }\n  } satisfies QueryInstance<Tables>\n}\n\nexport type FindUserByIdDTO = DTO<Tables, typeof findUserById>;\n```\n\nYou'll see that it's not possible to make mistakes, because the query must satisfy the database schema due to generated types and the special `QueryInstance` type.\n\n<img width=\"612\" height=\"171\" alt=\"not_existing_field\" src=\"https://github.com/user-attachments/assets/862b14bb-b977-4b26-903c-528241d635f6\" />\n\nFetch data\n```js\nconst [user, setUser] = useState<FindUserByIdDTO['users'][number] | null>(null)\n\nuseEffect(() => {\n  const query = findUserById({ userId: 1 })\n  fetch('http://localhost:4000/api', {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ query })\n  })\n    .then(response => response.json())\n    .then((data: FindUserByIdDTO) => {\n      setUser(data.users[0])\n    })\n    .catch(error => {\n      console.error('Error fetching user data:', error)\n    })\n}, [])\n```\n\nThanks to the DTO type helper, developers get full autocompletion and static type checking.\n\n<img width=\"1218\" height=\"238\" alt=\"autocompl\" src=\"https://github.com/user-attachments/assets/f01b66ff-5b95-41d4-8773-b53e8c9dd438\" />\n\nThe backend receives the query and converts it to a SQL query like this. You won't need to deal with it — it happens under the hood automatically.\n\n```sql\nWITH users AS (\n    SELECT\n        users.id,\n        users.email\n    FROM users\n    WHERE users.id = 1\n)\nSELECT\n    users.id AS users__id,\n    users.email AS users__email,\n    users_organizations.id AS users_organizations__id,\n    users_organizations.organization_id AS users_organizations__organization_id,\n    organizations.id AS organizations__id,\n    organizations.name AS organizations__name\nFROM users\nLEFT JOIN users_organizations\n    ON users_organizations.user_id = users.id\n    AND users_organizations.organization_id = 1\nLEFT JOIN organizations\n    ON users_organizations.organization_id = organizations.id\nWHERE users.id IN (SELECT id FROM users)\n```\n\nThe backend returns the following JSON with hierarchically organized data.\n\n```json\n{\n  \"users\": [\n    {\n      \"id\": 1,\n      \"email\": \"john.doe@example.com\",\n      \"users_organizations\": [\n        {\n          \"id\": 1,\n          \"organization_id\": 1,\n          \"organizations\": [\n            {\n              \"id\": 1,\n              \"name\": \"Default\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n```\n\n## Caveats\n\nUse naming conventions as shown in the example. Always add \"id\" and foreign key \"id\" columns to the select array.\n\n## Conclusion\n\n<img width=\"320\" height=\"320\" alt=\"hamster\" src=\"https://github.com/user-attachments/assets/923cb6d7-5237-4eda-967d-290e098e118c\" />\n\nAdd the generate script before the TypeScript transpiler, and no one can break the code with type mismatches!\n\n## License\n\nMIT License\n","readmeFilename":"README.md"}