{"_id":"@parcae/backend","_rev":"39-bdda7b1dc2c067ca9eb4fd5548dcd0c2","name":"@parcae/backend","dist-tags":{"latest":"0.8.1"},"versions":{"0.0.1":{"name":"@parcae/backend","version":"0.0.1","license":"MIT","_id":"@parcae/backend@0.0.1","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"5c1bd2616bec93b55b8bd6bc40a6ba5205520630","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.0.1.tgz","fileCount":4,"integrity":"sha512-+5c60NenO8igmEfh012wBkXxQJJGrBCrCkXzb/+NbmieZlNP1WAsfy9vvfn/mGJfaFQCNYW8rYBfwsSWQxJMtQ==","signatures":[{"sig":"MEYCIQC5MnxPze2O1x6dsaApKgkvVFckAVL6E5l1Piyfirm1tgIhALoLPDeeOdUtLRK6dAL8gmGePdF6VFf+IfMtMzZC9bSZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262263},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"df5598e63d0670fe73aee3a3e6176da18608f952","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.13.0","zod":"^3.24.0","knex":"^3.1.0","pako":"^2.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","trouter":"^4.0.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","better-auth":"^1.2.0","body-parser":"^1.20.3","@parcae/model":"^0.0.1","compress-json":"^3.1.0","connect-busboy":"^1.0.0","@rttist/typegen":"^0.2.0","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/pg":"^8.18.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pako":"^2.0.3","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.0.1_1772679586764_0.9665484138642597","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@parcae/backend","version":"0.0.2","license":"MIT","_id":"@parcae/backend@0.0.2","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"5ddef4ec82a1b55c4ede8093c0eec2625f353929","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.0.2.tgz","fileCount":5,"integrity":"sha512-ibQRbgRFp3tu+kQ3APgd8quJEQ0Byr15bEvNwZjEV3GAKlgNduCGc0Ql76KHSV+ImZxyQgQJlekYw503XyyYlQ==","signatures":[{"sig":"MEYCIQCL+ovTmbTA9vZoTmB+9OdV84kFMDmMydpJxT8JXARCQwIhAKzTHQXx7GGoJ1zwCZ4S0DoDCBoJ6sFxSGPBPkMHV3a4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":282976},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"8008ba804a601fca3eaae8bd890e0239db2389a8","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.13.0","zod":"^3.24.0","knex":"^3.1.0","pako":"^2.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","trouter":"^4.0.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","better-auth":"^1.2.0","body-parser":"^1.20.3","@parcae/model":"^0.0.2","compress-json":"^3.1.0","connect-busboy":"^1.0.0","@rttist/typegen":"^0.2.0","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/pg":"^8.18.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pako":"^2.0.3","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.0.2_1772682206861_0.7254996787646735","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@parcae/backend","version":"0.0.3","license":"MIT","_id":"@parcae/backend@0.0.3","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"5781f3f4481b1da57fca15b1306475dbb34f5de5","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.0.3.tgz","fileCount":5,"integrity":"sha512-fWAdDTmcp5z84JrBK/zyBHJeqVL0TrGyxLA3w+NNSzsRKTefPder792nVw19I/Y2gF/N6gpfmxG6bF1bSlSdIw==","signatures":[{"sig":"MEUCIQDcdbtZaOx8YEX06s6Fr3smgbuYwTiIRp6DzBoyrEww8QIgAklXyOzep/c5Hhanrku537M+P80p26Rwz0oQLPJZ3/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291597},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"189bbe512c2c45a1f2d17e73d93226f2f3b795eb","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.13.0","zod":"^3.24.0","knex":"^3.1.0","pako":"^2.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","trouter":"^4.0.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","better-auth":"^1.2.0","body-parser":"^1.20.3","@parcae/model":"^0.0.3","compress-json":"^3.1.0","connect-busboy":"^1.0.0","@rttist/typegen":"^0.2.0","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/pg":"^8.18.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pako":"^2.0.3","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.0.3_1772684958574_0.4063803813617253","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@parcae/backend","version":"0.0.4","license":"MIT","_id":"@parcae/backend@0.0.4","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"205f37810a3087265a11d9fe3ac957f20736cf2e","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.0.4.tgz","fileCount":5,"integrity":"sha512-pmdut4bR1veCSrLG4h4ajSPA9PKt+ZfxAmXyjNxFgwVnvmQuKyDJndKgu0Umm1tZJwe73lyPe7cA8caWjZek3w==","signatures":[{"sig":"MEUCIDa6iVp1NeukKXmwVQU6vAncGVKk3AjXobEsDNFlO6NFAiEA21YYVqBAxgyf9w1lKi1Lm+XutAcqRarnQOXcr9D7YF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291633},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"23c4425e5b185c4d55c9f9a69f61933ff717ba17","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.13.0","zod":"^3.24.0","knex":"^3.1.0","pako":"^2.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","trouter":"^4.0.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","better-auth":"^1.2.0","body-parser":"^1.20.3","@parcae/model":"^0.0.4","compress-json":"^3.1.0","connect-busboy":"^1.0.0","@rttist/typegen":"^0.2.0","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/pg":"^8.18.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pako":"^2.0.3","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.0.4_1772708236593_0.8749940024461567","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@parcae/backend","version":"0.0.5","license":"MIT","_id":"@parcae/backend@0.0.5","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"08e271c22becb1928e193e5b84586dab21522e47","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.0.5.tgz","fileCount":5,"integrity":"sha512-6nDiTZPj5lAws2CnjJbFwkzBSfTYN2qrSUeY9QrLDjXCloQNxFHAMkZ03rtEAxgWC65UglNRSH7VMwss5BNI4A==","signatures":[{"sig":"MEYCIQCSjB57clh46f/DYKJWKMuPxivlw49ZG0DXDZCJFzjKrgIhAOZvTdQCi237yHvCfDfgHKhOAJCYxP0ESlOrhsyBFtA+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291633},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"b4b61012f3d367ec713f0b284a5b1a1385c2e769","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.13.0","zod":"^3.24.0","knex":"^3.1.0","pako":"^2.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","trouter":"^4.0.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","better-auth":"^1.2.0","body-parser":"^1.20.3","@parcae/model":"^0.0.5","compress-json":"^3.1.0","connect-busboy":"^1.0.0","@rttist/typegen":"^0.2.0","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/pg":"^8.18.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pako":"^2.0.3","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.0.5_1772708566051_0.13608216509913262","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@parcae/backend","version":"0.0.6","license":"MIT","_id":"@parcae/backend@0.0.6","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"fd40ca5c8ab80d534fa2fe8543558aa0b387f971","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.0.6.tgz","fileCount":5,"integrity":"sha512-a8E6JkhfCnjEf0L9+ELF2OTP5YIUTCgxENVQ8sLffo4Edpy5isYr0YRQ2fXZP9EYBPNg/2pjD4sXsWpU9JDHkA==","signatures":[{"sig":"MEUCIQD/mqYmRUAp3uNyK+i3N2xURKLyR02k0ryt32slJ3X0nQIgdY7JzbtOdWG/93so8L/eko6U1p/R4zelA+NFrr5IPok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294044},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"e90ce59968521c818a5cafa89c2563de0821d299","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.13.0","zod":"^3.24.0","knex":"^3.1.0","pako":"^2.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","trouter":"^4.0.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","better-auth":"^1.2.0","body-parser":"^1.20.3","@parcae/model":">=0.0.4","compress-json":"^3.1.0","connect-busboy":"^1.0.0","@rttist/typegen":"^0.2.0","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/pg":"^8.18.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pako":"^2.0.3","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.0.6_1772757127016_0.1367570694888356","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@parcae/backend","version":"0.0.7","license":"MIT","_id":"@parcae/backend@0.0.7","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"4244aaaf7fefafdb22b040345e581a7b868b60a0","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.0.7.tgz","fileCount":5,"integrity":"sha512-790ltZYgp4xjUNranckAeeP1SXq8meQO2ZSQtS8LylC9Itz+aVG9lMkFTaC+qczxNVLvNrpPBfJuGnG/Ghi1aw==","signatures":[{"sig":"MEUCIQD5KHQT0siwxGea1lwSL9hEhCp5G2aVlUbxbOhoj0b0FAIgVsVosBTeGsUXRN7I+Sg/WwQF7rujkZX5q4du1StH4TQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":299091},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"0bd3de0504d19a082bc3ca8e47940e6e25e436f9","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.13.0","zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","better-auth":"^1.2.0","body-parser":"^1.20.3","@parcae/model":">=0.0.4","@rttist/typegen":"^0.2.0","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/pg":"^8.18.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.0.7_1772759536340_0.6162062113210987","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@parcae/backend","version":"0.1.0","license":"MIT","_id":"@parcae/backend@0.1.0","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"0d1da01eb1e71338bbdd5e05ba9815f09db080be","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.1.0.tgz","fileCount":5,"integrity":"sha512-F9Q8EwnF3/kQo0cpRu2meGiqwVPkUmSLootNOZlofE5TwJUR+WgIyuJ3D+Z2ENm6HuO7nRURY2DhAldZ9uaWuA==","signatures":[{"sig":"MEQCIChJdrd+/JGfx0ILJGACMF1uIG79wSqg734omrKKdP4lAiBCRGs6wsxwbiFFiIqZYFvBfGjTftYVam3PiWMld0VO4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287673},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"6119b2c9ffed610fc2270f4bdfe1365ea83fb7d1","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","@rttist/typegen":"^0.2.0","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.1.0_1772759991441_0.4327309019295027","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@parcae/backend","version":"0.1.1","license":"MIT","_id":"@parcae/backend@0.1.1","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"8e908ee419cd6b58f16669fc15f1c66037ae3462","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.1.1.tgz","fileCount":4,"integrity":"sha512-KdiiyUQtl6XUi+JhiBGPdMAn7lEkvlt/xS3SQRLlbEISXes0cT0Q3fr6UBjnglE2rupd5NRutbf1IIjeXygXYw==","signatures":[{"sig":"MEUCIHxA4LH8BaSuPC0ftCVlVzFi6eq2U+EZ2r7r6hR2hsriAiEAguWc/TCZM8G3gu4AzDR/26P625+TYLJ9efk0wBaum+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262184},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"7daab0201414edd1f6af3c58289b818de1f68e12","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","@rttist/typegen":"^0.2.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.1.1_1772760498244_0.8324412546814672","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@parcae/backend","version":"0.1.2","license":"MIT","_id":"@parcae/backend@0.1.2","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"ed45ae576683fd1063cdf2716f7fb215090aca1b","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.1.2.tgz","fileCount":5,"integrity":"sha512-nc2/0BkXBviNEQpBjV7q+lHWh+b6fGHQ1onLxSa+Tr9vJXCQ/CrbgSrqG0R0zGDNrCC1YcRkPbT+2zHJ5ShifA==","signatures":[{"sig":"MEUCIGA5bWxdblEhmQ2843m7xYKeHN9o0yj9MTnhmOrHpOv2AiEAlkWRh49eiaPCuy8t9TM+oEt5jcfXTkfZLUV4NhvBsSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":288252},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3a1cc85ae02b89593439a88ed5d3af12d7345c91","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","rttist":"^1.0.0-rc.4","ioredis":"^5.4.0","winston":"^3.17.0","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","@rttist/typegen":"^0.2.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.1.2_1772760744033_0.9115202152220703","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@parcae/backend","version":"0.2.0","license":"MIT","_id":"@parcae/backend@0.2.0","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"27fd22a365a47012c39c58494c75d7ec479d75a5","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.2.0.tgz","fileCount":5,"integrity":"sha512-a/dCDUMq7naRHwEARUVxEmH8gFxiM3ZfgocKkVGYbWuXuAWnBfqul/xVmaamvHwTBSuzLQ4vxaqMHwgty5Mw1w==","signatures":[{"sig":"MEYCIQC564Cgw/m0H8x2b1w3K4pBlCrQGHCCjFMD+PRCBN8eVgIhAKYvjBG7Owq2yo5rT6zsCgmIbQrWnbraajlCqMcT7TO2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279603},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"6ce7719b9042a03cc7a4d76c86acdbf52b343942","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","winston":"^3.17.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.2.0_1772762206119_0.696690202314072","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@parcae/backend","version":"0.2.1","license":"MIT","_id":"@parcae/backend@0.2.1","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"32c67f87b67a77d3b8d7ede7c4911129643d92b4","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.2.1.tgz","fileCount":5,"integrity":"sha512-9Xz9AmB+if6qo8U/ty+9jAy93Fdfp4IucWkUteisVas3g1rkEtMnAya3tjT1mfNt5CDhliorMtGoRNSn3ZE2pw==","signatures":[{"sig":"MEUCIC961KIUP1kk3fFF1v+4jKuvh5ujToQXIqMVHBcG+Km6AiEA+4M1FMR9QUzkOMwCtY9g9UoKYtxt6AsJJmNpIEw7YHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283783},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"35d0dc65d201caaabfdd1b8385600db580da9387","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.2.1_1772763372061_0.1466112027226354","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@parcae/backend","version":"0.2.2","license":"MIT","_id":"@parcae/backend@0.2.2","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"97f34d46d03625b2bd2a00149264a41107c3efef","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.2.2.tgz","fileCount":5,"integrity":"sha512-E2bWtmsvLWznTWI63jOpojAiOM/1WMlSxmxnVNbKeblI0+BdYMel7wDTVWL8PdFda0Dp/WaDfshlbUvVGZXFaw==","signatures":[{"sig":"MEUCIG56n5TkUB76+m/DbiL80D/aYJbEs7mR+coVXUE/ymEfAiEAhewIhcaxj/VWhqgJIULCIemfrM1KbfESDKA2/D1A2KA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283610},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"03aa17102ad082d7c566d9b0f3762f6bf9357033","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.2.2_1772763756512_0.2588690314089128","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@parcae/backend","version":"0.2.3","license":"MIT","_id":"@parcae/backend@0.2.3","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"ed13486f17f20e876d1ee096bb8ac3198c5cf7d9","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.2.3.tgz","fileCount":5,"integrity":"sha512-teN3KvHMzmo0FVtFpvjw7HblYQeUH9tSUVKxJYwBRib+mVblCXtcItyFzG/Th690u6YQ1jmk5pQ+M0AJrRiN1g==","signatures":[{"sig":"MEQCIC7Pkh5Z44Ld+Obq3824m1DnJj6tEkJU4Pbox/xovZepAiBuWc3AbD2/MQNm+TN9pLm+QlEzcQxGH8MzBTlbX/hKgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":284455},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"5fe4c7e1d4b2546654c216b160e169902b6b42de","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.2.3_1772765057599_0.06492150496384896","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@parcae/backend","version":"0.2.4","license":"MIT","_id":"@parcae/backend@0.2.4","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"d6954b9239ee83b5636a548f58006a5503dcf676","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.2.4.tgz","fileCount":5,"integrity":"sha512-rDOOSZzS7UoTrjw8SwXDgJmjPIGefRlmgZPKfJUUdKlZaIogptQsmBDwbzoEwrnzINg7S7PH6McFlEq+FJAz8A==","signatures":[{"sig":"MEQCIAICsioZW7viUKzEi8muz0mS0hNt1kVDGm9RqG3+Zr5zAiBeSNXcPUoN5phCuZJlWaMSDM2amrxGDg/gATA5egaH2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":285096},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"c79e26c211bf8d9c70db3b7038e36143bc2ecddc","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.2.4_1772765460808_0.04823128542882893","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@parcae/backend","version":"0.2.5","license":"MIT","_id":"@parcae/backend@0.2.5","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"9b5998ad71b52b92ca795bc8ceb6687ae4d75369","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.2.5.tgz","fileCount":5,"integrity":"sha512-u9c2pyfwf4J4Ytm8CKUkYg4GyCXgdYCmpJNhfYDQ4WhS18eeGEqesfiANjjnHPVcz9+4d+u5HzEGn8YfHOrljQ==","signatures":[{"sig":"MEQCIAZCZ1K+4a+qpNgGRaMDcFn4Qs2XFwv+68JknuuXwuPoAiBpOkeeultzp7HtikdHtJ2ZRW+K0wspocEYZh6CMx6pgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":286287},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"06b12b72532654de582baab2bfdd7d6f6482a882","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.2.5_1772765655382_0.2913357964557741","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@parcae/backend","version":"0.2.6","license":"MIT","_id":"@parcae/backend@0.2.6","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"9800077182cb9b573d8a79e1b60aef75cbbf949c","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.2.6.tgz","fileCount":5,"integrity":"sha512-kgCGkZe6byp8AJs2k9U+Y7+3LDAnwNU0pwkpHhadpqaj1OQjEQnD3dEBnM/NyJ83ixsYjmcR87A/xh1F9/ZpVQ==","signatures":[{"sig":"MEUCIQDhaaGOCYp5PhVrvAj4Fep3yMEWA1iKMG8wm24HuzoVXgIgBoQ9atY9lkCwnxX7SzRAlmjcdc6iwlvUQfc3tACXYgs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":286287},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"0c3b744f8db3c5074122d5ed8e8801a7d98fc990","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.2.6_1772766655190_0.9274112400728187","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@parcae/backend","version":"0.2.7","license":"MIT","_id":"@parcae/backend@0.2.7","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"2377f16d37f6dc91d70cd0338e3ad5515ee48cbd","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.2.7.tgz","fileCount":5,"integrity":"sha512-Zwf9bTT+TGPB9oSK3L/7Chy0/5vnB4Nc1WDSNdZwfHFI527AP6ZaU2e4fajSHwkwJOkRwdbKJGticxtEO3RBxQ==","signatures":[{"sig":"MEQCIFD8PW8CjUr02AEqnKnFbq2JS39XmzBB0ekNROl6KLKVAiB1DG87ZKxh6Xkei3As9F/IUw1GAc59lP9cEsLD2aIJXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":286287},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"bf6922aaf0529135882cd286d3077dee339384d3","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.2.7_1772767083132_0.4995050559022982","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@parcae/backend","version":"0.2.8","license":"MIT","_id":"@parcae/backend@0.2.8","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"6b9dcd61de3f1eb403b56bc7880417c9005d91c4","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.2.8.tgz","fileCount":11,"integrity":"sha512-h2FRrczvpxAfOIA7w/xdSkvCBX9t2r3dyeTlZ+UQUb0w0zHL25mA/Nj8Fa2/l8KKofINQqY3rOtIquXQyMXxWQ==","signatures":[{"sig":"MEUCIQD92dn6qAfIigMaBs0EmOj4wl+oDIBwZO/uWHeGjmjh5QIgLSjdy9O8RPXSyrpmE0yYQZQ7u3JMbQq/3+wVwsVBdY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":848450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"4b8a95ce5a0338c0c376d02adb0ebde79049705b","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.2.8_1772770073243_0.7559538242105832","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@parcae/backend","version":"0.3.0","license":"MIT","_id":"@parcae/backend@0.3.0","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"f62352c75a15565b5f0ce4b1dfb524a8884bbb67","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.3.0.tgz","fileCount":11,"integrity":"sha512-Bj1FhdcJp1n5aGMvEJmYTSTVafsVf8myPJiNo8bhmb+vfU307/PA+e9KSU8ouFdvzf3RMSU7B0mmrr12Rf0poA==","signatures":[{"sig":"MEQCIBuIWlJOMTKIsjkUCNbvEYJTJgU7RS4808SgcDqrAGdrAiBnWJOr7PeHk9KvKSwYC64czHFPpd+NWLyyB+HMXng4dA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":848450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"d50e2ab5c477b59d94e22f92ea47cf8c61a64b46","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.3.0_1772770742818_0.0879995402756617","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@parcae/backend","version":"0.3.1","license":"MIT","_id":"@parcae/backend@0.3.1","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"36cc2b64a7882fe4b42a0475bfb5a470889a5865","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.3.1.tgz","fileCount":11,"integrity":"sha512-6J1hm8LMe43oNNDBZAdvIpBx2Uw+l0+SkCbBKvslhyQ/u8uxYaNosysHKBkd71nTb1bFRK9p9QLib1a+MqI2xQ==","signatures":[{"sig":"MEUCICQdED1muhQzL16VSCDG48coXQY4nhuLfuveY6oXr/u3AiEAp5DKc+ZrNrBGbqjpF1hLzAaTjX/OkDRnUTbH4Bnb7AQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":848450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"88c3c887ed280ef8121f5d75711bf3fa9e068f87","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.3.1_1772771365695_0.1324458641787587","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@parcae/backend","version":"0.3.2","license":"MIT","_id":"@parcae/backend@0.3.2","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"fc52f5893311da55a5852e741af95b360de2997b","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.3.2.tgz","fileCount":5,"integrity":"sha512-ZX3LIkXedYgADMDYbgs6cfgPdVD2YWH8kLDd9LNz3ifT4uciUj+wgqTSmodUvNFEeWJWoxphvo9GtQXmTwYwJA==","signatures":[{"sig":"MEYCIQDuF7WhfSHSFLSnp3/qd9DFHOZ1LjAqWFsjwRkDLXK+hgIhAJ/vpgdXnD0wdGwsRwG+L6PBPsrsQHJU3DpCL1KbajdQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847586},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"7007210eb1c25330fbc953a59618b9f588108474","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.3.2_1772772101673_0.17489980034900499","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@parcae/backend","version":"0.3.3","license":"MIT","_id":"@parcae/backend@0.3.3","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"ae87d62c43fc3f46aff5c938c5d27fb08c31eb02","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.3.3.tgz","fileCount":5,"integrity":"sha512-JjWRzWa8D3c1qyx4d2DisIMjrtC/8NlSDmVGZTFnPWfIeLgK57NXb/m9jZkrCVTn1zxCHGagIUg8PIHqLh7UNw==","signatures":[{"sig":"MEUCIElJod8ZyIde6QWvy++L6Vuxg8NhbmQNlDngO2n7cAAtAiEAyDH6iVNkLOvhJOhpIkg+RZM8WG1W7Ut2lCbMx54Miww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"cdf6ca753117b9a0c0d19a5f9334c809f67c81ed","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.3.3_1772772936396_0.475702186952881","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@parcae/backend","version":"0.4.0","license":"MIT","_id":"@parcae/backend@0.4.0","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"1f71bbe1e0e62597643258238c47e7e691527eb4","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.4.0.tgz","fileCount":5,"integrity":"sha512-phtpEjJlrQVlNfcNCuJuD37IY2V334g+537kgJ4OqkKyGbC5d/8AV8K0oEnDnYnuyH1o7vS/IqWtAOHJ3NJc4A==","signatures":[{"sig":"MEUCIQDwKEV7ZEpfd5LdtFntP+oxMs2Yo07g96xH+Lz6aS5FqgIgFyF3bIFiKCRwqkDR4QtzZYZKLqF9bBfQSKFednDt8Hk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"4adf6e1b707bbc0b548795b6e8387f1379681018","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.4.0_1772773549729_0.3247950417198544","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@parcae/backend","version":"0.4.1","license":"MIT","_id":"@parcae/backend@0.4.1","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"98df8b9b483e9c2b5749762543ba6c7b1f17efc1","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.4.1.tgz","fileCount":5,"integrity":"sha512-+t0S6zdeqwcN5Ed+njw9HUsqBsuLFrYMr2VNHSNXJfeE9gke9/RMP2zx0uysXEXeLX1eqH4y70LDYAy4DUxRGA==","signatures":[{"sig":"MEUCIEijWdfk/pQcWAklEBSWeQGp7/EUqi8lY+mXyQ9LM2TaAiEA5mSRiuqtqHhwN0r7MKsXiadPUDUmmpyQQKUeVOaF8iI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"035a48babd92a89079034c18107a22df47005629","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.4.1_1772775672968_0.7479848662499793","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@parcae/backend","version":"0.4.2","license":"MIT","_id":"@parcae/backend@0.4.2","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"e59cff1ebaeb86e8c954c32c322d0d02c22e092d","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.4.2.tgz","fileCount":5,"integrity":"sha512-vcMpm0sEtoXFS7YJxKdC3n8qrkVSn2eW/mKwanRMBTafd1D5WrdnJkSncAXv1AwujDdWP28M+hJzA6fqy2ciQA==","signatures":[{"sig":"MEUCIQCsei9WB6DurHp2ZWSKQeHatSBXvng12aBlhAWe0DrCqgIgbuPyk8dYDPfy1JjKcPXeHYm4n3xwYwZpxUT6RH551mU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"035a48babd92a89079034c18107a22df47005629","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.4.2_1772776341401_0.3748041143651528","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@parcae/backend","version":"0.4.3","license":"MIT","_id":"@parcae/backend@0.4.3","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"6297dfe2135f2efbff9a1240eb16c35b8b0fe1f0","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.4.3.tgz","fileCount":5,"integrity":"sha512-adwBAitbYR6Rv+FPt8Zg1K+qCkAd4YPqdwRmm1gzyBpVgJ+1am5Kb/xGkt1kkslL4yMYG4kEVHQv/sK+xejqXw==","signatures":[{"sig":"MEUCIH2vioNDI2f1D44TtZJ4yo+u0dyTdinuHQd7F7MVV6BPAiEA0OOIXmd0SnJpqrlIESx0vQ4AEpxrHmttFAdkBMjiqGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"d204fcf431a03eb2ad994b561dfad79b2f11445c","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.4.3_1772777311842_0.313790732007744","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@parcae/backend","version":"0.4.4","license":"MIT","_id":"@parcae/backend@0.4.4","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"890a27332df65cf18b24bd31caf1051f35d537c5","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.4.4.tgz","fileCount":5,"integrity":"sha512-4Ocez7RtsbaPGO1vJHsQIdI93yho7fkFG2vC2rGm6Vck6siNMFhl6jxIOquQq5U9U41is6IG5stnA5sHQx6jcQ==","signatures":[{"sig":"MEYCIQD5Aza1VpEnYRoUod9171POvx6AyYCY49UeL6yeqgRXigIhAOxxSGGgAeenIOv+ibF8pQ8475YIZa6M5RP2Spmv1kRh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"515e52ada640281ff40e9486bf9458f7b2e18c1d","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.4.4_1772777609692_0.4539409248211237","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@parcae/backend","version":"0.5.0","license":"MIT","_id":"@parcae/backend@0.5.0","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"fc23739d834cca5da3d065863b7f0342a36c3cff","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.5.0.tgz","fileCount":5,"integrity":"sha512-Xe7uWq7uzaXOvgf4UPapCrUAhTmXlLtvd2Bt+fJbwQrXNJYq8sMZLqTt1o/VOP4ElEiLIYfMZlY2Hivj0prSCQ==","signatures":[{"sig":"MEYCIQD7oDDUdPvBVnKK5oYFxETByPhk7md7KDkqpj0IhQVDugIhAOGZSJ89g3OClwPfqw8GGGFgM7QsFTph16gkc31duECp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"515e52ada640281ff40e9486bf9458f7b2e18c1d","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.5.0_1772778237054_0.8247724196700998","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@parcae/backend","version":"0.5.1","license":"MIT","_id":"@parcae/backend@0.5.1","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"4bedb995ab191953709a9a4c97b685acc2bc85e5","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.5.1.tgz","fileCount":5,"integrity":"sha512-tB7rIrdkkzWKY0AyJNS57Tpb6maR5p6ZuFrJpsE7r7jEAD2u8ec3GS3ZZb7eGaeLDa4CAl2LB7XwZsMt9umBbg==","signatures":[{"sig":"MEUCIQDPrwYHq7gidTfU748mXrRLeehSZb/hMKY2fKLzaPyHSQIgJcvQ+TbBdty13leMVOfgIwUl5xOQaUcKzox/UJw9SAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"45dda38281d678be744c19affcac3ab57d105b25","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.5.1_1772778964693_0.44953304401517613","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@parcae/backend","version":"0.5.2","license":"MIT","_id":"@parcae/backend@0.5.2","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"61a03fac1b89e98f1ea61800c02c716cf5042335","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.5.2.tgz","fileCount":5,"integrity":"sha512-sdbI2QoB8JoRo5wqbfQ0l0BFz7e/fajmuT4AtsI5ra0pf3s4MARR7ZJuPIT6mi7taty2SFABlqSkWS8Ten73wA==","signatures":[{"sig":"MEYCIQCLJfVQcpR2E6G4/kA2p3BOipTDiUmxmJ+vrlsrfYFqQAIhAKj0UlmFO93TAHHTKCFEEiIP/I8U3ed6tzVLspJtb6iR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"45a38f6e71e3c739af85853e9dd3a259fa58eaf3","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.5.2_1772779645610_0.5932944270798641","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@parcae/backend","version":"0.5.3","license":"MIT","_id":"@parcae/backend@0.5.3","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"1f18dd84b1b47d372f9d190064a544437783364c","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.5.3.tgz","fileCount":5,"integrity":"sha512-RNiYNVxvKrTCRPqy7MKwwGMitwL8Ctnyq9wJeLNWoFDXJ46TxufN5k31LCVJyG/aKa1aA0/k8ebTYpZcJOVavA==","signatures":[{"sig":"MEQCIC4m3qjqOjTZhG3o12z6jPwwpJw7S6Jchmh8uM565GetAiARQnIywlFku15B2Ocue3BtQrEKqi73JsJG0qjfInPXZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"98de4311066994842346faaebcd4603f376738ca","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.5.3_1772791707355_0.9453679647493578","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@parcae/backend","version":"0.5.4","license":"MIT","_id":"@parcae/backend@0.5.4","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"ff14fcce913c1f76d3f089ba737a3f410d26245e","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.5.4.tgz","fileCount":5,"integrity":"sha512-BrQD3PFxmtkv3rAPeGClSHwLINtuVLKPch2ZUqO3qDdlJ6kL1PMJM6dc1MH1woIlWFDYFGadXNB0aWRiPw/GSA==","signatures":[{"sig":"MEYCIQCOL8jGU0AdrslX1JHbO1S8/GbDZHG0tresrjhR133GuQIhAL3ufVAnfsVCngCNkiSPp5CQfTCuNdhzHcdz7ePr54oO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"c061666954ae91ca95609c249d6a2aaef4218ffa","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.5.4_1772792091273_0.058890784069365765","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@parcae/backend","version":"0.6.0","license":"MIT","_id":"@parcae/backend@0.6.0","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"f29ef47db68c3ccf0d8ef7f0d2d6925d6f218996","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.6.0.tgz","fileCount":5,"integrity":"sha512-vax+WqC845Tfx7hl+AlqEl/FOKE2oldx6c9SYp/9pRVHP5Fh6J/+i1M4ZbwGtAV5iOZIHbUcHAZbPsu350acVA==","signatures":[{"sig":"MEQCIDii0maUQl8BA4RXXgIGbRXPSwI+BC07GDBpNCOxLy1fAiAUS83EoYp/Xi0lE7wwbV1zNDU67d77Mr+6pTgDKawx6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"8d289d5e855878de133ed4532c395e671f099c24","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.6.0_1772794105626_0.9691218466984597","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@parcae/backend","version":"0.6.1","license":"MIT","_id":"@parcae/backend@0.6.1","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"98535a4336feb80df3ea69750e53df5b7f8333e2","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.6.1.tgz","fileCount":5,"integrity":"sha512-3vNJu0TdHKF9O5Zi8LT3bruOJym36CWvCYH+F5ofhyyFFhwErFDOW4mTeQ5os80TNxbZRbQO46Yl4GkxPTKzYQ==","signatures":[{"sig":"MEUCID3/r/68+FDyB5mNpShfkpbXQ1krcKFJwS4rXoA8ah/XAiEAgkXexgLp1llVyy74uLX3p7qfOpGFlG301XfupXSZieA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":848270},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"6d7377f928a72bb69ab5667ed137ed57f729b75e","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":">=0.1.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.6.1_1772795578008_0.2705567729504055","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@parcae/backend","version":"0.7.0","license":"MIT","_id":"@parcae/backend@0.7.0","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"1b2881c91c7c84af02c89c5f755ef3396c33c06a","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.7.0.tgz","fileCount":5,"integrity":"sha512-CKV0BpQwaLB1cDnavIWKaTowH342je9sxoNfc7DbfpEv5XfhJCcSN0xvtBU7rvcIyNyI3RmLz1avZdsTG2RATQ==","signatures":[{"sig":"MEYCIQCx2BHwn1zIiT4JdIMZFySadGHvgeR+4o7ymZsWpS04wgIhAJeb90ICSHgfnVvNbf/t0jVHdvBBCkLVTtMmP52/OuQh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":850834},"main":"./dist/index.js","type":"module","_from":"file:parcae-backend-0.7.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_resolved":"/tmp/d6b57b2c5fc3746b1d759e478f0ed95c/parcae-backend-0.7.0.tgz","_integrity":"sha512-CKV0BpQwaLB1cDnavIWKaTowH342je9sxoNfc7DbfpEv5XfhJCcSN0xvtBU7rvcIyNyI3RmLz1avZdsTG2RATQ==","_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":"0.7.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.7.0_1772800012591_0.05160639776513931","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@parcae/backend","version":"0.7.1","license":"MIT","_id":"@parcae/backend@0.7.1","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"eb227c3e2b3a0579687ee9d1aa008e6d63bbac21","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.7.1.tgz","fileCount":5,"integrity":"sha512-j3LoszhgO76jZjvPgz70qiC2aKKDVlFmEgI5PpDgrEzDHoctKXIA5oO4SvW9HiD/QkhnvCvswZ1u9uSUXsq3wA==","signatures":[{"sig":"MEQCICFLVTJX5zHMrmRSmpZq6tyQ1zy7DNwYKZu/ww0Fb+IlAiB7Tg3TaG/fv78Xk6zrrui5hv0hrcP0Xa1/Pjtp2DAQjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":851384},"main":"./dist/index.js","type":"module","_from":"file:parcae-backend-0.7.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_resolved":"/tmp/753fb3c7ffc7da487f4003d7fd13962b/parcae-backend-0.7.1.tgz","_integrity":"sha512-j3LoszhgO76jZjvPgz70qiC2aKKDVlFmEgI5PpDgrEzDHoctKXIA5oO4SvW9HiD/QkhnvCvswZ1u9uSUXsq3wA==","_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":"0.7.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.7.1_1772800900648_0.9121054497743117","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@parcae/backend","version":"0.8.0","license":"MIT","_id":"@parcae/backend@0.8.0","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"dist":{"shasum":"e3f805e7fc55630396a3f7b12573e9268a9c7e4e","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.8.0.tgz","fileCount":5,"integrity":"sha512-NAUzzp7Uc5isisf1AEhOcguxl2w5Hwhzn9nEx5tCnDsp7ZhKy8A8sJ71svzF4/32x6NsxzR1MMqbL9QV9/C4aQ==","signatures":[{"sig":"MEYCIQDrP6jmj77a7POQakB9xxbbUXqJngqO3mjWVy/kF5CuNQIhANK4nVxHYbZ4KGXRmsc7tv/xoOajiaUgVHNHTF8bHvpr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":382077},"main":"./dist/index.js","type":"module","_from":"file:parcae-backend-0.8.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"_resolved":"/tmp/899a1e029a9ba3311db7bfd5912550df/parcae-backend-0.8.0.tgz","_integrity":"sha512-NAUzzp7Uc5isisf1AEhOcguxl2w5Hwhzn9nEx5tCnDsp7ZhKy8A8sJ71svzF4/32x6NsxzR1MMqbL9QV9/C4aQ==","_npmVersion":"11.9.0","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.0","knex":"^3.1.0","pako":"^2.1.0","polka":"^0.5.2","bullmq":"^5.0.0","ioredis":"^5.4.0","ts-morph":"^27.0.2","pluralize":"^8.0.0","socket.io":"^4.8.0","async-lock":"^1.4.1","deep-equal":"^2.2.3","body-parser":"^1.20.3","@parcae/model":"0.8.0","compress-json":"^3.1.0","better-sqlite3":"^11.0.0","fast-json-patch":"^3.1.1","@sesamecare-oss/redlock":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.18","typescript":"^5.8.0","@types/node":"^22.0.0","@types/pako":"^2.0.3","@types/pluralize":"^0.0.33","@types/async-lock":"^1.4.2","@types/deep-equal":"^1.0.4","@types/body-parser":"^1.19.5","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/backend_0.8.0_1773622295079_0.43493118626771543","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@parcae/backend","version":"0.8.1","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"dependencies":{"@sesamecare-oss/redlock":"^1.1.0","async-lock":"^1.4.1","body-parser":"^1.20.3","bullmq":"^5.0.0","compress-json":"^3.1.0","deep-equal":"^2.2.3","fast-json-patch":"^3.1.1","ioredis":"^5.4.0","better-sqlite3":"^11.0.0","knex":"^3.1.0","pako":"^2.1.0","pluralize":"^8.0.0","polka":"^0.5.2","socket.io":"^4.8.0","ts-morph":"^27.0.2","zod":"^3.24.0","@parcae/model":"0.8.0"},"devDependencies":{"@types/async-lock":"^1.4.2","@types/better-sqlite3":"^7.6.0","@types/body-parser":"^1.19.5","@types/deep-equal":"^1.0.4","@types/node":"^22.0.0","@types/pako":"^2.0.3","@types/pluralize":"^0.0.33","tsup":"^8.5.0","typescript":"^5.8.0","vitest":"^4.0.18"},"license":"MIT","scripts":{"build":"tsup","typecheck":"tsc --noEmit","clean":"rm -rf dist","test":"vitest run","test:watch":"vitest"},"_id":"@parcae/backend@0.8.1","_integrity":"sha512-lCLGaGAaTFcWGWbwCArGJFjCaZOyhVVZL+wUgZ2Kfu1ZHWMSHvZBICKb1UW1dk1RtHdCQ7ZZfY+yz14xJmCIIw==","_resolved":"/tmp/071ea4c73a61d76a20572ccc1bf4fcfc/parcae-backend-0.8.1.tgz","_from":"file:parcae-backend-0.8.1.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-lCLGaGAaTFcWGWbwCArGJFjCaZOyhVVZL+wUgZ2Kfu1ZHWMSHvZBICKb1UW1dk1RtHdCQ7ZZfY+yz14xJmCIIw==","shasum":"bc7de9f79c5d254e1e225265c638f152d4a24b63","tarball":"https://registry.npmjs.org/@parcae/backend/-/backend-0.8.1.tgz","fileCount":5,"unpackedSize":382225,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCS5nWhlINPR8eRtL1ObUSfzL+eQRTGkit2e4Aw8zJUSQIgNCSUoK4KwVQnVMyX/xmWYa0Xg64k+u9fQk9adVaJZbY="}]},"_npmUser":{"name":"edencoder","email":"alex@edenup.com"},"directories":{},"maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/backend_0.8.1_1773622500601_0.03798986853631581"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-05T02:59:46.646Z","modified":"2026-03-16T00:55:01.169Z","0.0.1":"2026-03-05T02:59:46.941Z","0.0.2":"2026-03-05T03:43:27.014Z","0.0.3":"2026-03-05T04:29:18.728Z","0.0.4":"2026-03-05T10:57:16.729Z","0.0.5":"2026-03-05T11:02:46.206Z","0.0.6":"2026-03-06T00:32:07.171Z","0.0.7":"2026-03-06T01:12:16.541Z","0.1.0":"2026-03-06T01:19:51.584Z","0.1.1":"2026-03-06T01:28:18.428Z","0.1.2":"2026-03-06T01:32:24.185Z","0.2.0":"2026-03-06T01:56:46.268Z","0.2.1":"2026-03-06T02:16:12.233Z","0.2.2":"2026-03-06T02:22:36.679Z","0.2.3":"2026-03-06T02:44:17.770Z","0.2.4":"2026-03-06T02:51:00.975Z","0.2.5":"2026-03-06T02:54:15.543Z","0.2.6":"2026-03-06T03:10:55.408Z","0.2.7":"2026-03-06T03:18:03.345Z","0.2.8":"2026-03-06T04:07:53.447Z","0.3.0":"2026-03-06T04:19:03.008Z","0.3.1":"2026-03-06T04:29:25.862Z","0.3.2":"2026-03-06T04:41:41.836Z","0.3.3":"2026-03-06T04:55:36.649Z","0.4.0":"2026-03-06T05:05:49.919Z","0.4.1":"2026-03-06T05:41:13.171Z","0.4.2":"2026-03-06T05:52:21.597Z","0.4.3":"2026-03-06T06:08:32.024Z","0.4.4":"2026-03-06T06:13:29.881Z","0.5.0":"2026-03-06T06:23:57.276Z","0.5.1":"2026-03-06T06:36:04.950Z","0.5.2":"2026-03-06T06:47:25.859Z","0.5.3":"2026-03-06T10:08:27.621Z","0.5.4":"2026-03-06T10:14:51.511Z","0.6.0":"2026-03-06T10:48:25.892Z","0.6.1":"2026-03-06T11:12:58.174Z","0.7.0":"2026-03-06T12:26:52.827Z","0.7.1":"2026-03-06T12:41:40.829Z","0.8.0":"2026-03-16T00:51:35.226Z","0.8.1":"2026-03-16T00:55:00.751Z"},"license":"MIT","description":"Parcae Backend — TypeScript backend framework with auto-CRUD, realtime, and jobs","maintainers":[{"name":"edencoder","email":"alex@edenup.com"}],"readme":"# @parcae/backend\n\nTypeScript backend framework. One function call bootstraps Postgres persistence, auto-CRUD routes, realtime subscriptions, background jobs, and authentication from your Model classes.\n\n## Install\n\n```bash\nnpm install @parcae/backend @parcae/model\n```\n\n## Quick Start\n\n```typescript\nimport { createApp } from \"@parcae/backend\";\n\nconst app = createApp({ models: \"./models\" });\nawait app.start();\n// -> .parcae/ generated, tables created, CRUD routes live, WebSocket ready\n```\n\n`.env` files are auto-loaded at startup:\n\n```bash\n# .env\nDATABASE_URL=postgresql://localhost:5432/myapp\n```\n\n## createApp()\n\nThe main entry point. Accepts model classes directly or a directory path for auto-discovery.\n\n```typescript\nimport { createApp } from \"@parcae/backend\";\nimport { User, Post } from \"./models\";\n\nconst app = createApp({\n  models: [User, Post], // or \"./models\" for auto-discovery\n  controllers: \"./controllers\", // optional — auto-import route files\n  hooks: \"./hooks\", // optional — auto-import hook files\n  jobs: \"./jobs\", // optional — auto-import job files\n  auth: {\n    // optional — omit to skip auth\n    providers: [\"email\"],\n  },\n  version: \"v1\", // API prefix (default: \"v1\")\n  root: process.cwd(), // project root (default: cwd)\n});\n\nawait app.start({ port: 3000, dev: true });\n```\n\nControllers, hooks, and jobs self-register on import — just put files in the directory and they're auto-loaded (like Next.js pages).\n\n### Startup Sequence\n\n1. Parse and validate env config (Zod), auto-load `.env`\n2. Discover models (array or directory scan)\n3. Generate `.parcae/` type metadata (RTTIST)\n4. Connect Postgres (Knex, optional read replica)\n5. Connect Redis (PubSub + Queue, optional — falls back to in-process)\n6. Create `BackendAdapter`, call `Model.use()`\n7. Ensure tables exist (additive DDL migration)\n8. Create HTTP server (Polka) + WebSocket server (Socket.IO)\n9. Set up `QuerySubscriptionManager` for realtime\n10. Mount auth middleware + routes (if configured)\n11. Register auto-CRUD routes for scoped models\n12. Auto-discover and import controllers, hooks, jobs\n13. Start BullMQ workers + HTTP listener\n\n### ParcaeApp\n\n```typescript\ninterface ParcaeApp {\n  start(options?: { dev?: boolean; port?: number }): Promise<void>;\n  stop(): Promise<void>;\n  schemas: Map<string, SchemaDefinition>;\n  models: ModelConstructor[];\n}\n```\n\n## Auto-CRUD Routes\n\nAny model with a `scope` gets full REST endpoints automatically:\n\n```\nGET    /v1/posts          list (paginated, sortable, filterable)\nGET    /v1/posts/:id      get one\nPOST   /v1/posts          create\nPUT    /v1/posts/:id      update\nDELETE /v1/posts/:id      delete\nPATCH  /v1/posts/:id      atomic JSON Patch (RFC 6902)\n```\n\n### Scopes\n\nScopes define per-operation access control. They receive the request context and return a query modifier, a data object, or null to deny.\n\n```typescript\nclass Post extends Model {\n  static type = \"post\" as const;\n\n  static scope = {\n    read: (ctx) => (qb) =>\n      qb.where(\"published\", true).orWhere(\"user\", ctx.user?.id),\n    create: (ctx) => (ctx.user ? { user: ctx.user.id } : null),\n    update: (ctx) => (qb) => qb.where(\"user\", ctx.user.id),\n    delete: (ctx) => (qb) => qb.where(\"user\", ctx.user.id),\n  };\n\n  user!: User;\n  title: string = \"\";\n  published: boolean = false;\n}\n```\n\n### Query Parameters\n\nList endpoints support:\n\n| Parameter      | Example                  | Description         |\n| -------------- | ------------------------ | ------------------- |\n| `limit`        | `?limit=25`              | Page size (max 100) |\n| `page`         | `?page=2`                | Page number         |\n| `sort`         | `?sort=createdAt`        | Sort column         |\n| `direction`    | `?direction=desc`        | Sort direction      |\n| `where[field]` | `?where[published]=true` | Field filter        |\n| `select`       | `?select=title,views`    | Column selection    |\n\n## Custom Routes\n\nExpress-compatible function API. Middleware works the same way.\n\n```typescript\nimport { route } from \"@parcae/backend\";\n\nroute.get(\"/v1/health\", (req, res) => {\n  res.end(JSON.stringify({ status: \"ok\" }));\n});\n\nroute.post(\"/v1/upload\", requireAuth, rateLimit(100), async (req, res) => {\n  // req.session available if auth is configured\n});\n```\n\nMethods: `route.get`, `route.post`, `route.put`, `route.patch`, `route.delete`, `route.options`, `route.head`, `route.all`\n\n### Route Options\n\n```typescript\nroute.get(\"/health\", handler, { priority: 0 }); // lower = registered first\n```\n\n### Response Helpers\n\nConvenience functions for common response patterns:\n\n```typescript\nimport {\n  json,\n  ok,\n  error,\n  unauthorized,\n  notFound,\n  badRequest,\n} from \"@parcae/backend\";\n\nroute.get(\"/v1/posts\", async (req, res) => {\n  const posts = await Post.where({ published: true }).find();\n  ok(res, { posts });\n});\n\nroute.get(\"/v1/posts/:id\", async (req, res) => {\n  const post = await Post.findById(req.params.id);\n  if (!post) return notFound(res, \"Post\");\n  ok(res, post.toJSON());\n});\n\nroute.post(\"/v1/admin/action\", async (req, res) => {\n  if (!req.session?.user) return unauthorized(res);\n  if (!req.body.name) return badRequest(res, \"name is required\");\n  // ...\n});\n```\n\n| Helper                        | Status | Body                                      |\n| ----------------------------- | ------ | ----------------------------------------- |\n| `json(res, status, body)`     | any    | raw JSON                                  |\n| `ok(res, result)`             | 200    | `{ result, success: true }`               |\n| `error(res, status, message)` | any    | `{ result: null, success: false, error }` |\n| `unauthorized(res)`           | 401    | `{ error: \"Unauthorized\" }`               |\n| `notFound(res, what?)`        | 404    | `{ error: \"{what} not found\" }`           |\n| `badRequest(res, message)`    | 400    | `{ error: message }`                      |\n\n## Hooks\n\nModel lifecycle hooks. Run before or after persistence operations.\n\n```typescript\nimport { hook } from \"@parcae/backend\";\n\nhook.after(Post, \"save\", async ({ model, lock, enqueue, user }) => {\n  const unlock = await lock(`index:${model.id}`);\n  try {\n    await model.refresh();\n    await enqueue(\"post:index\", { postId: model.id });\n  } finally {\n    await unlock();\n  }\n});\n\nhook.before(Post, \"create\", ({ model }) => {\n  model.title = model.title.trim();\n});\n```\n\n### Actions\n\n`save`, `create`, `update`, `patch`, `remove`\n\n`save` fires on both create and update. `create` and `update` fire on their respective operations only.\n\n### Hook Context\n\n```typescript\ninterface HookContext {\n  model: any;\n  action: HookAction;\n  data?: Record<string, any>;\n  user?: { id: string; [key: string]: any } | null;\n  lock(key, ttl?): Promise<() => Promise<void>>;\n  enqueue(name, data, opts?): Promise<boolean>;\n}\n```\n\n### Hook Options\n\n```typescript\nhook.after(Post, \"patch\", handler, {\n  async: true, // don't block the response (default: false)\n  priority: 200, // execution order — lower runs first (default: 100)\n});\n```\n\n## Jobs\n\nBackground job processing via BullMQ. Requires Redis.\n\n```typescript\nimport { job } from \"@parcae/backend\";\n\njob(\"post:index\", async ({ data, bullJob, attempt }) => {\n  const post = await Post.findById(data.postId);\n  if (!post) return { skipped: true };\n  // ... index in search engine ...\n  return { success: true };\n});\n```\n\nJobs retry 3 times with exponential backoff (5s base).\n\n### Standalone enqueue\n\nYou can enqueue jobs from anywhere — not just hook contexts:\n\n```typescript\nimport { enqueue } from \"@parcae/backend\";\n\nawait enqueue(\"post:index\", { postId: post.id });\nawait enqueue(\n  \"post:index\",\n  { postId: post.id },\n  { jobId: `post:index:${post.id}` },\n); // deduped\n```\n\n## BackendAdapter\n\nThe server-side `ModelAdapter` implementation. Handles Knex/Postgres persistence, hooks, pub/sub, and the overflow column pattern.\n\n```typescript\nimport { BackendAdapter } from \"@parcae/backend\";\n\nconst adapter = new BackendAdapter({\n  read: readDb, // Knex instance (read replica or same as write)\n  write: writeDb, // Knex instance\n  pubsub, // PubSub instance (optional)\n  logger, // Winston logger (optional)\n});\n\nModel.use(adapter);\n```\n\n### Key Features\n\n- **Upsert** — `INSERT ... ON CONFLICT MERGE` for save operations\n- **Atomic JSON Patch** — Generates `jsonb_set_lax`, `jsonb_insert`, `#-` SQL for JSONB columns; direct `SET` for scalar columns\n- **Overflow column** — Declared schema properties get typed columns; everything else goes into a `data` JSONB column automatically\n- **Additive migration** — `ensureAllTables()` creates tables/columns/indexes if missing. Never drops.\n- **Read/write splitting** — Separate Knex instances for read and write queries\n- **Hook execution** — Runs registered before/after hooks during persistence operations\n\n## PubSub\n\nRedis-backed cross-process events. Falls back to in-process `EventEmitter` when Redis is unavailable.\n\n```typescript\nimport { PubSub } from \"@parcae/backend\";\n\nconst pubsub = new PubSub({ url: \"redis://localhost:6379\" });\nawait pubsub.building;\n\npubsub.emit(\"post:updated\", { id: \"abc\" });\npubsub.on(\"post:updated\", (data) => { ... });\n```\n\nIncludes distributed locking via Redlock:\n\n```typescript\nconst unlock = await pubsub.lock(\"resource:key\", 10000);\ntry {\n  /* critical section */\n} finally {\n  await unlock();\n}\n```\n\n### Standalone lock\n\n```typescript\nimport { lock } from \"@parcae/backend\";\n\nconst unlock = await lock(\"resource:abc\", 120000);\ntry {\n  /* exclusive access */\n} finally {\n  await unlock();\n}\n```\n\n## Queue\n\nBullMQ queue management. Falls back gracefully when Redis is unavailable.\n\n```typescript\nimport { QueueService, addJobIfNotExists } from \"@parcae/backend\";\n\nconst queue = new QueueService({ url: \"redis://localhost:6379\" });\nawait queue.building;\n\nawait addJobIfNotExists(queue.get(), \"post:index\", { postId: \"abc\" });\n```\n\n## QuerySubscriptionManager\n\nManages realtime query subscriptions for connected clients. When a model changes, affected queries are re-evaluated and surgical diff ops (`add`, `remove`, `update`) are pushed to subscribers.\n\n## Auth\n\nAuth is pluggable via the `AuthAdapter` interface. The framework doesn't ship with any auth provider — install the one you need:\n\n| Package                   | Provider    | Users live...                                    |\n| ------------------------- | ----------- | ------------------------------------------------ |\n| `@parcae/auth-betterauth` | Better Auth | In your Postgres (same table as your User model) |\n| `@parcae/auth-clerk`      | Clerk       | In Clerk's cloud (proxied to your User model)    |\n\n```typescript\nimport { betterAuth } from \"@parcae/auth-betterauth\";\n\nconst app = createApp({\n  models: [User, Post],\n  auth: betterAuth({ providers: [\"email\", \"google\"] }),\n});\n```\n\n```typescript\nimport { clerk } from \"@parcae/auth-clerk\";\n\nconst app = createApp({\n  models: [User, Post],\n  auth: clerk({\n    secretKey: process.env.CLERK_SECRET_KEY!,\n    publishableKey: process.env.CLERK_PUBLISHABLE_KEY!,\n  }),\n});\n```\n\nThe `User` Model is always a real, managed Parcae Model. Auth adapters resolve identity and sync user data into it.\n\n- `req.session.user` available in route handlers and scopes\n- Socket.IO auth via `authenticate` event\n- Implement `AuthAdapter` to bring your own provider\n\n## Schema Generation\n\nAt startup, `createApp()` generates type metadata into `.parcae/` (gitignored, like `.next/`):\n\n1. Runs RTTIST typegen to extract TypeScript type metadata\n2. `SchemaResolver` maps types to column definitions\n3. Falls back to default-value inference if RTTIST is unavailable\n4. Caches resolved schemas to `.parcae/schema.json`\n\n## Configuration\n\nEnvironment variables validated at startup via Zod. `.env` files are auto-loaded.\n\n| Variable            | Required | Default       | Description                                       |\n| ------------------- | -------- | ------------- | ------------------------------------------------- |\n| `DATABASE_URL`      | Yes      | --            | PostgreSQL connection string                      |\n| `DATABASE_READ_URL` | No       | --            | Read replica connection string                    |\n| `REDIS_URL`         | No       | --            | Redis for PubSub + Queue                          |\n| `PORT`              | No       | `3000`        | HTTP server port                                  |\n| `AUTH_SECRET`       | No       | --            | Session signing secret (required if auth enabled) |\n| `TRUSTED_ORIGINS`   | No       | --            | Comma-separated CORS origins                      |\n| `NODE_ENV`          | No       | `development` | `development` / `production` / `test`             |\n| `SERVER`            | No       | `true`        | Run HTTP + WebSocket server                       |\n| `DAEMON`            | No       | `false`       | Run background workers                            |\n\n## Exports\n\n```typescript\n// App\nimport { createApp } from \"@parcae/backend\";\nimport type { ParcaeApp, AppConfig } from \"@parcae/backend\";\n\n// Adapter\nimport { BackendAdapter, registerModelRoutes } from \"@parcae/backend\";\nimport type { BackendServices } from \"@parcae/backend\";\n\n// Routing\nimport { route, Controller, hook, job } from \"@parcae/backend\";\nimport type {\n  RouteHandler,\n  Middleware,\n  RouteOptions,\n  RouteEntry,\n  HookContext,\n  HookOptions,\n  HookEntry,\n  JobHandler,\n  JobContext,\n  JobEntry,\n} from \"@parcae/backend\";\n\n// Response helpers\nimport {\n  json,\n  ok,\n  error,\n  unauthorized,\n  notFound,\n  badRequest,\n} from \"@parcae/backend\";\n\n// Services\nimport {\n  PubSub,\n  QueueService,\n  addJobIfNotExists,\n  QuerySubscriptionManager,\n} from \"@parcae/backend\";\nimport { enqueue, lock, getQueue, getPubSub } from \"@parcae/backend\";\nimport type {\n  PubSubConfig,\n  QueueConfig,\n  EnqueueOptions,\n} from \"@parcae/backend\";\n\n// Auth (interface only — implementations in separate packages)\nimport type {\n  AuthAdapter,\n  AuthSession,\n  AuthSetupContext,\n} from \"@parcae/backend\";\n\n// Schema\nimport {\n  SchemaResolver,\n  generateSchemas,\n  loadCachedSchemas,\n} from \"@parcae/backend\";\n\n// Config\nimport { parseConfig, configSchema } from \"@parcae/backend\";\nimport type { Config } from \"@parcae/backend\";\n\n// Registry utilities\nimport {\n  getRoutes,\n  clearRoutes,\n  getHooks,\n  getHooksFor,\n  clearHooks,\n  getJobs,\n  getJob,\n  clearJobs,\n} from \"@parcae/backend\";\n\n// Convenience re-export\nimport { Model } from \"@parcae/backend\";\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}