{"_id":"next-zero-rpc","_rev":"44-cb78744f89a35588c84b635a05ef89e2","name":"next-zero-rpc","dist-tags":{"latest":"0.4.12"},"versions":{"0.1.0":{"name":"next-zero-rpc","version":"0.1.0","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.0","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://github.com/caocchinh/next-zero-rpc#readme","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"5083eb393da7022f44eebeee3559e4e947a99406","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.0.tgz","fileCount":8,"integrity":"sha512-BjlBZFGViNH/4vKA0fzOfHHyLlsiiiVhuJKE6yhhbynXazUyML3Ur7TRp6x70ckFTmWJbJJNT9ciOm5YjPOh2g==","signatures":[{"sig":"MEYCIQCLrD7Zhp+u6dKzeVZ31fAJKc60zVgrcXkIFLSDpA4DOwIhAPXvEStrvoMdM3zsXZmWGedB+j6NQ0ItI7J9ciwV5kju","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53844},"type":"module","engines":{"node":">=18"},"gitHead":"3a449d44682ead4335a2fe999d445dac42f3e290","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero runtime, zero config, zero dependencies.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.0_1782383768020_0.6385675848309365","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"next-zero-rpc","version":"0.1.1","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.1","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app/","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"26312f5cfe8ae2d20c0b5784e0389bbc1b76fd89","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.1.tgz","fileCount":8,"integrity":"sha512-xgqk/wgxIYr3JB78FwRojzSexnlZuBCc4znFTqSb1QxKb8jvEqG4WkCdlijpbydDNjrFhdSjd2p7ngQFfkuNxw==","signatures":[{"sig":"MEUCID4Z2dwgiYqya0scqLEL8CZ+4Uh9bHualfQTMTvzrjBBAiEA630RJd3TvZPvqxHpatZy7WnbwGc/H/hJWFLcmOImE00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53827},"type":"module","engines":{"node":">=18"},"gitHead":"3a449d44682ead4335a2fe999d445dac42f3e290","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero runtime, zero config, zero dependencies.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.1_1782384018917_0.49638790013354317","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"next-zero-rpc","version":"0.1.2","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.2","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"dbad7c6667534fb13102aad84dd941ccfaacb4b5","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.2.tgz","fileCount":8,"integrity":"sha512-nhmRl0CzRU2OwIT2IaK7hDJ0X3w01rA8WqV42EJLPcgpGzkJotTv9aDzDRcV55+iXE7BgqVtJ75cTqxZ6Da8/w==","signatures":[{"sig":"MEQCICiieQtwLpBNmwIjxm59PG+lCAxB9TEkdWW2sATz8ilEAiAh/qoLuPLNaPXVRPBEg3La1KFo+bKQELrvx046+hptYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53826},"type":"module","engines":{"node":">=18"},"gitHead":"3a449d44682ead4335a2fe999d445dac42f3e290","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero runtime, zero config, zero dependencies.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.2_1782384134358_0.17148759111562928","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"next-zero-rpc","version":"0.1.3","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.3","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"5e2028c54e8f91baa549c0d1d028fb9d5afbb55c","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.3.tgz","fileCount":8,"integrity":"sha512-YgouMDF4JOg3eoYuqm24W4RAKze02blvmMdg92p4Wepu5GMdeQLfgJOxjw/Yxl9Q6Be7zjhksJ8uXAaJxnKQSQ==","signatures":[{"sig":"MEQCIA2kEPtsoaDbqYPg0nhvX+UTX4gUH31bZ6YVgHgH2ZeeAiBvLg1WveXkuE9HZ5sTmLESVu1YTlEDxvQ82mKXFEbqzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53941},"type":"module","engines":{"node":">=18"},"gitHead":"0a2bbcd3aae132469d6ae90fa0c01abb09e06163","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero runtime, zero config, zero dependencies.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.3_1782386444957_0.17398510177698512","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"next-zero-rpc","version":"0.1.4","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.4","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"12dba3591a51265bd6a16e6640eac4b2e8dd43be","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.4.tgz","fileCount":8,"integrity":"sha512-wGH6AQVjYh2llC3SmHxHuL4JlizmEqqMeHaeD+qf75q3uojap3acvOfMZM58JujLjtHFf3lLAiAiBfPuEM2sBw==","signatures":[{"sig":"MEQCIHoRPHebYmcbuQyLejLNq5mS9fEFcP4YUom+PpQHs13SAiBrZRkcmTiTDONzEbupsSaHcjZcXUry8vl1WSUfRVAjYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53967},"type":"module","engines":{"node":">=18"},"gitHead":"2fe524175d927d8abe75d4133871cfaa7d514575","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero runtime, zero config, zero dependencies.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.4_1782386769877_0.48375343426575346","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"next-zero-rpc","version":"0.1.5","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.5","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"8d8ad1bb83835d3dfc1fad831c7971afe310cfc6","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.5.tgz","fileCount":8,"integrity":"sha512-EGSm2h2IueSnOLb9147ysEnfCQPGg0ebgONoSOZOnn7mPx2hIgMXDQGQAJ7XBkDL1QHNRK8TPHZFgBRUXARZKA==","signatures":[{"sig":"MEYCIQC40+3vca6C7OLvVHvH8YJL3gQHlT0etA+MW/CjYfxAxwIhAJyqiY6rOmHSpYLjd29IQ0HYPFPq+7G6qt/+FLZp6F+K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53728},"type":"module","engines":{"node":">=18"},"gitHead":"8e330af969f3ae2b4cb02b108282f31e0cf3f943","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero runtime, zero config, zero dependencies.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.5_1782389258821_0.4300495372724522","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"next-zero-rpc","version":"0.1.6","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.6","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"daa4543b1e0cb426aeeb151949b45eafea8c1f39","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.6.tgz","fileCount":8,"integrity":"sha512-lhFhpWpIwqOdXfBoYa1fU6cx+NEGkwLsz9ey0AkwwnmVPKEpb4gFheotH3i0elt7mScDTSSv4L66nc95gbIbOQ==","signatures":[{"sig":"MEYCIQDhONELRj50ydRNCqdydzMT3HzpzYQYfitudKL6xpPYHgIhALq+Nq9/MVViNk2OFdLrv9E/VTuM+p0BYxNxphIomdKQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54696},"type":"module","engines":{"node":">=18"},"gitHead":"caa4f2541ec95e307f21534ea904f46e954f3cca","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero runtime, zero config, zero dependencies.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.6_1782400447631_0.21898736002603547","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"next-zero-rpc","version":"0.1.7","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.7","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"db862d372ba3aab0bf9136714bd8a0bcdebe213d","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.7.tgz","fileCount":8,"integrity":"sha512-KtC6ferR58lPkUtsia4qw21VFwpxwW30jqRul88st2Pvk2nvZfACc3muOmJDvCQIRoWCCuJZ5XfFaRmSC0GUqQ==","signatures":[{"sig":"MEUCIQD8J2Kcw791x5xurAPs4oz4+mj1tcqCsI/+2fq3coipHwIgZL2Cs67779FC741g3V22W5eCOcePMJiTGJjCM0e/LR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57100},"type":"module","engines":{"node":">=18"},"gitHead":"82861cf7eaff4d04218cd540e8b3ffd6070fc77e","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero runtime, zero config, zero dependencies.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.7_1782402094200_0.09895066984566658","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"next-zero-rpc","version":"0.1.8","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.8","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"e699a0976c42298d0c7363988abb64077914e06f","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.8.tgz","fileCount":8,"integrity":"sha512-qGjIiMCGAWujPsXKywNmHcQaIBfNDSh70odBkmdprPB12cXGyikUssWPfxixJ9b38mXgKMaYx+hvtn9nvh28IA==","signatures":[{"sig":"MEYCIQDJVByMOve3xAbaB9psi5Qvl9VMzqNrlDGsQ4UJm0t5kgIhAMOc8sXAX40BlloOOJ71P11ECBCJtoi1xmHOKNfd5jq0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57341},"type":"module","engines":{"node":">=18"},"gitHead":"fb75fd6ba9bb9758ea135f7e36dae5f901bf50d4","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero runtime, zero config, zero dependencies.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.8_1782402611622_0.506546462573283","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"next-zero-rpc","version":"0.1.9","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.9","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"c89d552822c53b8d55976f9e9b247b525b4d6adc","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.9.tgz","fileCount":8,"integrity":"sha512-9uLnMBB+7O2gcPrAJabd7EblNAanVv1SSyPa9t8tXpih4P9dEoLx0CX6XtxJUDxbGNpbboF99nJnBIFuSXJZAg==","signatures":[{"sig":"MEUCIBRDep5pMpKJNNA49u9VB53TdYUgC+fvQtYLyK7Gd54sAiEA2PCzPj+cj9mKjGW4YJY5E0eCJzz/MejrnMcaI2WZ4qc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57821},"type":"module","engines":{"node":">=18"},"gitHead":"e078af78877ce0832bf0c661463ff1c1c7a21b00","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.9_1782440745083_0.8646072554091602","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"next-zero-rpc","version":"0.1.10","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.10","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"33a60e0311720bad063749bf990439770a0008a7","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.10.tgz","fileCount":8,"integrity":"sha512-2l6MGhtlgygDohPiSLHuF0/kEZBoHaWjiyMxbfFXvNT1J1oOiNYHWSdtxQl9ISBdZMdAf8+ws6lMXC2rqmCZUg==","signatures":[{"sig":"MEYCIQCf3Fh7GzDhANowOfPl3iXJVedjOUffOuOscEdqbzskYAIhAKa0oaCsYbp7e9KFqcFonUIaD5UakGX/iXA+xNBX6nYY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58015},"type":"module","engines":{"node":">=18"},"gitHead":"c7679097d6c450c16cbae9a22fc9bc68dcdc66cf","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.10_1782446494621_0.483346867035936","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"next-zero-rpc","version":"0.1.11","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.11","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"89d2fe4b8498562307a2110c0a3da5d312cac8ce","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.11.tgz","fileCount":8,"integrity":"sha512-UTxKgKVSMJ9mY2CBkudOPyI41Re6GK8qNgRSZgSZkpVNZ1Iy91hKn905rf5W310lDbQEbFMQjtVCjJ9yii/Bxw==","signatures":[{"sig":"MEQCICAtd1GY0sZv3iYos0OXRpBiNCyJJtOyiVVdqGnRN1mwAiBuAfynHJhSzpwuw0QXXpqAxt1RgJyzIBHKz/jyYCYUWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58047},"type":"module","engines":{"node":">=18"},"gitHead":"7b1bf8665c6e8398ad6d7756c84b67fb445f1dd3","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.11_1782450727117_0.9990738437583893","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"next-zero-rpc","version":"0.1.12","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.12","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"8bcb210231316f62e062ae4bacbc6b3ab34696ba","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.12.tgz","fileCount":8,"integrity":"sha512-FFSq+aSMd02Vb7LaNiTYd/25etPlrP/FLbSHufoxF3bh407HCuHzVmcJ7d05jS7aXbhg4i2mXy2zTENmWhUaVg==","signatures":[{"sig":"MEUCIA+O5YWJNGP3LMDysO9TfTZ0yt5N+eWA63+/m1sf1qquAiEA0IeRxRzj0fnKTUgZVxTn4ewheASgJzjaYiaFnVYbw6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58129},"type":"module","engines":{"node":">=18"},"gitHead":"2de6fa2f65ff4e3faebff8dc9881a643c6dac529","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.12_1782451505820_0.6558451565006591","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"next-zero-rpc","version":"0.1.13","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.13","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"33719f5093ee086877e2dd4298c1775ea3e0f55c","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.13.tgz","fileCount":8,"integrity":"sha512-pPKtSg4YsLmqAyuex/IjR47PI7X44EhXzuOdF55PA16hLsAwUDbISNWANPpZTUImexYwdnxJneSfMF2y//s5OA==","signatures":[{"sig":"MEYCIQDaHZG8K/DCgvoRpQlxobNIr4xdoJWDvo9HyYA5ZpxhUgIhAJrlDVoI+R8WhK2J5GFy+Twbk4HbYi8PwsncSu+u1N+Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58493},"type":"module","engines":{"node":">=18"},"gitHead":"bb9fe791e8dc0cd83dd3969f8d3a02765b65bd74","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.13_1782451867767_0.3782472761489435","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"next-zero-rpc","version":"0.1.14","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.14","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"22ff55e85debebc175040d36e586183cfbe02d42","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.14.tgz","fileCount":8,"integrity":"sha512-MQJaD5YeNTOQlGyV/WCoHO1ICZcIwcmeemroyyYJ0wHSD9+pEG9iTlcEDKskghOo1PjXs+ivA0EtbJB40uKvpw==","signatures":[{"sig":"MEUCIFg4Bi5E3r1U9OOrlLEoukFDJSdvwsMSWEk3qTBOSCIUAiEAlfF62gZRRPeC3zEnvSqBrqVPVEJlTjzSyHoaVnj9No4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59261},"type":"module","engines":{"node":">=18"},"gitHead":"4c87b7b7c1ffbb73213bb4045122526d459e483a","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.14_1782460074885_0.13460458533538855","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"next-zero-rpc","version":"0.1.15","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.15","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"77ab76aaeba33a9a88c24f34866c9c4b4527a233","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.15.tgz","fileCount":8,"integrity":"sha512-Tp5Lf00XngYZiFQKTXLp5zXEbRByuCekKZjZan4KoNucW0qmqj2NHrNPaqsHki2NbDkUZ2lA2ZLWtAJwnjeHjQ==","signatures":[{"sig":"MEYCIQCScGKUPzxzn04IMpcdWsqS8ImMyfZTG7kHoAZO2XihmAIhAL5pWDlJZMShqSQ2yW1eKXWPCUwnEzcYCzzP+i9AtclN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59261},"type":"module","engines":{"node":">=18"},"gitHead":"5274b06110447bf1c3039fb93bd0b87540852cbc","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.15_1782462986050_0.8754981029359212","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"next-zero-rpc","version":"0.1.16","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.16","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"f1df44279174459830569829e99cff0545e008fd","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.16.tgz","fileCount":8,"integrity":"sha512-I2J4XY57LhCJwsAZ3uulSjbNXoZQz2yoIu3G1Gr+5yJ7EAXFYO1qIsM0BnfZlQIWcks5FcSg1s4eZsnoxNku8A==","signatures":[{"sig":"MEUCIQDa0BDioMv/H1e7XELpaNzi73pykh2q5P1BopxCwsyiCQIgKRYw5VPSJVsV1FbDqOLDMvwU0ZKKA7cbNVZTRvRncaM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59351},"type":"module","engines":{"node":">=18"},"gitHead":"93ac59fa9da0714154ad29b277a8f46c62eac671","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.16_1782466686997_0.9677819949124156","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"next-zero-rpc","version":"0.1.17","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.17","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"a924ba100f7052cf3ae05799b81cde553a6a7e4a","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.17.tgz","fileCount":8,"integrity":"sha512-WDp1v/T8II+LHz38EWs/yM3fLT365d9dHhZFm/kvwmjNPdI/QaWBIotl/213y+pNNCHjHkRYlYfFAf2w5lOQrw==","signatures":[{"sig":"MEYCIQC3llScAU82ThhxLPzaM9ebxNjVwQZ9L9bF/H7hWIFseAIhALd9tm+/GYHjTsG2oSu6bV1eDFMXhVKNQwMW8OlAj1rp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59817},"type":"module","engines":{"node":">=18"},"gitHead":"0708fc588ebfe76027b9b08d4f55cbc6dda60645","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.17_1782471261923_0.4879920525169539","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"next-zero-rpc","version":"0.1.18","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.18","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"a4353e4f82a5d35c0d63f33ede0b22d61944d1df","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.18.tgz","fileCount":8,"integrity":"sha512-vwNmHFO5Eh8B0S8szxdDivlQi0e7k5H4BIM/AoXQUw+VRZGiMadS1q7kLjMWQUEC94P5zwpstF3IK4C+Auj+gw==","signatures":[{"sig":"MEQCICIAhATym5u/GCangH/5Lgb4YEcNJB24Y6tuS3awthhsAiBdTPUTEWWky89vkAIg98/DS9okZDGiF/xrYC96rCN5ew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59815},"type":"module","engines":{"node":">=18"},"gitHead":"e5fd030ec4a67ab9a40fc9a4025a6a5e2a14519f","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.18_1782472304042_0.9219098934054011","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"next-zero-rpc","version":"0.1.19","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.19","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"b9e1d8358da7a68dca440352a3c2c40ac1923b4c","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.19.tgz","fileCount":8,"integrity":"sha512-2EX3ILmgv6xbVWfoaeC6CFwWVXDnwnPyRF7xv8eDhj7iZ1RH50gvisjduXcPpCQiv7tk0ZMRrRCZ3dnYYubUeA==","signatures":[{"sig":"MEUCIFCHQqCySqI1Tz5MR5fJRytGjXta9ipMlJlrJ+vpDjVDAiEAtsY8tl3H+XbSPY1PXxMiZuOjeiVlq/cJr/t+dFC+tQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60144},"type":"module","engines":{"node":">=18"},"gitHead":"814db86640643d25b04b16e1d05e42af5e581913","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.19_1782481146830_0.4886392805942008","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"next-zero-rpc","version":"0.1.20","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.20","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"dba9babeb5687ce85f347c3d4dec0e331863c97a","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.20.tgz","fileCount":8,"integrity":"sha512-YZiYcPxtzrR4J8HFkcR42XA7QdnWNpGvkWPZ5iIPrefT3ns4XVR+L6Cux8lnQ9aiH9P+dqZArISypV5JKKMUKQ==","signatures":[{"sig":"MEUCIHweavRzsotINml9S1hl3vTSQubfpjpxx7RH4axlIerdAiEAyqpfYbHu/24nqXudMsKWZ0gzUD9bWCXOtMPltt7Zoxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60570},"type":"module","engines":{"node":">=18"},"gitHead":"092672743f5e0f46b1d64ff2c82aa82885a8a45c","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.20_1782483470194_0.8537954502444127","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"next-zero-rpc","version":"0.1.21","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.21","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"b1c93f4f1ef87088e079cf97c854e771ad65dad6","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.21.tgz","fileCount":8,"integrity":"sha512-qyGFgxhpymXvYiDqWOO+qBSFuI8vYI/svKoAKxONX3c47LmUeEAQEaNgFvvbe4fNW3fSOu+meBKG7PONawJNrA==","signatures":[{"sig":"MEYCIQDKLs18cB+cK34yTr1jFSqBaDcnzsXrVo4lqHNCY2i+jAIhANp9aTHafZvcro/jAGI4f0P4c+p6u5PoQI8thbezIOQw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62313},"type":"module","engines":{"node":">=18"},"gitHead":"cbea1b5061895a42d18e8d765f13d7a423664c00","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.21_1782485737380_0.8662034449870608","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"next-zero-rpc","version":"0.1.22","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.22","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"3028eb07784d443cf2a1823351ee358d1c968b6c","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.22.tgz","fileCount":8,"integrity":"sha512-WBbGrerC3zJFWtrZf0V7br56sMHGygPpB/NIFgpc+nK6rvqkvNuTtLSXs6DgdyQL9iHqkAOLQdkAi4ts2QfzLw==","signatures":[{"sig":"MEUCIQCA3OblA/JIBvFmghiRxwiJA45xSkN0RfiDx/C8LbpdywIgL0pc1OsX0fh1skbqVRC3u9XZmtARMX3ZDQg6+G8NtLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62319},"type":"module","engines":{"node":">=18"},"gitHead":"7a7cfac6e2e479672ae04a82731270b335738bd3","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.22_1782543185159_0.1917173417258653","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"next-zero-rpc","version":"0.1.23","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.1.23","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"4f5c92aea14f707eaecd5c4f0b951ed4d085b410","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.1.23.tgz","fileCount":8,"integrity":"sha512-yQ1zjhg0I/8PXVBInUDbzA78AJQzKV6RFl+gjcvnHLQLQD6zHYMbCXihXzQqdQxalQnvG9mcrXJe2Qg7sE/nYQ==","signatures":[{"sig":"MEYCIQCvvmx2u5RP/t2bpk9dEYQl1Q6QZlJT82KnDjBzU2NaFgIhAIVUmuDgGRe+SwRqpPeRSkDHqAi6LOklG7S4gUQNorAQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67598},"type":"module","engines":{"node":">=18"},"gitHead":"f05ff704211d77f5a724ef0216da52f67b311f1d","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.1.23_1782553725632_0.091493883717499","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"next-zero-rpc","version":"0.2.0","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.2.0","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"954861627d187c4cbc89eee6fba8be45c767f1da","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.2.0.tgz","fileCount":8,"integrity":"sha512-/MhtQtd+dcWwTcnV4wxuQ1hamUDs/RY26vBO6Zsou2RLYlmrw9IqmMZcpv9+B4dwBgHIqmRFAisoUOHPB1CasQ==","signatures":[{"sig":"MEUCIQD9zDwkRoJYbdfnEjMjOQcfg6xNMVssBkkLvkgxIG8hiAIgLCDjR69kZq1d3Y/Q8z3FQkuk/W3udjRwmAfsbrX1WPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69273},"type":"module","engines":{"node":">=18"},"gitHead":"3bdff9fa73dd42285aca5eae07c9e3537e9d1f42","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.2.0_1782556077112_0.9839472172828749","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"next-zero-rpc","version":"0.2.1","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.2.1","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"6d7698433ac074fe05964a51835c3e4cb70507d7","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.2.1.tgz","fileCount":8,"integrity":"sha512-+e9znjEPDx8qCltK7VPb0kV8344tDET2Epx2vdjYMFiL4re9V5uNNU+GpvIWhSiP8rFvI1loE0xlS1u3WNsaoQ==","signatures":[{"sig":"MEUCIQDLmGRHDb5JQpdzv5H0nT9Myoww6OuVP+vQwTIs5CbjFAIgBqUeom/L9juDRXlnVr7grOozg0Bq9MI0032RffAE+tA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69069},"type":"module","engines":{"node":">=18"},"gitHead":"d293c976e3ffdb53950bdc583f3bf9a6e06af0c3","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.2.1_1782567793333_0.7357249293862005","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"next-zero-rpc","version":"0.2.2","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.2.2","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"577a54caf561497cc23e0d03eac9d18bc6d4aa8c","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.2.2.tgz","fileCount":8,"integrity":"sha512-QDQSJSpLXHCl9RP1Z8Sxig104fkQq/YQmJfsMP5bVOlehv+6oTMQ5nOGJa2+QIrbLv10SrDyYvmguaQJjQLCCQ==","signatures":[{"sig":"MEYCIQC75b252OX2/VNkAD/w4UUkaF7e+/IQhIlrT7Xpzgpo/AIhANzxzHlRsl2hNe+uzryb+cgf1vEsg9/WDl1dclvnxTPN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69048},"type":"module","engines":{"node":">=18"},"gitHead":"9b8bba97653219c354360e40057cfb95000932b4","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.2.2_1782570651686_0.4726697348256681","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"next-zero-rpc","version":"0.2.3","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.2.3","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"7a08a2bb527afa7103dc834787ce32b0179779aa","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.2.3.tgz","fileCount":8,"integrity":"sha512-IY8vTJxC0Rd3RjqhOqdfWK5Eux8nnsz9FX84IsAwZbHoxfPjU0bP5FFgdh1NWr6mN8kVUa7zQrXNvP6nQ102Zg==","signatures":[{"sig":"MEQCIDsgaUNva3QY9ITK1+EVfWLwcGiGEjhm67pwdaF8VrMPAiBreodHN6znZlLuwx4bb3t1CWS+FG5rHI5H0Yj6F05Kuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69326},"type":"module","engines":{"node":">=18"},"gitHead":"57821b0aff77ac492a8a344b3a982e02a7627582","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.2.3_1783086489367_0.5878636222676454","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"next-zero-rpc","version":"0.3.0","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.3.0","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"eeeec7caffe08b16bb6364f264120a5d06d9db4c","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.3.0.tgz","fileCount":9,"integrity":"sha512-44lUbQ7XSzTMx2oH6WFKvmDY6C3z+ATdTdSUXxQwlnXqZhPScCiYeFu2xyP13J6NrbO0OWqsakN9y8IgTaCOcQ==","signatures":[{"sig":"MEYCIQC+CmRgcLX52cOPeA7UmSbk+TbCprK7GaY9HIk3kXACzQIhAJWd6e7+4uxJEId8UPLBKaw9fCIobMXWtOd3qNUH49iQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66171},"type":"module","engines":{"node":">=18"},"gitHead":"4a0fe014e1202fc3233b71c0f9aec7225ef360a9","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.3.0_1783139264410_0.6976113446023695","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"next-zero-rpc","version":"0.3.1","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.3.1","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"39c926f537461a7d0503b12e1296beba96c4e2c4","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.3.1.tgz","fileCount":9,"integrity":"sha512-wailQcwRXt1v6MV4IIPOZJUDir5k+GCBqJoPcXtAuLOqDTntgJPDTV9BXPsq7grqr4hnxfQGTMtH5ZxtlaYxZg==","signatures":[{"sig":"MEYCIQCWlcPj2EvVGbuj7wUfu9nLVkFiSS31MbUZa1/nlYbRiwIhAIwNMP5VHaj8kcZ4iHl91QLKi07OFHxY4j+R7yRvxtBG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63259},"type":"module","engines":{"node":">=18"},"gitHead":"8bc695d9ab612296c5010e3f797dfef7299ee960","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.3.1_1783144554586_0.058480267661771945","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"next-zero-rpc","version":"0.3.2","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.3.2","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"a53a8be91ab10e8d55ec96a25f958d953df4ac00","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.3.2.tgz","fileCount":9,"integrity":"sha512-hnhj0GMCIoxDLouK29zlUxOudB7ukURS3GvEel7meDzzuW6NeYpNO4VxcARbdlW0yk3u5wFU38usyXe98HlFmQ==","signatures":[{"sig":"MEUCIQDLre5QAv8IdTtIUP7u8txkkCi3OegiZveasV89xAwrngIgXGYnrcq08LzEWKv27fIC9bbx7VarFkugpKMAlScqmp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63286},"type":"module","engines":{"node":">=18"},"gitHead":"b62fb9bd81d0bd20991090eb5dba34af64e062b0","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.3.2_1783146673018_0.7979290164545345","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"next-zero-rpc","version":"0.4.0","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.0","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"98228c63402283c04c10e09a0f90e97b8eceb4e3","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.0.tgz","fileCount":11,"integrity":"sha512-fszR0yF0ldiCivdwPNP4v63hWE6EdBECKlchEEqLj77fA6yVQnhK4sAa/6xDV3EKoVchVmTvjJtiBui29wGeZw==","signatures":[{"sig":"MEUCIGYhi/QbbvToEtOg8tI+5ZHbScwwP1QKD3X1kjJci1jTAiEAm5t07000CGKRF4FSV8PSc1reiKBL8EcrAn+Y+X9t/7k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76233},"type":"module","engines":{"node":">=18"},"gitHead":"9eed450d5c83fde5f64990d91623b5b8060af651","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.0_1783148978263_0.3870655674136716","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"next-zero-rpc","version":"0.4.1","keywords":["nextjs","typescript","rpc","type-safe","fetch","api","codegen"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.1","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"dc75552e84b8a80bce247f62c7d1888e0b723f83","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.1.tgz","fileCount":11,"integrity":"sha512-5Hogp7s9QVx5T+HZP0tTfvyYuouKclvLoM0UJBC/Qbv2Q9ENCHSANafixSl5wRXmYyzeXHijX3YgbHWBAufoaA==","signatures":[{"sig":"MEUCIQDkuK8RGoNEX2BCA4IP+udzGfL85QqOD9Sn8s811nUK9wIgcIQbu7mQ5/iAvQjJBEwgTQSS12xZOKiI8D0Jm783ETA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77902},"type":"module","engines":{"node":">=18"},"gitHead":"cd6711c72e7317f604896775b4c70e46aca02dbc","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, 1.8KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.1_1783149239949_0.6777050681394012","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"next-zero-rpc","version":"0.4.2","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.2","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"77faa91b1314175bd942d8c03924b926408dd0ac","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.2.tgz","fileCount":11,"integrity":"sha512-tj2rMJOjaZ2L4e10CuNmq6Qpb/fwnJ12tIuhda6ljjZPodaiGBcXzwecgXumRT/2V6O3/gmkZpVqFopH7EUj0A==","signatures":[{"sig":"MEUCIGTz1laAMRQ408wYcPCXwiQQT8qJiqhjjPWKYgDQiPREAiEAiSbt056a5MzuygkCsz0CH1KUtrH/uUyEVPj+2DOqu9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78063},"type":"module","engines":{"node":">=18"},"gitHead":"0ed765f1ade7984d66cd8ab9db4a55568f0423eb","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.2_1783152533896_0.2804621769670961","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"next-zero-rpc","version":"0.4.3","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.3","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"377179597603627e64aca7d1cc70050f92896e64","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.3.tgz","fileCount":11,"integrity":"sha512-xMDjM+GoE///+vCN2Nd+pCd25MHoYUrKVT4i+bLqTVh20MR6cBoUfA+w0Z5JNYkE1FkULjz/OMvQT4y24l51Rg==","signatures":[{"sig":"MEYCIQDt4nGFe6LYBmClgSKRnivJ8AMy+q0OqTPs32adGVnA/gIhAM+/LLv6djsD5BrxMyvX/FlkPiRs1q9tJGa7sJzbGr7a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77874},"type":"module","engines":{"node":">=18"},"gitHead":"b985ec8111a79c6af6db9c4c72881990a3f57a25","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.3_1783171242201_0.8349824736306666","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"next-zero-rpc","version":"0.4.4","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.4","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"02b8bf38d8a0613d8244395f52d98c12303c2c61","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.4.tgz","fileCount":11,"integrity":"sha512-eM1Et9LIC3l+PZGugp5ve6vYpgdzTdCaB2IUESe9Ob12hYMqzDs+IUUBcVk89rZZQjjvRyvSUQ5ifINhZA5dwg==","signatures":[{"sig":"MEYCIQDS0M2e6GkP7TqjT6tgpCDkvdhMvDwegPriihX5v4FvUwIhALeRoLl0TVrmduHfHwVA3Xmmfm/gw8rOMUZaBxnUmVOg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77334},"type":"module","engines":{"node":">=18"},"gitHead":"f80fa602ef906df88cde2f74448a17b008a9f64f","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.4_1783329330895_0.32104146587300475","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"next-zero-rpc","version":"0.4.5","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.5","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"6d35f3370067de52cf6ef1d251e95633f1a1e3fa","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.5.tgz","fileCount":11,"integrity":"sha512-QWLXJduFpLctOc3oK0d5iZpQSiGgQShaK8QpJb07juEMJ4WM2nKBX/JCZZm9VtbgyQ54uR1pb5KUOqzxeRybiw==","signatures":[{"sig":"MEYCIQDDG+JmFQlJkClTViXH0BXfBuGvjFxhPTj6aPIrlpaqVwIhAOfqfWueLMytUvlIQWuzAXvy1GECd3WxAC3ClLdVltSQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77220},"type":"module","engines":{"node":">=18"},"gitHead":"18a2edbb5aa5a00f086a19cb68078acb09ff48fe","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.5_1783329987390_0.18849482908505144","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"next-zero-rpc","version":"0.4.6","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.6","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"ab06ab114067fbd5473a9b17a7fb8ef807728884","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.6.tgz","fileCount":11,"integrity":"sha512-NljeTr9mVS3+mb/2lrTf2q/vJkb33h1uP6gicMDO1Fj8m3k03X1RHcSxczQXh8DbrXqlIg7ElpdIXyqpv3cRWQ==","signatures":[{"sig":"MEYCIQDQGeEKl23iUyRTuI0Hq8yh+UDzPV0KQUfhcUZYR6aMxgIhAMZ/LDj8GmB75C4nWL6uEfgIrCM5RXDnk+GNx4kT79FV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72247},"type":"module","engines":{"node":">=18"},"gitHead":"563237988e9a36c972ce4339bdaa1d843c047fd1","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.6_1783333878971_0.5919162028426406","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"next-zero-rpc","version":"0.4.7","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.7","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"d6d96251f1f1ffbb30a9f8c3d8780cd1ce5fe0e7","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.7.tgz","fileCount":11,"integrity":"sha512-bf6hDCsJFuj/7IAIK9hXyNHxvfsU5J31CPZl13Qmgs/XVGFEttD3DcFVPy3bwjGaN5rsz8V76Qlarug4+bK8zA==","signatures":[{"sig":"MEUCIFyapvcvnGxkSJwQtXnH5Oe1KJ9fdQdS/2YCyrTJY3QcAiEApptENLjF9MXihMOSjuAuhatPopsJYTjGCKk/94zbtdw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72532},"type":"module","engines":{"node":">=18"},"gitHead":"455d54013667b1535f90e1a9fe1be884af933aa3","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.7_1783342517834_0.38909996884726583","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"next-zero-rpc","version":"0.4.8","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.8","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"89505a043f9dce350b7365c2727151ae0b6980a8","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.8.tgz","fileCount":11,"integrity":"sha512-z+Bm3LYyX8x0uUQLNXOxfwyyKKPvO8LSc2wCUa9V3WFDQGigo18SYp7KH1wDqh0nj5PFZ7BzqwP4+uFqJb7vCw==","signatures":[{"sig":"MEUCIQChMrrpc9jkjIzxtuRNq4Q5kgjO7RkNgSHm1COkboXrqgIgSiCxU41u9/BA/boFePEXI+6Cwdpjoj542438SyQri6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72510},"type":"module","engines":{"node":">=18"},"gitHead":"aeab9f9eed30e20c359579978a4eee20aa9db511","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.8_1783344135478_0.5366193699955839","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"next-zero-rpc","version":"0.4.9","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.9","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"835851f774c7a2c4262b1666958369c10814dd76","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.9.tgz","fileCount":11,"integrity":"sha512-8xgLc+3+/c0GR+2rI0zd9dT3s/RUT/nE+Lh5KtQczDRhBlO2QwReP4QE5fw8otYt9SROmvxTNdZja98yCx5qkg==","signatures":[{"sig":"MEYCIQDUrWaVp090eGGyPuE4PgqRH33YlMOsZjnGTVok+RAEiwIhAPfgXDM6KiayVrzqs348cgpIpk5DMrbyAqE6mNhyun4s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71893},"type":"module","engines":{"node":">=18"},"gitHead":"06f94dc5fb85682237ab3c85b70528bf35699833","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.9_1783344775909_0.6402353165180543","host":"s3://npm-registry-packages-npm-production"}},"0.4.10":{"name":"next-zero-rpc","version":"0.4.10","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.10","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"cd6eea952f0e5ece5289e758d26923a470067ced","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.10.tgz","fileCount":11,"integrity":"sha512-I+p/Y4CDKpEIe4IUTeGYzWB9/WIdnACbgAkkGGKG/yl0qSZ2RuhLOYQ8D9rOwH+HhYJNU5WWsTgOXHM4r0x1ZA==","signatures":[{"sig":"MEUCIEpD2r+idf1vTRYOF6ec9kWWOI5CvJNPShNGRBaG4ke/AiEAjQdi1xavq7Tt1MpCe+eccSEpb0opcJ0nvbvfTgGmDMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71867},"type":"module","engines":{"node":">=18"},"gitHead":"ded19e2a62465277839475a8ef6f159538e49cfa","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.10_1783393545908_0.6321090179448314","host":"s3://npm-registry-packages-npm-production"}},"0.4.11":{"name":"next-zero-rpc","version":"0.4.11","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"author":{"name":"caocchinh"},"license":"MIT","_id":"next-zero-rpc@0.4.11","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"bin":{"next-zero-rpc":"bin/cli.mjs"},"dist":{"shasum":"7c7fef1699dcb46e58eff70cc2d158bd57bc877f","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.11.tgz","fileCount":11,"integrity":"sha512-dwU6S2osEevrHyf4IG8BqNKpbNUphh/g9wRO1tvA2FEhmEtOqogwGtEmhwLLFdbcHde3e+X1/oJSsyOWh5M34w==","signatures":[{"sig":"MEQCICBTmg3eJZgHF4f/gPkw9BZz2d5lUnaZqHbgw4ydPYu+AiAFZwayHYwvdvN4rQjTo4L+PMkALA1waacazTT5BuTm1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72334},"type":"module","engines":{"node":">=18"},"gitHead":"6f26a2bd505ef4bcb8d053df2b5a705869dd9970","_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"repository":{"url":"git+https://github.com/caocchinh/next-zero-rpc.git","type":"git"},"_npmVersion":"11.12.1","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-zero-rpc_0.4.11_1784958100348_0.9665872163399818","host":"s3://npm-registry-packages-npm-production"}},"0.4.12":{"name":"next-zero-rpc","version":"0.4.12","description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"license":"MIT","author":{"name":"caocchinh"},"type":"module","bin":{"next-zero-rpc":"bin/cli.mjs"},"repository":{"type":"git","url":"git+https://github.com/caocchinh/next-zero-rpc.git"},"homepage":"https://next-zero-rpc.vercel.app","bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"engines":{"node":">=18"},"gitHead":"c1266062c969adea0cbbb0817d7cf90ec490c34e","_id":"next-zero-rpc@0.4.12","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-IytiQDMhYwz+r4hh432Eqa7/gyejjxI5hSrS+biyD2Ct90EoFjEAFFldSTwF2IhSery5Dw0cINdCF1x3m82a4g==","shasum":"e82ed5b7fde8785cae4b0f928bdff0f8d07b4c36","tarball":"https://registry.npmjs.org/next-zero-rpc/-/next-zero-rpc-0.4.12.tgz","fileCount":11,"unpackedSize":72993,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCYc4Ls/Or+Sfm6a5AiIwWH1H8G1OmZARm8ulAmaYVLewIgXJahvVYgqomJ5CLNrdVLmOmYDExmg8+uV1ZsoY0LKi8="}]},"_npmUser":{"name":"caocchinh","email":"chinhcaocu@gmail.com"},"directories":{},"maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next-zero-rpc_0.4.12_1784960369736_0.3436492734570167"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-25T10:36:07.873Z","modified":"2026-07-25T06:19:30.016Z","0.1.0":"2026-06-25T10:36:08.182Z","0.1.1":"2026-06-25T10:40:19.081Z","0.1.2":"2026-06-25T10:42:14.507Z","0.1.3":"2026-06-25T11:20:45.080Z","0.1.4":"2026-06-25T11:26:10.039Z","0.1.5":"2026-06-25T12:07:38.946Z","0.1.6":"2026-06-25T15:14:07.761Z","0.1.7":"2026-06-25T15:41:34.339Z","0.1.8":"2026-06-25T15:50:11.758Z","0.1.9":"2026-06-26T02:25:45.260Z","0.1.10":"2026-06-26T04:01:34.766Z","0.1.11":"2026-06-26T05:12:07.254Z","0.1.12":"2026-06-26T05:25:05.945Z","0.1.13":"2026-06-26T05:31:07.910Z","0.1.14":"2026-06-26T07:47:55.028Z","0.1.15":"2026-06-26T08:36:26.169Z","0.1.16":"2026-06-26T09:38:07.134Z","0.1.17":"2026-06-26T10:54:22.070Z","0.1.18":"2026-06-26T11:11:44.179Z","0.1.19":"2026-06-26T13:39:06.977Z","0.1.20":"2026-06-26T14:17:50.368Z","0.1.21":"2026-06-26T14:55:37.523Z","0.1.22":"2026-06-27T06:53:05.316Z","0.1.23":"2026-06-27T09:48:45.770Z","0.2.0":"2026-06-27T10:27:57.277Z","0.2.1":"2026-06-27T13:43:13.502Z","0.2.2":"2026-06-27T14:30:51.830Z","0.2.3":"2026-07-03T13:48:09.508Z","0.3.0":"2026-07-04T04:27:44.539Z","0.3.1":"2026-07-04T05:55:54.741Z","0.3.2":"2026-07-04T06:31:13.173Z","0.4.0":"2026-07-04T07:09:38.428Z","0.4.1":"2026-07-04T07:14:00.067Z","0.4.2":"2026-07-04T08:08:54.064Z","0.4.3":"2026-07-04T13:20:42.343Z","0.4.4":"2026-07-06T09:15:31.037Z","0.4.5":"2026-07-06T09:26:27.545Z","0.4.6":"2026-07-06T10:31:19.106Z","0.4.7":"2026-07-06T12:55:17.995Z","0.4.8":"2026-07-06T13:22:15.637Z","0.4.9":"2026-07-06T13:32:56.030Z","0.4.10":"2026-07-07T03:05:46.062Z","0.4.11":"2026-07-25T05:41:40.482Z","0.4.12":"2026-07-25T06:19:29.889Z"},"bugs":{"url":"https://github.com/caocchinh/next-zero-rpc/issues"},"author":{"name":"caocchinh"},"license":"MIT","homepage":"https://next-zero-rpc.vercel.app","keywords":["nextjs","next-app-router","app-router","typescript","rpc","type-safe","fetch","fetch-wrapper","api","codegen","type-inference","zero-dependency","zero-config","error-handling","next-js"],"repository":{"type":"git","url":"git+https://github.com/caocchinh/next-zero-rpc.git"},"description":"Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.","maintainers":[{"name":"caocchinh","email":"chinhcaocu@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/caocchinh/next-zero-rpc/main/logo.svg\" width=\"60\" alt=\"next-zero-rpc logo\" />\n</p>\n\n<h1 align=\"center\">next-zero-rpc</h1>\n\n<p align=\"center\">Type-safe fetch for Next.js API routes — zero dependencies, zero lock-in, ~0.9KB runtime.</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/next-zero-rpc\"><img src=\"https://img.shields.io/npm/v/next-zero-rpc.svg?style=flat-square\" alt=\"npm version\"></a>\n  <a href=\"https://www.npmjs.com/package/next-zero-rpc\"><img src=\"https://img.shields.io/npm/dm/next-zero-rpc.svg?style=flat-square\" alt=\"npm downloads\"></a>\n</p>\n\n```bash\nnpx next-zero-rpc init\n```\n\n**That's it.** Five files. Full type safety. ~0.9 KB runtime.\n\n## What it does\n\n`next-zero-rpc` gives you **compile-time type-safe `fetch`** for your Next.js App Router API routes — without changing how you write backends.\n\n```typescript\n// ✅ Full autocomplete on paths, methods, and response types\nconst [data, err] = await apiFetch(\"/api/users/123\", { method: \"GET\" });\n\n// ✅ TypeScript errors on invalid paths\nconst [data, err] = await apiFetch(\"/api/typo\", { method: \"GET\" }); // ← compile error\n\n// ✅ TypeScript errors on invalid methods\nconst [data, err] = await apiFetch(\"/api/users/123\", { method: \"DELETE\" }); // ← error if DELETE not exported\n\n// ✅ Multi-variable template literals — all segments resolve independently, still fully type-safe\nconst orgId = \"org-1\";\nconst projectId = \"proj-42\";\nconst taskId = \"task-99\";\nawait apiFetch(`/api/orgs/${orgId}/projects/${projectId}/tasks/${taskId}`, { method: \"PATCH\" });\n\n// ✅ Error type narrowing — err.code autocompletes only the errors THIS route can return\nif (err) {\n  const code = err.code;\n  switch (code) {\n    case \"auth:forbidden\": // ← only if this route uses createApiError(\"auth:forbidden\", ...)\n    case \"system:database-error\": // ← only if this route uses createApiError(\"system:database-error\", ...)\n    case \"system:unknown-error\": // ← always included as a fallback from apiFetch itself\n      break;\n    default:\n      assertNever(code); // ← TypeScript errors if you miss a case\n  }\n}\n```\n\n## When to use this\n\n**Use `next-zero-rpc` when:**\n\n- You're already writing plain Next.js App Router route handlers and want type-safe `fetch` calls _without restructuring your backend_\n- Per-route error code narrowing matters to you\n- You want a tiny client footprint (~0.9 KB) and zero ongoing npm dependencies\n\n## The Philosophy\n\n**You own the code, not the library.** `next-zero-rpc` is not a locked-in framework—it's a philosophy, a paradigm, and a set of methods for doing things. When you run `init`, we give you five files. From that moment on, they are _yours_ to modify, extend, or delete.\n\n- **Zero vendor lock-in** — There is no black-box `node_modules` dependency dictating your architecture. You own the fetch client, the error codes, and the registry generator. If the maintainer disappears tomorrow, you're not blocked.\n- **Zero boilerplate** — You write standard Next.js API route handlers using simple response helpers — no decorators, no schema registrations, no complex abstractions. The codegen reads what already exists and builds the type bridge automatically.\n- **Not a framework** — It's a type bridge. It infers what your route handlers return and gives your client code full type safety over those responses.\n- **Validation is yours** — Input validation (Zod, Valibot, Arktype, manual checks) stays inside your route handler where it belongs. This library doesn't impose a validation layer — that's a deliberate design choice.\n- **Non-invasive** — You don't adopt a new API definition pattern. Your routes are regular Next.js routes. The library is invisible.\n- **Architectural freedom** — Want to use Server-Sent Events (SSE), WebSockets, GraphQL, or custom streaming patterns alongside it? Go ahead. `next-zero-rpc` just drops five plain files (`apiClient.ts`, `apiRegistry.ts`, `pathResolver.ts`, `responses.ts`, `update-api-registry.mjs`) into your project; it doesn't take over your Next.js server. Study the generated files yourself to verify this claim—there's no hidden magic.\n\n## Setup\n\n### 1. Install\n\n```bash\nnpx next-zero-rpc init\n```\n\nDuring initialization, the CLI will ask you to choose your preferred response format: **Tuples** (`[data, error]`) or **Objects** (`{ data, error }`).\n\nThis copies 5 files into `lib/next-zero-rpc/` (or `src/lib/next-zero-rpc/` if your project uses the `src/` directory):\n\n| File                      | Purpose                                     | Client bundle         | Server bundle       |\n| ------------------------- | ------------------------------------------- | --------------------- | ------------------- |\n| `apiClient.ts`            | Type-safe fetch wrapper                     | ✅ (~0.7 KB minified) | ❌                  |\n| `apiRegistry.ts`          | Auto-generated route type registry          | ❌ (types only)       | ❌ (types only)     |\n| `pathResolver.ts`         | Trie-based path resolution & type inference | ❌ (types only)       | ❌ (types only)     |\n| `responses.ts`            | Error/success helpers + error codes         | ✅ (~0.2 KB minified) | ✅ (server helpers) |\n| `update-api-registry.mjs` | Code generator + Next.js plugin             | ❌                    | ❌ (dev only)       |\n\n_\\* From `responses.ts`: Client gets `isApiErrorPayload` type guard (~50 bytes) and `assertNever` helper (~50 bytes). Server gets `createApiError`, `createApiSuccess`, `createServiceError`, `createServiceSuccess`, and HTTP status constants. `ERROR_CODES` are types only and erased at runtime, though some bundlers may include them until production tree-shaking removes them. Total client runtime: **~0.9 KB minified**._\n\nThe CLI also:\n\n- Runs the registry generator once to detect existing routes\n- Adds an `\"infer-api\"` script to your `package.json` for manual regeneration\n\n### 2. Add the plugin to `next.config.ts`\n\n```typescript\n// If using src/ directory:\nimport { withApiRegistry } from \"./src/lib/next-zero-rpc/update-api-registry.mjs\";\n\n// If NOT using src/ directory:\nimport { withApiRegistry } from \"./lib/next-zero-rpc/update-api-registry.mjs\";\n\nconst nextConfig = {};\n\nexport default withApiRegistry(nextConfig);\n```\n\nThe plugin auto-updates `apiRegistry.ts` whenever you create, modify, or delete `route.ts` files during development. In production builds, it runs once and skips the file watcher.\n\n### 3. Use it\n\n#### Route handlers — `createApiSuccess` / `createApiError`\n\n```typescript\n// app/api/users/[userId]/route.ts\nimport {\n  createApiSuccess,\n  createApiError,\n  HTTP_STATUS_ERROR,\n  HTTP_STATUS_SUCCESS,\n} from \"@/lib/next-zero-rpc/responses\";\n\nexport async function GET(req: Request, { params }: { params: Promise<{ userId: string }> }) {\n  const { userId } = await params;\n  const user = await db.users.find(userId);\n\n  if (!user) {\n    return createApiError(\"resource:not-found\", HTTP_STATUS_ERROR.NOT_FOUND);\n  }\n\n  return createApiSuccess({ id: user.id, name: user.name });\n}\n\nexport async function DELETE(req: Request, { params }: { params: Promise<{ userId: string }> }) {\n  const { userId } = await params;\n  await db.users.delete(userId);\n\n  // 204 No Content — no body per HTTP spec\n  return createApiSuccess();\n}\n```\n\n> [!IMPORTANT]\n> **Always `export` your HTTP method handlers** (`GET`, `POST`, `PUT`, `PATCH`, `DELETE`). If a method is not exported, it will not be inferred by the TypeScript type bridge and will not receive type safety.\n\n#### Client components — `apiFetch`\n\n```typescript\n\"use client\";\nimport { apiFetch } from \"@/lib/next-zero-rpc/apiClient\";\n\nconst [data, err] = await apiFetch(\"/api/users/123\", { method: \"GET\" });\n\nif (err) {\n  console.error(err.code, err.message); // err.code is narrowed to only this route's errors\n} else {\n  console.log(data.name); // ← fully typed, payload returned directly\n}\n```\n\n## Features\n\n### Error Type Narrowing\n\nThe standout feature: when you check `err.code` after an `apiFetch` call, TypeScript narrows the union to **only the error codes that specific route handler can actually return** — not every error code in the system.\n\n```typescript\n// Route handler returns createApiError(\"auth:unauthorized\", 401)\n//                    or createApiError(\"validation:missing-required-fields\", 400)\n\nconst [data, err] = await apiFetch(\"/api/auth/login\", { method: \"POST\" });\n\nif (err) {\n  // err.code is: \"auth:unauthorized\" | \"validation:missing-required-fields\" | \"validation:invalid-payload\" | \"system:unknown-error\"\n  // NOT the full 37+ error code union — only what this route can produce\n  // (system:unknown-error is always included as a fallback from apiFetch itself)\n}\n```\n\nThis works because:\n\n1. `createApiError` is generic: `createApiError<C extends ErrorCode>(code: C, ...) → NextResponse<ApiErrorPayload<C>>`\n2. TypeScript infers the literal `C` from each call site in your handler\n3. `UnwrapNextResponse` extracts the union of all `ApiErrorPayload<C>` types from the handler's return type\n4. The client sees only those specific error codes\n\n### Predictable Returns (Tuples or Objects)\n\nEvery `apiFetch` call returns a predictable response — never throws. Depending on what you choose during setup, you can use:\n\n**Tuples (Default)**:\n\n```typescript\nconst [data, err] = await apiFetch(\"/api/orders/checkout\", {\n  method: \"POST\",\n  body: JSON.stringify({ ticketId: \"abc\", quantity: 2 }),\n});\n```\n\n**Objects**:\n\n```typescript\nconst { data, error: err } = await apiFetch(\"/api/orders/checkout\", {\n  method: \"POST\",\n  body: JSON.stringify({ ticketId: \"abc\", quantity: 2 }),\n});\n```\n\nRegardless of your choice, the result is fully typed:\n\n```typescript\nif (err) {\n  // Handle error — err is fully typed with route-specific error codes\n  return;\n}\n\n// data is fully typed — no casting needed\nconsole.log(data.orderId, data.status);\n```\n\n### Exhaustive Error Checking\n\nUse `assertNever` to guarantee you handle every possible error code at compile time:\n\n```typescript\nimport { assertNever } from \"@/lib/next-zero-rpc/responses\";\n\nconst [data, err] = await apiFetch(\"/api/users/123\", { method: \"GET\" });\n\nif (err) {\n  const code = err.code;\n  switch (code) {\n    case \"system:database-error\":\n      showToast(\"Database error, please try again\");\n      break;\n    case \"system:unknown-error\":\n      showToast(\"Something went wrong\");\n      break;\n    default:\n      assertNever(code); // ← TypeScript errors if you miss a case\n  }\n  return;\n}\n```\n\n### Dynamic Route Matching\n\nThe type system supports Next.js dynamic segments and catch-all routes:\n\n```typescript\n// Dynamic segments: [id], [userId], [slug]\nconst [data, err] = await apiFetch(\"/api/users/abc-123\", { method: \"GET\" });\n\n// Catch-all segments: [...catchall]\nconst [data, err] = await apiFetch(\"/api/extreme/org1/projects/proj1/tasks/a/b/c\", {\n  method: \"POST\",\n});\n\n// Optional catch-all segments: [[...slug]] (zero or more segments)\nconst [data, err] = await apiFetch(\"/api/docs\", { method: \"GET\" }); // zero segments\nconst [data, err] = await apiFetch(\"/api/docs/getting-started/intro\", { method: \"GET\" }); // multiple segments\n\n// Query strings are stripped before matching\nconst [data, err] = await apiFetch(\"/api/users/123?include=profile\", { method: \"GET\" });\n```\n\n### Static vs Dynamic Route Precedence\n\nIf you have overlapping static and dynamic routes (e.g., `/api/users/active` and `/api/users/[userId]`), `next-zero-rpc` correctly gives **exact static matches precedence** over dynamic segments at compile time.\n\n```typescript\n// Safely infers the type of the `active` route, completely ignoring the `[userId]` route\nconst [activeUsers] = await apiFetch(\"/api/users/active\", { method: \"GET\" });\n\n// Safely infers the type of the `[userId]` route\nconst [singleUser] = await apiFetch(\"/api/users/123\", { method: \"GET\" });\n```\n\n### Route Groups Support\n\nNext.js route groups like `(groupName)` are natively supported. They are automatically ignored in the URL path mapping and the generated TypeScript types, perfectly matching Next.js behavior:\n\n```typescript\n// File: app/api/(admin)/users/route.ts\n\n// The fetch URL correctly skips the (admin) group\nconst [data, err] = await apiFetch(\"/api/users\", { method: \"GET\" });\n```\n\n> [!NOTE]\n> **Conflict-safe:** You don't have to worry about multiple route groups accidentally mapping to the exact same generated TypeScript identifier. Next.js enforces uniqueness during development and at build time. It will automatically raise a `Conflicting routes at /api/...` error if you try to create two identical endpoints (e.g., `(admin)/users/route.ts` and `(public)/users/route.ts`).\n\n### HTTP Method Validation\n\nTypeScript only allows methods that your route handler actually exports:\n\n```typescript\n// If route.ts only exports GET and POST:\nawait apiFetch(\"/api/auth/login\", { method: \"POST\" }); // ✅\nawait apiFetch(\"/api/auth/login\", { method: \"GET\" }); // ✅ (if exported)\nawait apiFetch(\"/api/auth/login\", { method: \"DELETE\" }); // ❌ compile error\n```\n\n### Function Overloading on `createApiSuccess`\n\n`createApiSuccess` uses TypeScript function overloading for precise return types:\n\n```typescript\n// With data → NextResponse<T>\nreturn createApiSuccess({ id: \"123\", name: \"John\" });\n\n// Without data (204) → NextResponse<undefined>\nreturn createApiSuccess();\n\n// Without data (explicit 200 OK) → NextResponse<undefined>\nreturn createApiSuccess(undefined, HTTP_STATUS_SUCCESS.OK);\n\n// The overload enforces: if statusCode is NO_CONTENT, data must be undefined\nreturn createApiSuccess({ id: \"123\" }, HTTP_STATUS_SUCCESS.NO_CONTENT); // ← type error\n```\n\n### Safely Handling Empty Responses\n\nThe `apiClient.ts` uses an incredibly robust approach to handle empty API responses, leveraging how Next.js and JavaScript parse JSON primitives.\n\nIf a route needs to return a `204 No Content` or an empty `200 OK`, `createApiSuccess(undefined)` intelligently evaluates to `new NextResponse(null)` to completely strip the HTTP body, avoiding Next.js `Response.json(undefined)` serialization crashes.\n\nOn the client side, `apiFetch` reads `res.text()` before attempting to parse JSON. Because valid JSON primitives like `0`, `null`, `false`, or `\"\"` serialize into strings with a length > 0 (e.g. `\"0\"`, `'\"\"'`), they evaluate to _truthy_ and are safely passed into `JSON.parse`. Only a genuinely empty HTTP body resolves to an empty string (`\"\"`), which evaluates to _falsy_, allowing the client to safely resolve `payload = undefined` without throwing a JSON syntax error.\n\n## API Reference\n\n### `responses.ts`\n\n#### Error Codes\n\nError codes follow a `prefix:description` convention enforced by the `PrefixedError<T>` template literal type. The built-in categories are:\n\n| Category       | Prefix        | Examples                                                   |\n| -------------- | ------------- | ---------------------------------------------------------- |\n| System         | `system:`     | `system:internal-server-error`, `system:database-error`    |\n| Authentication | `auth:`       | `auth:unauthorized`, `auth:token-expired`                  |\n| Validation     | `validation:` | `validation:invalid-payload`, `validation:duplicate-entry` |\n| Resource       | `resource:`   | `resource:not-found`, `resource:already-exists`            |\n| Network        | `network:`    | `network:timeout`, `network:connection-refused`            |\n| Upload         | `upload:`     | `upload:file-too-large`, `upload:quota-exceeded`           |\n\nTo add a custom category:\n\n```typescript\nexport const PAYMENT_ERRORS = [\n  \"payment:card-declined\",\n  \"payment:insufficient-funds\",\n  \"payment:expired-card\",\n] as const satisfies PrefixedError<\"payment\">[];\n\n// Then add to ERROR_CODES:\nexport const ERROR_CODES = [\n  ...SYSTEM_ERRORS,\n  ...AUTH_ERRORS,\n  ...VALIDATION_ERRORS,\n  ...RESOURCE_ERRORS,\n  ...NETWORK_ERRORS,\n  ...UPLOAD_ERRORS,\n  ...PAYMENT_ERRORS, // ← add here\n] as const;\n```\n\n#### HTTP Status Constants\n\nPre-defined, typed HTTP status code objects to prevent magic numbers:\n\n```typescript\nHTTP_STATUS_SUCCESS.OK; // 200\nHTTP_STATUS_SUCCESS.CREATED; // 201\nHTTP_STATUS_SUCCESS.ACCEPTED; // 202\nHTTP_STATUS_SUCCESS.NO_CONTENT; // 204\n\nHTTP_STATUS_ERROR.BAD_REQUEST; // 400\nHTTP_STATUS_ERROR.UNAUTHORIZED; // 401\nHTTP_STATUS_ERROR.FORBIDDEN; // 403\nHTTP_STATUS_ERROR.NOT_FOUND; // 404\nHTTP_STATUS_ERROR.METHOD_NOT_ALLOWED; // 405\nHTTP_STATUS_ERROR.NOT_ACCEPTABLE; // 406\nHTTP_STATUS_ERROR.CONFLICT; // 409\nHTTP_STATUS_ERROR.PAYLOAD_TOO_LARGE; // 413\nHTTP_STATUS_ERROR.UNPROCESSABLE_ENTITY; // 422\nHTTP_STATUS_ERROR.TOO_MANY_REQUESTS; // 429\nHTTP_STATUS_ERROR.INTERNAL_SERVER_ERROR; // 500\nHTTP_STATUS_ERROR.BAD_GATEWAY; // 502\nHTTP_STATUS_ERROR.SERVICE_UNAVAILABLE; // 503\nHTTP_STATUS_ERROR.GATEWAY_TIMEOUT; // 504\n```\n\n#### Types\n\n| Type                    | Description                                                                                                |\n| ----------------------- | ---------------------------------------------------------------------------------------------------------- |\n| `ErrorCode`             | Union of all error code string literals                                                                    |\n| `SuccessHttpStatusCode` | `200 \\| 201 \\| 202 \\| 204`                                                                                 |\n| `ErrorHttpStatusCode`   | `400 \\| 401 \\| 403 \\| ... \\| 504`                                                                          |\n| `ApiErrorPayload<C>`    | `{ code: C; details?: Record<string, string[]>; message?: string }` — generic over the specific error code |\n| `ServiceError<C>`       | `{ code: C; message: string; details?: ... }` — generic over the specific error code                       |\n| `ServiceResponse<S, E>` | `[S, null] \\| [null, E]` — Predictable return type for server actions                                      |\n\n#### Functions\n\n| Function                  | Signature                                                            | Description                            |\n| ------------------------- | -------------------------------------------------------------------- | -------------------------------------- |\n| `createApiError<C>`       | `(code: C, statusCode, options?) → NextResponse<ApiErrorPayload<C>>` | Create a typed API error response      |\n| `createApiSuccess<T>`     | `(data: T, statusCode?) → NextResponse<T>`                           | Create a typed API success response    |\n| `createApiSuccess`        | `(undefined, NO_CONTENT) → NextResponse<undefined>`                  | Overload for 204 No Content            |\n| `isApiErrorPayload`       | `(payload: unknown) → payload is ApiErrorPayload<ErrorCode>`         | Runtime type guard for error payloads  |\n| `createServiceError<C>`   | `(code: C, options?) → ServiceResponse<never, ServiceError<C>>`      | Predictable error for server actions   |\n| `createServiceSuccess<T>` | `(data: T) → ServiceResponse<T, never>`                              | Predictable success for server actions |\n| `createServiceSuccess`    | `() → ServiceResponse<undefined, never>`                             | Void success for server actions        |\n| `assertNever`             | `(value: never) → never`                                             | Compile-time exhaustiveness guard      |\n\n### `apiClient.ts`\n\n#### `apiFetch<Path, Method>(path, options)`\n\nType-safe fetch wrapper that returns predictable `[data, error]` tuples (or `{ data, error }` objects).\n\n**Type parameters:**\n\n- `Path` — validated against `KnownRoutes` at compile time\n- `Method` — restricted to only the HTTP methods exported by the matched route\n\n**Returns:** `Promise<[SuccessType, null] | [null, ErrorType | ApiErrorPayload<\"system:unknown-error\">]>` (or equivalent object).\n\n- **Success:** `[data, null]` where `data` is inferred from the route handler's `createApiSuccess` calls\n- **Error:** `[null, error]` where `error.code` is narrowed to only the error codes used in that route's `createApiError` calls, plus `\"system:unknown-error\"` as a fallback\n- **204 No Content:** `[undefined, null]`\n\n**Runtime behavior:**\n\n1. Handles `204 No Content` — returns `[undefined, null]` without parsing body\n2. Parses JSON responses based on `Content-Type` header\n3. Falls back to text for non-JSON responses\n4. Validates errors via `isApiErrorPayload` runtime type guard\n5. Catches network errors (offline, CORS) and wraps them as `system:unknown-error`\n\n### `apiRegistry.ts`\n\nAuto-generated file containing:\n\n1. **`KnownRoutes`** — A type map from route path strings to their `typeof` module types\n2. **`RouteTrie`** — A nested object type (prefix trie) keyed by path segment. Each node may have:\n   - `\"__terminal__\"`: the full route string if this node ends a route\n   - Literal segment keys: static segments (e.g. `\"users\"`, `\"api\"`)\n   - `\"[param]\"` keys: dynamic param segments\n   - `\"[...param]\"` keys: required catchall segments\n   - `\"[[...param]]\"` keys: optional catchall segments\n\n### `pathResolver.ts`\n\nType-level path resolution engine that resolves runtime paths to their registry entries using trie traversal:\n\n- **`TrieLookup<Node, Seg>`** — Looks up one segment in a trie node. Priority: exact literal match > dynamic `[param]` > catchall\n- **`CheckCatchallsInNode<Node, Head>`** — Checks if a trie node has a catchall child (`[...param]` or `[[...param]]`) that matches the remaining path\n- **`TrieWalk<Node, Segs>`** — Walks the trie segment by segment, resolving the full path to a terminal route key\n- **`Split<S>`** — Splits the input path string into a tuple of segments\n- **`StripQuery<Path>`** — Strips query string before matching\n- **`FindMatchingRoute<Path>`** — Resolves a runtime path to its `KnownRoutes` key (using an O(1) fast-path for exact static routes, falling back to trie walk)\n- **`CheckPath<Path>`** — Validates a path at compile time, falling back to autocomplete hints on mismatch\n- **`RouteMethods<Path>`** — Extracts the available HTTP methods for a resolved route\n- **`RouteSuccessResult<Path, M>`** — Extracts the success payload type from a route handler's return type\n- **`RouteErrorResult<Path, M>`** — Extracts the error payload type (narrowed `ApiErrorPayload<C>`) from a route handler's return type\n- **`UnwrapNextResponse<T>`** — Extracts the inner payload type `U` from a route handler returning `NextResponse<U>`\n\n### `update-api-registry.mjs`\n\nCode generator and Next.js plugin:\n\n- **`updateApiRegistry()`** — Scans `app/api/` for `route.ts` files, generates type imports and the `KnownRoutes` / `RouteTrie` types\n- **`withApiRegistry(nextConfig)`** — Next.js plugin that runs the generator on startup and watches for changes in development mode\n- Automatically detects `src/` vs root directory layout\n- Groups imports and type entries by top-level API directory\n- De-duplicates watcher setup via `globalThis.__apiRegistryWatcherSetup`\n- Debounces file system events (100ms) to prevent redundant regeneration\n\n## How it works\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                        Build / Dev Time                         │\n│                                                                 │\n│  app/api/***/route.ts  ──→  update-api-registry.mjs             │\n│                               │                                 │\n│                               ▼                                 │\n│                         apiRegistry.ts                          │\n│                    (KnownRoutes + RouteTrie)                    │\n│                               │                                 │\n│                               ▼                                 │\n│                        pathResolver.ts                          │\n│              (trie traversal + type inference)                  │\n│                               │                                 │\n│                               ▼                                 │\n│  apiClient.ts ◄──── TypeScript infers paths, methods,           │\n│                     success types, AND error types              │\n└─────────────────────────────────────────────────────────────────┘\n\n┌───────────────────────────────────────────────────────────────────┐\n│                         Runtime (~0.9 KB)                         │\n│                                                                   │\n│  apiFetch(\"/api/users/123\", { method: \"GET\" })                    │\n│       │                                                           │\n│       ▼                                                           │\n│  fetch(path, options)                                             │\n│       │                                                           │\n│       ├─ 204?          → [undefined, null]                        │\n│       ├─ JSON + ok?    → [payload, null]                          │\n│       ├─ JSON + !ok?   → [null, ApiErrorPayload]  (narrowed)      │\n│       ├─ non-JSON?     → [text, null]                             │\n│       └─ network fail? → [null, { code: \"system:unknown-error\" }] │\n└───────────────────────────────────────────────────────────────────┘\n```\n\n1. The `withApiRegistry` plugin scans your `app/api/` directory for `route.ts` files\n2. It generates `import type * as ...` statements in `apiRegistry.ts` mapping each route path to its module type, plus a `RouteTrie` for trie-based path matching\n3. `pathResolver.ts` walks the `RouteTrie` to resolve runtime paths (with dynamic segments, catch-alls, and query strings) to their `KnownRoutes` key, and extracts success/error types via `UnwrapNextResponse`\n4. `createApiError<C>` preserves the literal error code `C` in the return type, enabling per-route error narrowing\n5. `apiFetch` uses these types to validate paths, methods, and infer both success AND error shapes at compile time\n6. At runtime, `apiFetch` is just a thin `fetch` wrapper returning predictable `[data, error]` tuples (or objects)\n\nThe registry auto-updates when you create, modify, or delete route files during development.\n\n## Server Actions / Service Layer\n\nFor server-side code (server actions, service functions), use the predictable service helpers (these match your tuple/object preference):\n\n```typescript\n// services/user.ts\nimport { createServiceError, createServiceSuccess } from \"@/lib/next-zero-rpc/responses\";\n\nexport async function getUser(userId: string) {\n  const user = await db.users.find(userId);\n\n  if (!user) {\n    return createServiceError(\"resource:not-found\", { message: \"User not found\" });\n  }\n\n  return createServiceSuccess({ id: user.id, name: user.name });\n}\n\n// Usage in a server action or component:\nconst [user, err] = await getUser(\"123\");\n\nif (err) {\n  console.error(err.code, err.message);\n  return;\n}\n\nconsole.log(user.name);\n```\n\n## Customization\n\nSince you own all the source files, you can customize anything:\n\n- **Add error codes** — Add new arrays in `responses.ts` with the `PrefixedError<\"prefix\">` constraint\n- **Add auth headers** — Modify `apiFetch` to inject tokens automatically\n- **Add request body types** — Extend the type inference in `apiClient.ts`\n- **Change the output path** — Update `REGISTRY_FILE` in `update-api-registry.mjs`\n- **Override the generator** — The `withApiRegistry` plugin and `updateApiRegistry()` function are fully yours to modify\n\n## Examples\n\n### Run locally\n\n```bash\n# Clone just the example folder (no git history)\nnpx degit caocchinh/next-zero-rpc/examples/minimal my-app\ncd my-app\nnpm install\nnpm run dev\n```\n\n## CLI Usage\n\n```bash\nnpx next-zero-rpc              # Install files (same as init)\nnpx next-zero-rpc init         # Install files into your project\nnpx next-zero-rpc --force      # Overwrite existing files\nnpx next-zero-rpc --yes        # Skip prompts and use defaults (Tuples)\nnpx next-zero-rpc --help       # Show help\n```\n\n## Requirements\n\n| Requirement | Minimum Version | Reason                                     |\n| ----------- | --------------- | ------------------------------------------ |\n| Next.js     | **14.0**        | App Router (stable since 14.0)             |\n| TypeScript  | **4.9**         | `satisfies` keyword used in `responses.ts` |\n| Node.js     | **18**          | Native `fetch` API required by `apiFetch`  |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}