{"_id":"@jokio/rpc","_rev":"37-a5dcde7c4b5cf555bda75d5894ac92cf","name":"@jokio/rpc","dist-tags":{"latest":"2.0.0"},"versions":{"0.1.0":{"name":"@jokio/rpc","version":"0.1.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.1.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"e42c093bb59136ab81f4bf8da94fc555c718b28e","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.1.0.tgz","fileCount":9,"integrity":"sha512-uZAZ6icVaLZcsee26fT30HDTuwqugJsTb038hzLYlOHccFQ84coVXKRPFs7T87I190ngMThGqJQSNeqs1+HITg==","signatures":[{"sig":"MEUCIQCgL2gOxfe3or8IREYBOh+RHjuo9EQN5um3My33eUxMsAIgCCy2BXd9QOm7TNiLvp9psjYH1i6jCJVT3Q3k+5rL8Fg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34194},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"42d6678208baff03065c7fad65f00900cc5272fd","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.22.4","tsup":"^8.0.1","express":"^4.18.2","typescript":"^5.3.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0","express":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.1.0_1767459069817_0.47945159848208574","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@jokio/rpc","version":"0.1.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.1.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"969dc4d207864922f59feaac8e25fdc16c87856d","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.1.1.tgz","fileCount":9,"integrity":"sha512-j7Dd3R4i88uvttwHUfKij3AnJftaPtVFqVVsndTdXcSzJGWUJ2o4WSkcLcp5UBsPFvFWIUsCDUsoHozHX4LDEg==","signatures":[{"sig":"MEUCIQCTmEsJ66llAEPjd3zabb8f7WdGixcEcEygzkXypcG0DgIgFuPNGr2qXprLVeysWMTTQZVSxK+lC8Hzb6vkCBKCB78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34161},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"97a9cd97de372340e857e8876572d3583e88e91c","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.1.1_1767459511821_0.15666408168612778","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@jokio/rpc","version":"0.1.2","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.1.2","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"44fb14e455be6ee3029c2f81ff1c088ed0445a8d","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.1.2.tgz","fileCount":9,"integrity":"sha512-oIMenvWubhNP4bh56SsXLvOy+qifo5c3p3S1rgLJQPHJ578SECETqTLpJby6iAHl+PYVruW2viWpKOKSR5iuLA==","signatures":[{"sig":"MEYCIQC2b9i8XypYrKCyq3jm7gbCWfs/3afJ7MJSjDj/CQUCSAIhAJleKfnTAXdwPZDzd3B0TAIxSmbDwiwDlrUsfkAQKqxZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33547},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"4677cb5a4b524ade1a895468b8a073ce9b6dbbaa","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.1.2_1767460555219_0.6681699139874795","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@jokio/rpc","version":"0.2.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.2.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"b4d3ac380554b70c9151cfbe56fc4774dfd68ce7","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.2.0.tgz","fileCount":9,"integrity":"sha512-yDmmiTVk67mhQlb3HUSGMW+v0e1Jsk1FXVW8I6YEoEBSesCRbRRHfRheWMsWkfT0nC9SaqtUfBA1cCkYnA0mZQ==","signatures":[{"sig":"MEUCIFXZFGwdcjH0wXKNC1YDIavp6gfwYY63is2nF3VR/OaQAiEAiSmIFHPDEt9MiPmSku6lIOvoT3IzswpBkAK+qnMGv8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32998},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"ee439cd2e085211415a8c234d15be8846942597d","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.2.0_1767461404058_0.5217054360650752","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@jokio/rpc","version":"0.2.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.2.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"b61b9a2b0f7a97b5db1381ef9e83139500eabbb0","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.2.1.tgz","fileCount":9,"integrity":"sha512-lFExp+7HYRcMlPWnGY5xfat3f00a+u451Q40U2MySN4xtJ9Bbfp4KYXAZdXL+xWJREKiqoGiLks7yjJ7UsTBAw==","signatures":[{"sig":"MEYCIQDUHYzjxMN/EB4XMDl2W+PJwvIU1/wtfP3mJ33+/pPukwIhAKR4CyfUoOQeLBcevYMi2qA6LVxJKCrKbLlfCoND0yD5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33046},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d8546f534274dd1179bc8e2a05679cf8d33b92a3","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.2.1_1767464088233_0.557647764540224","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@jokio/rpc","version":"0.3.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.3.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"a51cd98a565c7df7d8c54dfbd406ad512246dc64","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.3.0.tgz","fileCount":9,"integrity":"sha512-/R/XjLvsNRH26W3/LLI3r59sortdI8yxSzIzn+pRgdcus5cYqkHEVOJy4BboBLGdE+Tev8u9EudhaLF4nFEHAQ==","signatures":[{"sig":"MEYCIQCsui5FGQPx+Mxr41UwrbInlbNpY9cC38sq9GC+UvrPTQIhAJt+8JjKpHmQzY0HuuEhhnL/2EcGSo9Anf2EHByzQVj+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34704},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"5c26b99201b381c69805759a806f5077c19f4806","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.3.0_1767468954869_0.27125357228776803","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@jokio/rpc","version":"0.3.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.3.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"3acc70a336c405a7e886aaf282b0e131e5448efd","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.3.1.tgz","fileCount":9,"integrity":"sha512-dEswT763plDtYC+xzG7Ew1XTkjBtsc4BTXVHRP/wIbjM6D0l9aFLJf9XpVTHJAt6MoBQsUV+aOUg+I/ar9A/Ug==","signatures":[{"sig":"MEQCIEC3Me2OddJnh47FCP45gnWOFnOCaWGmbX/9I/dAjfinAiBIoigbkXimkusyiBGOwztlcvnSZQoQzuIA61K3sD2voA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37667},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"b44ff9b10422959b8a5719ba74edee69cd305cda","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.3.1_1767470765451_0.91447377856068","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@jokio/rpc","version":"0.3.2","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.3.2","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"53c8dd93e75e0b9df0e0ac669920561e74cbbfc3","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.3.2.tgz","fileCount":9,"integrity":"sha512-a/hwoefFmLAYQoVkvMU+NwJo64bH1KKIn1lNgPOKdh8SkyoBtnBUoBpubXUgYxhvfFrQ/+qxdupKqijehjkKCQ==","signatures":[{"sig":"MEYCIQCotb6KLDAJRr5AMV/OuB+R1vOcaLucZGTOYl6PtdUnhAIhAO29zijT4yaf0rvQumXfpsgme9rTAkE5hrADSBWFJ5pm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39391},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a131d5071f9d0ee90fea47685669b636ab08e8cf","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.3.2_1767514423644_0.4870181179923758","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@jokio/rpc","version":"0.4.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.4.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"46c56ad81da4bdc48907e2f17f2d0b10cc1c2712","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.4.0.tgz","fileCount":9,"integrity":"sha512-cWjwdkivncd0AYiuwMMeXKfyiKjrENfKWxP5h3n2mdNdewtIvlyaKJMV5r4eYmwD3OqRBNubhAYDcnnXk1ZDgA==","signatures":[{"sig":"MEUCIGw47TKyHg9Vd2C019WPOcNxhE6vKd9VMG5O4DCjVkhpAiEAlgPcpMyjokmcDTz46YciMawtpWSaoMlNWkYF9YGrMhA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40482},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"931e5ff877fa10bcad7a0fa20d320d016d2180f2","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.4.0_1767520650758_0.8316256641610826","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@jokio/rpc","version":"0.4.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.4.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"13585a405ef4d55f4ac8d19c29da77b182ab4f6c","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.4.1.tgz","fileCount":9,"integrity":"sha512-0bcIiL7mK7ztKg7JDxxqs0CZTn+4xEQH+qmDHMlJ7Yiu4UGf8kCeO6xqgw0xi+YEAK4goPtQByFnq7Faybx8Wg==","signatures":[{"sig":"MEUCIQDVR4VQvcyNqlBnR+vh98qLQ8qr9HE9dv4jqyPChlnZywIgXxyuerlA9tj25t1iolk3kTlZI2ofUAhmCaqSouzUWAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39895},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"3d956853224549e5660cf791a435dc2ed422d1e2","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.4.1_1767521043066_0.6109989326229324","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@jokio/rpc","version":"0.5.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.5.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"59f66684170b61a39eb9f1075b4e075d952cc75a","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.5.0.tgz","fileCount":9,"integrity":"sha512-hrfGPcffX2DuE7Zq81tKUTzCkM1mxMQTv9tce6srhqX4crRjazXvI+sDBluay0ZONjLbMsskvtSai+DdLaZcOA==","signatures":[{"sig":"MEUCIHv5EpsqsXZkt7iDzRR6ej7OfbJ5crV+4PQnoI3tsTxqAiEAjgqf29xh2agRXZjY9AukEsaWy6KtMW0Kj/LQgMOkFco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40407},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"839c6c5c211af1c22ed893d7ef03beba81e12cb7","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.5.0_1767522102192_0.5950666339802668","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@jokio/rpc","version":"0.5.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.5.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"f1d5b6ca771a9354f0186e701305fbe7c4ecc648","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.5.1.tgz","fileCount":9,"integrity":"sha512-9utpen5GqcoJtSO6qqi3L37xivnD0MaimZMkYCOyaJsb6cRkbz30A4fMclNbzxcm2Vh+1PkZOM7fHsaHR5gwZw==","signatures":[{"sig":"MEUCICytSD+to3QdRdV31SmMYHd1WYZfhI75l3Abnn5R4v/RAiEAyVMretO8WeTwNi91D16KxswcHIt+F/N4CXKsDQJIlmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40407},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"8b715faf7edece4e726f9a96a0766972eb96efac","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.5.1_1767522498027_0.21711666290445675","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@jokio/rpc","version":"0.5.2","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.5.2","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"8f790e11d64867f78b6af12016390911341ca8be","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.5.2.tgz","fileCount":9,"integrity":"sha512-J/JMGm6IrfjHIFyiaeVKqh/PZwhe4+sz1Mz7MUMj+KKp9R7t6p3XIYpW/IYHrWg0uDTXBN7bkOOWTX+K5VQJjQ==","signatures":[{"sig":"MEUCIFiZMyqwtZUByqcborNMksaJ+3noyKB67l14ahzqwdtEAiEAgwP3SrsmgHmSaqCyjOPyW/2i5gQX5H2zSuUJtBSoeIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40460},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"00441a219150f83e3cff2b007c158eb9a859dfb8","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.5.2_1767524180678_0.6348437569794263","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@jokio/rpc","version":"0.5.3","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.5.3","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"18159f888282f1708098a18e2366b6b1746b3c8b","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.5.3.tgz","fileCount":9,"integrity":"sha512-aGtoCU39Vc4HIahx5htSkl7Yitg4ZV8QAW0a4by9vOR9Tk52pN7NIsNDYQJDCmdN1ZCfbW5B+NMVOBgDZP3Efg==","signatures":[{"sig":"MEUCIFl/PAMp643MX03btFx2XZqT1o7gdh6j1t+W20+6qeqVAiEA2SgXhjtxgNi+U/Rpc4yx4GPBulilaFyxhUvPK2Tcxn4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42148},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a6765292d6534b9bcec3bc1cdcfc55163f0f64e0","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.5.3_1767534334084_0.5641439904475629","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@jokio/rpc","version":"0.5.4","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.5.4","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"645ee444e1c5ef3d308d24fd936c8bdb96e504fe","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.5.4.tgz","fileCount":9,"integrity":"sha512-tZyR/+kgKbsFHFALagqmFjinwjJ/m7jFsYfBeyAePCj1GVqIhVVO3hzmYMuRpkPrtgsu3kT+R0DFqKlWc55f4w==","signatures":[{"sig":"MEUCIDT05KAhiRiUcj47+qRR0DrQ2JvkKGBsZqwcD9sbFtITAiEA2eviFyJOQ2SGJT2rb/+071SI3gpUQyquiHOXqOCTEZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42144},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a6765292d6534b9bcec3bc1cdcfc55163f0f64e0","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.5.4_1767534501152_0.005184742755244498","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@jokio/rpc","version":"0.6.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.6.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"2df3c55c9c48cd44af5261d29f748ed0ea2bef54","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.6.0.tgz","fileCount":9,"integrity":"sha512-23OHvq7lDuFgIT5X2yNv7VHHUmcb+D67dAGVw88rWVTa+/7Fe0R/MZUIPUfiZNVr7F90Eas8KAd5noJXDzojYQ==","signatures":[{"sig":"MEUCID+G9Qz3mBOUgHp5Z3YHQZb6FyQKMKxMuj2Y1Mw5/ySpAiEA9DlEEbqww5eVSdYrhS4XWwWQHeozyZZaJOOzAm+QMBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48978},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"1db589ed7a1d760edb875fda94399d412673fa2a","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.6.0_1767540288117_0.4634953757153666","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@jokio/rpc","version":"0.6.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.6.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"4abedffdadc441da1b5657bf68dd54c4a3006e6a","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.6.1.tgz","fileCount":9,"integrity":"sha512-AYrCABc6LnWFWDirgjHmNL6yXbUhZfkmoQ1+cWEOJxcF7lY+s3vHfjwqwxb+sJfaL5dFnM3yTa8HzIBNxaBJuQ==","signatures":[{"sig":"MEQCIHcaUTd7/L8Ua3iVEdJSDA0OWyxzDslea5CqpFrqbqhmAiBoZ5k0gEHfY0b4Y1hIZ5zdSAodneEuPS+bn5MX4HwI0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49028},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"c6c47b000549c8d59366fdecb373a5847410ddf5","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.6.1_1767540338854_0.3457652440007284","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@jokio/rpc","version":"0.6.2","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.6.2","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"023da7848c4db2e64512aa7d9b1f642a73401a92","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.6.2.tgz","fileCount":9,"integrity":"sha512-XD0tUkx6EL3GYLH3fF2uboGWyFo0p9HgPyWQOmJ/q60q4E76QKnuvI8bfFLDYAvTRsqlz4fLsrR7CcWZgTqF0g==","signatures":[{"sig":"MEUCICSw2ypb8BYjrKlF3lysCQX3rQWMj8Fc6vrrLcr1DziEAiEA1pmXynHs6dhPZrlCe/HRkg5ys1iz+Zis/b+HA/YnREE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49528},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"bc3b54b801bfd41b25d7d607a0996f35833213af","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.6.2_1767541312167_0.7130809674568674","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@jokio/rpc","version":"0.7.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.7.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"24c096189fe0fea1224feb59ecb0dca6f2f00112","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.7.0.tgz","fileCount":9,"integrity":"sha512-K3J0QsyQR1qpqkBRYXt6RGuWK7uRDRge13PT4Qzlw5aKLpqodR71hcjfY8wr++UUk8iEtPmza5Uh2F6TT7Zc2w==","signatures":[{"sig":"MEQCIHxyEdn18/KRezSJxSnav5B2e2kWGtSeD5wiLM2+XaK4AiArP79xqj6EXrEWh1vSrFvwz8mApt9Tz3NrSJ2XRgkFlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55110},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"823c21bea8ee985e8ebe322df790dba13a1acb1e","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.7.0_1767618479576_0.3918785298763898","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@jokio/rpc","version":"0.7.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.7.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"a148a3d1a1ce3d8336e17e0f1abd7f3530a6409f","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.7.1.tgz","fileCount":9,"integrity":"sha512-Auxv/HrfCKm9UHASKXer21+0v8tsrICYIsQFvv7GD2cBh9QuVReziV7YAQBurAqJp2rF/pXizY+FA+HBQ+3uOQ==","signatures":[{"sig":"MEQCIEXOrvVRWKZjlCRaR89M3SFLetjzuJD9PyYXZhEQxKd3AiBMvCKBcuclgj6U6LxxsoBx033d7bV2DTvSLJsVy510AA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57933},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"2623499b2f75abac2ddaa8b0be5eca0ecf7422ca","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.7.1_1767619751150_0.3687256521992366","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@jokio/rpc","version":"0.7.2","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.7.2","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"26b69781c355a829471f3e45a97ea34cf3358e19","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.7.2.tgz","fileCount":9,"integrity":"sha512-JI/s/3PW/bq0q09Q+QwhHExef2E/1THOdSSF12y/U/T5pOQpL1Zqzosgutu1xWJ0AJcz1jf8nxvdRR9u6oWZsw==","signatures":[{"sig":"MEUCIQCteB/ZHS2fpcedDiMBaBPSlIwO3z3ArOYffjgvYJCHagIgP607xDnms0FJVEpz/3SlP6lqsx9V5Vic2Rf0DeuvMP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57466},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"bda57d5acdac50d9ab01cb4cf95119a704fba30e","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.7.2_1767627341573_0.7181234014219711","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@jokio/rpc","version":"0.7.3","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.7.3","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"528072efbeeb8803edc5fb78302d6bc590c9e820","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.7.3.tgz","fileCount":9,"integrity":"sha512-vDTNLn3o1ZRAMQJKzteQQ+qGST9R15/6naj/6Gs7t+6DubSuR6W2ufRCGWAM92gWWlhihX8fu0LbWYxTCfBJ9Q==","signatures":[{"sig":"MEUCIQD1s4puIltkBMP7H9Hw52cUBW6AyOI6qDIexi8ara2w9QIgO+4Xw3uSeAv1yG7mvn8ushuCZkGQgIqeWTOzPkxZdm0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58052},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"0338ce59b557a4e132b03abcc42617d67b7dbedd","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.7.3_1767789765865_0.37251969942178476","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@jokio/rpc","version":"0.8.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.8.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"94e2612bab1430c57e53aebf989fd77ab67e6214","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.8.0.tgz","fileCount":9,"integrity":"sha512-mNoZ/9N0ixkpryyB7v2ga257+a5ZX+0f1xXc4UxjrfHQXukMbv/nvOGn9PFB+Nvx3ilwTRJG2XYXFsy3DqLTsA==","signatures":[{"sig":"MEQCIHOURz6vGWA42+s2px5bg1wJzL5TSTwv1LIgfCeFqWAJAiB4OxpzjH7JzpeS0Rq1X8enT1vIpGBlVRWmDGPCxjK0Ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58056},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"5eac074068028db30075163b2287cf7152faf9b5","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.8.0_1768215743882_0.8066024626165387","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@jokio/rpc","version":"0.8.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@0.8.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"495cbcc1441184bcbc892ad34fcdd83b0d6d8bec","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-0.8.1.tgz","fileCount":9,"integrity":"sha512-hiMX/nPd/n31DBlUXNZLPiAkBDVjFHGAPeD8Wla4nvPUMCRtcrcqNuEdRBfSDsDQckqaoFpiHitNmCXFc8eghw==","signatures":[{"sig":"MEUCICvQ2TT0BksfzpDZ/HZH7+F+0aYkux4JYCv6ks3S6qEgAiEArBGNrwdbE5LZH0E20lGsFwLTJBfPdrDNElawqSPvUsw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58406},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"5eac074068028db30075163b2287cf7152faf9b5","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_0.8.1_1768226394995_0.8084688058718164","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@jokio/rpc","version":"1.0.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.0.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"b3a9d6606e836001e01c75eac08482819ac182bc","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.0.0.tgz","fileCount":9,"integrity":"sha512-SfFxQrFFjWvJKf79rni5UNP0R+RwYYmFVr8P4zDt1ZPJtGHw+Wd6Zb+6LNbk0F4aWfsqYL9+8Iin8j0jFcNBYQ==","signatures":[{"sig":"MEUCIQCpYQP4rrQWoNbDLPS76WBoBXz9rWQZxrzE5FcfSNzabgIgcSVdLKXtFDnMSCjccPkENBGXfkWgCvBXXZySzadS+Eo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61996},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"bbdaa987547b6007eed1c32ce6503355c061617a","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.0.0_1771784930107_0.9140612716774927","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@jokio/rpc","version":"1.1.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.1.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"0ca44f0a1e295a4219cce54f270d22ef221f6d6d","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.1.0.tgz","fileCount":9,"integrity":"sha512-S3HdE67FY6MjRxy66wWbaDAwAJDMLIw7rB5Vb4vgdDpYlHoxQDKqgxnHy2glp0RzFRcJblnJHet9HfBfB74nyQ==","signatures":[{"sig":"MEUCIQCwQRlbKYENKzV2njJ804xooyGkmzRMTMwnVVXQpFlFpAIgVMwCr7sl7Z0nqsB+2qpX+h/GGhwjvA+y9v5bUI9HxJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62084},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"ceceea9f4b07ccd2dbeb97c1821e0a0d91846308","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.1.0_1771786273229_0.5331917048352557","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@jokio/rpc","version":"1.1.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.1.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"bee804f76e99d7000d231575e327b1f04c8f5996","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.1.1.tgz","fileCount":9,"integrity":"sha512-uPtGA8/6e+UxJ7CTFhMGNsiC6X4lsBFrJ/ts/efEPGu75/8bv0KSHvNa5uW3Spu4lhJhyMkukF2RsQ3nCUWumQ==","signatures":[{"sig":"MEUCIQDQf69X6fjK1VCbguvtDyIlGH9yP85k1RBBFqOS16hDdQIgdQW/i69DJFN7670CK5Up42WToQ+3epCZZT3iNkCFYno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62851},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"68b1c88feb883d5f122b81d611e546ad24a94367","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.1.1_1771832480850_0.6181545576433287","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@jokio/rpc","version":"1.2.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.2.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"f7c6c35066cc33c6cb6145126e7b9b188e7098bf","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.2.1.tgz","fileCount":9,"integrity":"sha512-foBRkTp6p7kPEwe+xx4ZO/6vuibuh6DzvL0MBaCD7zjpARRWsGXYPsGmiOQkU7QCVICHJpzbLZbvJhOTfZolZg==","signatures":[{"sig":"MEUCIQD0rVCo9EmviK/Fwxt1Jg6+HN6R6jOeepq2pso5nvZhNgIgdc1XWDhoZRtBn2ZsahBGrAhPLY++53zWrLaWrhXMd6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63223},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"77fe71dc451d200f9ffef3d6c9d40f91dcac393d","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.2.1_1771833016499_0.24921659787543504","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@jokio/rpc","version":"1.2.2","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.2.2","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"88a3be4241391bac4a3bd0db77ad42e76620cc45","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.2.2.tgz","fileCount":9,"integrity":"sha512-EPonC6aEDjLOxyipDUZJtVzUtJFm/fO9HDTcbB06XnY+mUbU9k9kmg23hXPO/OoE3PSf7wdUYucqiVWx6+Vg6A==","signatures":[{"sig":"MEUCIA7cP6fGlJ0q3y9PbOiCKoV76um92grs9kZ0SrxqsDxYAiEA0bJ7Gil6w4i9hNFfbAk0vgVovRUc6ZESCR2HdYAcpKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63575},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"9b5a667a86ca1760794d906cda8f4ad18aebd249","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.2.2_1771833945745_0.5996171308667","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@jokio/rpc","version":"1.2.3","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.2.3","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"bdc2fd9a229f236780db3b45b1b150b877d0bc26","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.2.3.tgz","fileCount":9,"integrity":"sha512-11evc6/sqkCPXwrPd1DcqKcBbwYf09xGTRSEQII8LpGh+/sc7N/Of1E2gRaVIe2Lmic4JQ2IZS1/wFDxj1vAVw==","signatures":[{"sig":"MEUCIQCv/8yUNu58lpP+eq6Qm5UVivgEJLRVTqBDF3hGOTR2EgIgLskCCckYs8OH5gZb2Dydkh9L0bfxy0uIv/JidDAOAA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63535},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"8bc6bcd2eadf47e2a694bf6c9379f0da1739f87b","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.2.3_1771834455219_0.46226174826935007","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@jokio/rpc","version":"1.3.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.3.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"bc569a7788fb0978e79da1a1fe95fc2516ec6235","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.3.0.tgz","fileCount":9,"integrity":"sha512-hiAE/yWth2gK+ThpivZSvDDUA1MjmuczVdR6UDBharQ4E8j9ZfqoTQjRZUD98Gk12HReb1lzIpdroW1XS2kpsw==","signatures":[{"sig":"MEQCIEYQieXjd3sCnuxh/LJ9c1GjSgSTVsoHLo5v3ybHGAVGAiB83NMViDnBj3UOnXzGNpLnbgG8hpZ+U5dsJq93MUtzjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62562},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"cc140c931f50c5882cb6c065f7bdf0c074654bb3","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.3.0_1773677148429_0.10644941630135785","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@jokio/rpc","version":"1.3.1","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.3.1","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"5b1c772db81c1e51e0076c5751a3ecf39b830b6b","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.3.1.tgz","fileCount":9,"integrity":"sha512-3jgXoSl9gPTZVNYKIA3Osi1puLwiXSBXhhwqLwlYIOlEp3avlp+4wKVh8hx5OPrqUWsoXxqWwwakaixvEsudIw==","signatures":[{"sig":"MEYCIQDcdnCOtecK5xIXmjKd4tavzb2o93zAwB3UEGPuEn+lewIhAKLedPb7oAQBLgtPxE+If4K10i7bxoLw/MoAEqH2PE9N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62566},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"7b39feeee2fa889d7051639def736e8ec1df3b8f","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.3.1_1773677583893_0.8289876046337461","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@jokio/rpc","version":"1.4.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.4.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"16d4110298d4845025b3889d2473df3b50893afd","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.4.0.tgz","fileCount":9,"integrity":"sha512-+FZOeM6B2ZS3oiOmh/wG3iKPCmIlLQIaLZgjQprMHjeLbbYhg7otPeM1P0KshQinPsdMLjAbOqgX6MHXWZUDTQ==","signatures":[{"sig":"MEYCIQCglk52MlF9X5OJHUAYWE2A1W8Rvp1ruNVWbqD6hA175AIhAO1tk5nBZsQMebnPSRhWY097UvFjpWVYu/pJCPufnjfV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62566},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"2506731362fbbba54cb224be6f330e430115d8f9","scripts":{"dev":"tsup --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","express":"^5.2.1","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.4.0_1777360960557_0.6284963288852765","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@jokio/rpc","version":"1.5.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.5.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"b38533ddb3198bc93bb2163407e59912e74f4506","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.5.0.tgz","fileCount":9,"integrity":"sha512-S0bdJ15qAyQItCtlD2NQ2bM27FZQC/F68LsUICBfRkJJqvnHTi2yv7t6hJPISptZVIEMJAgBCZv+6AmpAw3gQg==","signatures":[{"sig":"MEQCIEC1IgQy4B2v5sYJiAF8QdZgJz6wgXdzgpN4nPC9HzkZAiBv90piOZuEpyugOB9wuwDTSU+shbs8x7fElDP/Jy/1Qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66174},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"e488952f9c87742dbde59fc617fb3d00b201756e","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","vitest":"^4.1.5","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21","@types/supertest":"^7.2.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.5.0_1777887342115_0.36748287520731204","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@jokio/rpc","version":"1.6.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.6.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"5aa2492e1f82b56e9e9640cd29f66fdddb86f2ac","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.6.0.tgz","fileCount":9,"integrity":"sha512-21gwHW399H+CbBb1QVqdBPXlYHLvPl+pqdO6zkwTC0TOKNsAurncPfMui6mHfS9NGCwI50XhucAQaeX/s0Lu6A==","signatures":[{"sig":"MEUCIF2OpHFXQ4uhnLprqRLB0P03uE5NPWbOAWgayLbQWmheAiEAsZYPtlWGxzqjj/VJUhp96kLmBnbHtnue8FQUJPMuGUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66190},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"65a76ab59c507ce94420d09d7e4b090b5be9ff35","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","vitest":"^4.1.5","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21","@types/supertest":"^7.2.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.6.0_1777890796645_0.3273973003450923","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@jokio/rpc","version":"1.7.0","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework"],"author":"","license":"MIT","_id":"@jokio/rpc@1.7.0","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"homepage":"","dist":{"shasum":"3788feadc142e1034e777df39a8d173e7f33630e","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-1.7.0.tgz","fileCount":9,"integrity":"sha512-usbR1QvJsteMAXCqkA2owdsrFs66U3o1YXCld3fU0aQOQf3KSqzNlA80S7RukTLa2HGZP5WgDh+qDPo9xa5Sxg==","signatures":[{"sig":"MEUCIAWB+WBEwI8NwdLdNi743iQTIUfxJV4SrCiGyk1cYFXNAiEA/sF6mi2Y1GFo4mr2OSUfHz0I16U8ScjRmouU7Di4eCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66468},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"f2bbfb221ab7718635d27d4dbc6b17379a61cdc7","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"prettier":{"semi":false},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.4","tsup":"^8.0.1","vitest":"^4.1.5","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^20.10.0","@types/express":"^4.17.21","@types/supertest":"^7.2.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rpc_1.7.0_1779091685680_0.34340631773419905","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@jokio/rpc","version":"2.0.0","description":"Type-safe RPC framework with Zod validation for Express and TypeScript","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs","types":"./dist/index.d.ts"}},"prettier":{"semi":false},"scripts":{"build":"tsup && tsc -p tsconfig.build.json","dev":"tsup --watch","demo-api":"tsx demo/movies-api.ts","prepublishOnly":"npm run build","test":"vitest run"},"keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework","openapi"],"author":"","license":"MIT","peerDependencies":{"@modelcontextprotocol/node":"^2.0.0-beta.3","@modelcontextprotocol/server":"^2.0.0-beta.3","zod":"^4.0.0"},"peerDependenciesMeta":{"@modelcontextprotocol/node":{"optional":true},"@modelcontextprotocol/server":{"optional":true}},"devDependencies":{"@modelcontextprotocol/client":"^2.0.0-beta.3","@modelcontextprotocol/node":"^2.0.0-beta.3","@modelcontextprotocol/server":"^2.0.0-beta.3","@types/express":"^5.0.6","@types/node":"^26.1.0","@types/supertest":"^7.2.0","express":"^5.2.1","supertest":"^7.2.2","tsup":"^8.0.1","tsx":"^4.23.0","typescript":"^7.0.2","vitest":"^4.1.5","zod":"^4.3.4"},"repository":{"type":"git","url":"git+https://github.com/jokio/rpc.git"},"bugs":{"url":"https://github.com/jokio/rpc/issues"},"homepage":"https://github.com/jokio/rpc#readme","engines":{"node":">=20"},"packageManager":"npm@11.17.0","publishConfig":{"access":"public"},"allowScripts":{"esbuild@0.27.2":true,"esbuild@0.28.1":true,"fsevents@2.3.3":true},"_id":"@jokio/rpc@2.0.0","gitHead":"77a3f451dcb11eb6497a60555f20e27f43e03018","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-lKN5cJSB0GLGZOfAWAIMhLWmSPZgaOVxiuF1ppd0d6xN07SZf9iKRE1CIT0ASMJVEPvxEi8xjIECxIETgPFC+Q==","shasum":"8c4a4244717103221d01aa9ed5f223d7c728570a","tarball":"https://registry.npmjs.org/@jokio/rpc/-/rpc-2.0.0.tgz","fileCount":19,"unpackedSize":139374,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAjBsE2atRmANG+PYc1DL5Xv+dPatglDq9sH35Tv5BU1AiEAqBc0OsCp8K+2cr+y5wxxFL/b+F02cNYnpBTpPCWvw40="}]},"_npmUser":{"name":"ezeki","email":"ez@jok.io"},"directories":{},"maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rpc_2.0.0_1783854338910_0.0739359734744589"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-03T16:51:09.594Z","modified":"2026-07-12T11:05:39.235Z","0.1.0":"2026-01-03T16:51:10.002Z","0.1.1":"2026-01-03T16:58:31.988Z","0.1.2":"2026-01-03T17:15:55.396Z","0.2.0":"2026-01-03T17:30:04.219Z","0.2.1":"2026-01-03T18:14:48.372Z","0.3.0":"2026-01-03T19:35:55.035Z","0.3.1":"2026-01-03T20:06:05.600Z","0.3.2":"2026-01-04T08:13:43.788Z","0.4.0":"2026-01-04T09:57:30.946Z","0.4.1":"2026-01-04T10:04:03.233Z","0.5.0":"2026-01-04T10:21:42.348Z","0.5.1":"2026-01-04T10:28:18.168Z","0.5.2":"2026-01-04T10:56:20.863Z","0.5.3":"2026-01-04T13:45:34.225Z","0.5.4":"2026-01-04T13:48:21.318Z","0.6.0":"2026-01-04T15:24:48.267Z","0.6.1":"2026-01-04T15:25:39.000Z","0.6.2":"2026-01-04T15:41:52.351Z","0.7.0":"2026-01-05T13:07:59.752Z","0.7.1":"2026-01-05T13:29:11.282Z","0.7.2":"2026-01-05T15:35:41.713Z","0.7.3":"2026-01-07T12:42:46.013Z","0.8.0":"2026-01-12T11:02:24.026Z","0.8.1":"2026-01-12T13:59:55.139Z","1.0.0":"2026-02-22T18:28:50.263Z","1.1.0":"2026-02-22T18:51:13.366Z","1.1.1":"2026-02-23T07:41:20.994Z","1.2.1":"2026-02-23T07:50:16.640Z","1.2.2":"2026-02-23T08:05:45.875Z","1.2.3":"2026-02-23T08:14:15.363Z","1.3.0":"2026-03-16T16:05:48.598Z","1.3.1":"2026-03-16T16:13:04.041Z","1.4.0":"2026-04-28T07:22:40.745Z","1.5.0":"2026-05-04T09:35:42.250Z","1.6.0":"2026-05-04T10:33:16.809Z","1.7.0":"2026-05-18T08:08:05.809Z","2.0.0":"2026-07-12T11:05:39.106Z"},"license":"MIT","keywords":["rpc","typescript","zod","express","type-safe","api","validation","framework","openapi"],"repository":{"type":"git","url":"git+https://github.com/jokio/rpc.git"},"description":"Type-safe RPC framework with Zod validation for Express and TypeScript","maintainers":[{"name":"ezeki","email":"ez@jok.io"}],"readme":"# @jokio/rpc\n\nA type-safe RPC framework for TypeScript designed for Express servers and HTTP clients. Supports both Zod schemas (with runtime validation) and plain TypeScript types (for type safety without runtime overhead).\n\nAn implementation of [RESTspec](https://restspec.org/)\n\n<img width=\"400\" height=\"400\" alt=\"ChatGPT Image Jan 4, 2026 at 10_15_01 AM\" src=\"https://github.com/user-attachments/assets/5ca6462a-4d3a-46d6-ac09-31ecbc4d06fb\" />\n\n## Use Cases\n\n**Front-end → Backend** | **Backend → Backend**\n\n## Features\n\n- Full TypeScript type safety from server to client\n- Two route definition styles: **Zod schemas** (with runtime validation) or **plain TypeScript types** (type-only, no runtime overhead)\n- Express.js integration for server-side\n- Flexible fetch-based client with custom fetch support\n- Support for multiple HTTP methods (GET, POST, PUT, PATCH, DELETE, QUERY)\n- Path parameters, query parameters, and request payload validation\n- Automatic response validation\n- Optional OpenAPI 3.1 document generated from Zod schemas, served at `/openapi.json`\n- Optional MCP server exposing your routes as tools (via the MCP TypeScript SDK v2), served at `/mcp`\n- Optional per-route docs (`summary` / `description`) that feed both OpenAPI and MCP\n\n## Installation\n\n```bash\nnpm install @jokio/rpc\n\n# Optional: install zod if you want runtime validation\nnpm install zod\n```\n\n## Usage\n\n### 1. Define Your Routes\n\nYou can define routes using **Zod schemas** (enables runtime validation) or **plain TypeScript types** (type safety only, no runtime cost).\n\n#### Option A: Zod Schemas\n\n```typescript\nimport { defineRoutes } from \"@jokio/rpc\"\nimport { z } from \"zod\"\n\nconst routes = defineRoutes({\n  GET: {\n    \"/room/:id\": {\n      response: z.object({ name: z.string() }),\n    },\n    \"/rooms\": {\n      response: z.any(),\n    },\n  },\n  POST: {\n    \"/room\": {\n      payload: z.any(),\n      response: z.any(),\n    },\n  },\n})\n```\n\n#### Option B: Plain TypeScript Types\n\n```typescript\ntype ApiRoutes = {\n  GET: {\n    \"/room/:id\": {\n      response: { name: string }\n    }\n    \"/rooms\": {\n      response: { count: number }\n    }\n  }\n  POST: {\n    \"/room\": {\n      payload: { name: string }\n      response: number\n    }\n  }\n}\n```\n\n### 2. Set Up the Server\n\n#### With Zod Routes\n\n```typescript\nimport express from \"express\"\nimport { registerApiAndMcpRoutes } from \"@jokio/rpc\"\n\nconst app = express()\napp.use(express.json())\n\nconst { api, mcp } = registerApiAndMcpRoutes(\n  { api: express.Router(), mcp: express.Router() },\n  { routes },\n  {\n    GET: {\n      \"/room/:id\": ({ params }) => ({ name: params.id }),\n      \"/rooms\": () => ({ count: 10 }),\n    },\n    POST: {\n      \"/room\": ({ payload }) => ({ id: \"1\" }),\n    },\n  },\n)\n\napp.use(\"/api\", api)\napp.use(\"/mcp\", mcp)\napp.listen(3000)\n```\n\n#### With TypeScript Types\n\nWhen using plain TypeScript types, pass the type as a generic parameter. No `routes` object is needed — you get full type safety without runtime validation.\n\n```typescript\nregisterApiAndMcpRoutes<ApiRoutes, { userId: number }>(\n  { api: express.Router(), mcp: express.Router() },\n  { ctx: (req) => ({ userId: 123 }) },\n  {\n    GET: {\n      \"/room/:id\": ({ params }) => ({ name: params.id }),\n      \"/rooms\": (_, ctx) => ({ count: ctx.userId }),\n    },\n    POST: {\n      \"/room\": ({ payload }) => payload.name.length,\n    },\n  },\n)\n```\n\n### 3. Create a Type-Safe Client\n\n#### With Zod Routes\n\nThe client uses the Zod route definitions for both type inference and optional runtime validation.\n\n```typescript\nimport { createHttpClient } from \"@jokio/rpc\"\n\nconst client = createHttpClient(\"http://localhost:3000/api\", { routes })\n\n// Fully typed response — .name is inferred from the Zod schema\nconst room = await client.GET(\"/room/:id\")\nconsole.log(room.name)\n```\n\n#### With TypeScript Types\n\nWhen using plain TypeScript types, pass the type as a generic parameter. No `routes` object is needed.\n\n```typescript\nimport { createHttpClient } from \"@jokio/rpc\"\n\nconst client = createHttpClient<ApiRoutes>(\"http://localhost:3000/api\")\n\n// Fully typed response — .name is inferred from the ApiRoutes type\nconst room = await client.GET(\"/room/:id\")\nconsole.log(room.name)\n```\n\n## API Reference\n\n### `defineRoutes(routes)`\n\nHelper function to define routes with type inference.\n\n**Parameters:**\n\n- `routes`: Route definitions object containing method configurations (GET, POST, PUT, PATCH, DELETE, QUERY)\n\n**Route Configuration:**\n\nEach route accepts the following fields as either a Zod schema or a plain TypeScript type:\n\n- `payload`: Request body (not available for GET)\n- `queryParams`: Query parameters (optional)\n- `response`: Response data\n\n### `registerApiAndMcpRoutes(routers, config, handlers)`\n\nRegisters route handlers onto two separate Express routers with automatic\nvalidation: the REST/OpenAPI routes on `api` and the MCP endpoint on `mcp`, so\nthey can be mounted independently. Returns `{ api, mcp }`.\n\n**Parameters:**\n\n- `routers`: Object with `{ api, mcp }` Express Router instances\n- `config`: Configuration object\n  - `routes`: Optional route definitions object (Zod schemas — omit when using plain TS types)\n  - `ctx`: Optional function `(req: Request) => TContext` to provide context to handlers\n  - `validation`: Optional boolean to enable response validation (default: true)\n  - `schemaFile`: Optional string to expose route schemas at `/__routes` endpoint\n  - `openapi`: Optional boolean or options object to enable OpenAPI document generation (default: false, served at `/openapi.json` when enabled)\n  - `mcp`: Optional boolean or options object to enable the MCP server endpoint (default: false, served at the root of the `mcp` router — mount it under `/mcp` for a root-level `/mcp` endpoint)\n  - `docs`: Optional per-route `{ summary, description }` object, keyed by method and route — used by both OpenAPI and MCP\n- `handlers`: Handler functions for each route\n  - `GET`, `POST`, `PUT`, `PATCH`, `DELETE`, `QUERY`: Handler functions that receive `(data, ctx)` parameters\n    - `data.params`: Path parameters (e.g., `:id` in `/user/:id`)\n    - `data.payload`: Request payload (validated by Zod if schemas provided)\n    - `data.queryParams`: Query parameters (validated by Zod if schemas provided)\n\nWhen using plain TypeScript types, pass the type as a generic: `registerApiAndMcpRoutes<MyRoutes>(...)`. Zod validation is skipped since there are no schemas.\n\nThe legacy `registerExpressRoutes(router, config, handlers)` is still available: it registers everything (REST, OpenAPI and MCP) on a single router, with the MCP endpoint served at `/mcp` relative to where the router is mounted.\n\n### OpenAPI Document\n\nWhen enabled, an OpenAPI 3.1 document is generated from the Zod schemas and served at `/openapi.json` (relative to where the router is mounted). Only routes with registered handlers are documented.\n\n```typescript\n// Enable with defaults\nregisterApiAndMcpRoutes(routers, { routes, openapi: true }, handlers)\n\n// Or enable with options\nregisterApiAndMcpRoutes(\n  routers,\n  {\n    routes,\n    openapi: {\n      path: \"/docs/openapi.json\", // default: \"/openapi.json\"\n      info: { title: \"My API\", version: \"2.0.0\", description: \"...\" },\n      servers: [{ url: \"https://api.example.com\" }],\n    },\n  },\n  handlers,\n)\n```\n\nNotes:\n\n- Payload, query parameter, and response schemas are converted with Zod's built-in `z.toJSONSchema()` (requires zod v4).\n- `QUERY` routes are documented under the `query` operation (standardized in OpenAPI 3.2).\n- When using plain TypeScript types (no `routes` object), the document still lists paths and path parameters, but without schemas.\n\nYou can also generate the document yourself without serving it, e.g. to write it to a file:\n\n```typescript\nimport { generateOpenApiDocument } from \"@jokio/rpc\"\n\nconst doc = await generateOpenApiDocument(routes, handlers, {\n  info: { title: \"My API\", version: \"1.0.0\" },\n})\n```\n\n### MCP Server\n\nWhen enabled, your routes are exposed as MCP tools over Streamable HTTP at the root of the `mcp` router — mount it under `/mcp` for a root-level `/mcp` endpoint — so any MCP client (Claude, IDEs, agents) can call your API directly. Requires the optional peer dependencies:\n\n```bash\nnpm install @modelcontextprotocol/server@beta @modelcontextprotocol/node@beta\n```\n\n```typescript\n// Enable with defaults\nregisterApiAndMcpRoutes(routers, { routes, mcp: true }, handlers)\n\n// Or enable with options\nregisterApiAndMcpRoutes(\n  routers,\n  {\n    routes,\n    mcp: {\n      path: \"/\", // default: \"/\" (mount the mcp router under \"/mcp\")\n      name: \"my-api\", // default: \"api\"\n      version: \"2.0.0\", // default: \"1.0.0\"\n    },\n  },\n  handlers,\n)\n```\n\nHow it works:\n\n- Each registered handler becomes a tool named `<method>_<route>`, e.g. `GET /users/:id` → `get_users_id`.\n- Tool input is `{ params, queryParams, payload }`, built from the route's Zod schemas — the SDK validates arguments against them before your handler runs.\n- The handler result is returned as JSON text content.\n- `ctx` works the same as regular routes: it is derived from the live Express request of the MCP call.\n\n> [!WARNING]\n> Per-route `middleware` does **not** run for MCP tool calls. If your routes rely on middleware for auth, protect the MCP endpoint itself (e.g. mount auth middleware in front of the router) or enforce auth inside `ctx`/handlers.\n\n### Route Docs\n\nAdd optional `summary`/`description` per route via the `docs` config — they flow into the OpenAPI operations and MCP tool titles/descriptions:\n\n```typescript\nregisterApiAndMcpRoutes(\n  routers,\n  {\n    routes,\n    openapi: true,\n    mcp: true,\n    docs: {\n      GET: {\n        \"/users/:id\": {\n          summary: \"Get user\",\n          description: \"Fetch a single user by id\",\n        },\n      },\n    },\n  },\n  handlers,\n)\n```\n\nFor field-level documentation, use Zod's `.describe()` on schema fields — it flows into the generated JSON Schema automatically.\n\n### `createHttpClient(baseUrl, options)`\n\nCreates a type-safe HTTP client.\n\n**Parameters:**\n\n- `baseUrl`: Base URL for API requests\n- `options`: Client configuration options\n  - `routes`: Route definitions object (Zod schemas for type inference)\n  - `getHeaders`: Optional function that returns headers (sync or async)\n  - `fetch`: Optional custom fetch function (useful for Node.js or testing)\n  - `validate`: Enable client-side request validation (default: false)\n  - `debug`: Enable debug logging (default: false)\n\n## License\n\nMIT\n","readmeFilename":"README.md","homepage":"https://github.com/jokio/rpc#readme","bugs":{"url":"https://github.com/jokio/rpc/issues"}}