{"_id":"@sigx/serialize","_rev":"12-359b25a1669146993d80c1cb3a899715","name":"@sigx/serialize","dist-tags":{"latest":"1.0.1"},"versions":{"0.12.0":{"name":"@sigx/serialize","version":"0.12.0","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.12.0","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"16695ed81715732e7ae77fec316d3d078c8fd840","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.12.0.tgz","fileCount":11,"integrity":"sha512-9pdqsmw86pLmhHLaPcRLo03wz/vfy61K8G9MvjV2iQP2k6g8CcLmtnyErcAs6bVrNuJcJxsMXZAdRye36dGRsA==","signatures":[{"sig":"MEQCIE+mmWHNzrp9om5KQ/uoI7KkGDJ3tjsX4DBq+AS8iWexAiALGT2Jrg9SMLTHEFBag1Yw7O/EjlBKvmlEsrz7+njLLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57854},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.12.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"},"_resolved":"C:\\Users\\andy\\AppData\\Local\\Temp\\f5c0e1fa7f78d46ecbf0ae2576640403\\sigx-serialize-0.12.0.tgz","_integrity":"sha512-9pdqsmw86pLmhHLaPcRLo03wz/vfy61K8G9MvjV2iQP2k6g8CcLmtnyErcAs6bVrNuJcJxsMXZAdRye36dGRsA==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"10.9.4","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.12.0","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.12.0_1784626330860_0.32153340418644505","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@sigx/serialize","version":"0.13.0","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.13.0","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"96541f93d448ce6c58803dd2d91962e40592091d","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.13.0.tgz","fileCount":11,"integrity":"sha512-Yy9I2cQp2D7tBLHVuTY+bM9Zd6By9gz9m8kAlHkEnM4pfCMAtcsJvRbmRvYBOoMl/h8GuI9g4kXzIt75zLV4Kw==","signatures":[{"sig":"MEYCIQDDKwH8guQ4tCeXQU7VLs0XrrrBRiI3Hhf1PtRbZygs5wIhAJB28NW0riGC+hfUKSvVlCs4AaKLP10ufao6a6Z6IVqH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":69154},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.13.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/62b33b70b89656cd34b80efb66302aae/sigx-serialize-0.13.0.tgz","_integrity":"sha512-Yy9I2cQp2D7tBLHVuTY+bM9Zd6By9gz9m8kAlHkEnM4pfCMAtcsJvRbmRvYBOoMl/h8GuI9g4kXzIt75zLV4Kw==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.1","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.13.0","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.13.0_1784811414802_0.45426313913887095","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@sigx/serialize","version":"0.14.0","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.14.0","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"10b5a3881bd92c2c6e3ca8ec1eb71e518a69b6f0","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.14.0.tgz","fileCount":11,"integrity":"sha512-wFzjmQLHS+Vo7Afa0Mw9nqPgXgHQRNrb8kqQUxPqR+2Q7TZG03Lem7QaU4OCbZ9C1OYKsudccVFLiM1qJdzx5w==","signatures":[{"sig":"MEUCIBbkJwc8iNbx7Z+HcMD3DxV9l3qn1HEL363ltLk5AwheAiEA27YPlBWVPg5w26U64vslIfgyNAgLtIU9gk3iyZ+f5z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76387},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.14.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/46ec5b2c13a9b073cc1601dd00c2502c/sigx-serialize-0.14.0.tgz","_integrity":"sha512-wFzjmQLHS+Vo7Afa0Mw9nqPgXgHQRNrb8kqQUxPqR+2Q7TZG03Lem7QaU4OCbZ9C1OYKsudccVFLiM1qJdzx5w==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.1","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.14.0","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.14.0_1785328752997_0.8004800192822081","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@sigx/serialize","version":"0.15.0","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.15.0","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"847ce910584950d42091e13b6bed2580f1a2d8af","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.15.0.tgz","fileCount":18,"integrity":"sha512-GfqwwMmT/TKV1JZ4yZQbpjywzXgQLb2Bw7HSa37IBjKP1KUqtjHVY1seFf6eFZArPUflHLLUYWLQSavFtch+OQ==","signatures":[{"sig":"MEQCIBeVYMvrarqC5ntBOd5uNa4jim1ss0J2rtwuRZwfDofnAiA8IBwhFBdOyJE0HEK+sD4rd+9K3D7t+Tg8Hd2bJXpSvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140929},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.15.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"},"./bytes":{"types":"./dist/bytes.d.ts","import":"./dist/bytes.js","production":"./dist/bytes.prod.js","development":"./dist/bytes.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/02085368b48b2a22e81f4e794c9e82db/sigx-serialize-0.15.0.tgz","_integrity":"sha512-GfqwwMmT/TKV1JZ4yZQbpjywzXgQLb2Bw7HSa37IBjKP1KUqtjHVY1seFf6eFZArPUflHLLUYWLQSavFtch+OQ==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.2","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.15.0","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.15.0_1785852520670_0.3575484141834526","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@sigx/serialize","version":"0.15.1","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.15.1","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"2e0922f6e7d295c159d0a0f98192371723303ec7","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.15.1.tgz","fileCount":18,"integrity":"sha512-a2CGZKChrtdVi+5YA1tZ8Ut5Ge0UpblxDgm03mxDYw1OYu5psl5+JHg36icOZaC8f+fV65/awpwPIIla4XCsqw==","signatures":[{"sig":"MEUCIH1Ibt3k8WnPV1CVNs4e1lb3w9jbViaX40lJLk9rTQRIAiEA+PA1kULlCJ36PXb0rExLapjiuZyV84Fw4+iM1TZjZyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140929},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.15.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"},"./bytes":{"types":"./dist/bytes.d.ts","import":"./dist/bytes.js","production":"./dist/bytes.prod.js","development":"./dist/bytes.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/3df23c75f39d5b374ab98645cdb4869c/sigx-serialize-0.15.1.tgz","_integrity":"sha512-a2CGZKChrtdVi+5YA1tZ8Ut5Ge0UpblxDgm03mxDYw1OYu5psl5+JHg36icOZaC8f+fV65/awpwPIIla4XCsqw==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.2","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.15.1","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.15.1_1785867777692_0.022184089730181045","host":"s3://npm-registry-packages-npm-production"}},"0.15.2":{"name":"@sigx/serialize","version":"0.15.2","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.15.2","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"0591e592b18b4d8f02c085f8c68dd0441d20e78b","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.15.2.tgz","fileCount":18,"integrity":"sha512-bge2iGPcVm4zFSiEFjTunviDgCewQAQ3tywSOYLiTyDbCX0UZcD7W+pG4XtMPf7X16Mba30mfJxWTsZhx5SoCw==","signatures":[{"sig":"MEQCIEb975foMFs7sPwDdBeAxLxUnJrFgSkO/20C3pwOhrkHAiA+KuPHFoyCNlCoCaTtqAYEDm1P/ymS2HzzJlme2Ahobw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@0.15.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140929},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.15.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"},"./bytes":{"types":"./dist/bytes.d.ts","import":"./dist/bytes.js","production":"./dist/bytes.prod.js","development":"./dist/bytes.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/2ea2f5d57bf17f3752b467fdc7679613/sigx-serialize-0.15.2.tgz","_integrity":"sha512-bge2iGPcVm4zFSiEFjTunviDgCewQAQ3tywSOYLiTyDbCX0UZcD7W+pG4XtMPf7X16Mba30mfJxWTsZhx5SoCw==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.2","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.15.2","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.15.2_1785885736555_0.557511601841896","host":"s3://npm-registry-packages-npm-production"}},"0.15.3":{"name":"@sigx/serialize","version":"0.15.3","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.15.3","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"1a7de7330609e087b8750caa4e797bb985875cde","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.15.3.tgz","fileCount":18,"integrity":"sha512-93KwiHu7i/Y7VFkGpmOnMZV68ordBiIqX7xi62V7RywKFWjMeTeY8QSy+TMtcuMnSlJTLMuk6JS8ml4QC353iQ==","signatures":[{"sig":"MEQCIEy0LPgKTodSTCOIy9iF7bzkcvVx5fqtGPp/9HkaoOqEAiA6KvNujoJrA3tV2TNyXTuXL/OVbTUpmrN42ZlDnmcMEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@0.15.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140929},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.15.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"},"./bytes":{"types":"./dist/bytes.d.ts","import":"./dist/bytes.js","production":"./dist/bytes.prod.js","development":"./dist/bytes.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/1ed460617e4c2809119f85abb272bd17/sigx-serialize-0.15.3.tgz","_integrity":"sha512-93KwiHu7i/Y7VFkGpmOnMZV68ordBiIqX7xi62V7RywKFWjMeTeY8QSy+TMtcuMnSlJTLMuk6JS8ml4QC353iQ==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.2","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.15.3","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.15.3_1786082316315_0.3702706328523424","host":"s3://npm-registry-packages-npm-production"}},"0.15.4":{"name":"@sigx/serialize","version":"0.15.4","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.15.4","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"b6977e4d6eeb4a5535cd7d76c3d6e0295ebcca4c","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.15.4.tgz","fileCount":18,"integrity":"sha512-ssQKazwZGxSVSd3wXLS63Ns0m5j+7L4ag40Ej6q0Ez+aRLEZPTmlZYuWl/soNUY1KtCzXljl3y37GiWUUjmtPA==","signatures":[{"sig":"MEQCIFoKSL4DuHi0jw6pn5pT0zzRKqCw6njPdNU/u3g6V68aAiB8TzHyp8msdv/JkNWC3q/E9ZUKvQImgGU3IAMKOnIChg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@0.15.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140929},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.15.4.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"},"./bytes":{"types":"./dist/bytes.d.ts","import":"./dist/bytes.js","production":"./dist/bytes.prod.js","development":"./dist/bytes.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/4470dffed6aef6b74524789c79f5e069/sigx-serialize-0.15.4.tgz","_integrity":"sha512-ssQKazwZGxSVSd3wXLS63Ns0m5j+7L4ag40Ej6q0Ez+aRLEZPTmlZYuWl/soNUY1KtCzXljl3y37GiWUUjmtPA==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.2","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.15.4","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.15.4_1786651001514_0.02666951667973172","host":"s3://npm-registry-packages-npm-production"}},"0.15.5":{"name":"@sigx/serialize","version":"0.15.5","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.15.5","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"e33c16560665f3787970efeed7e6160732d14a77","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.15.5.tgz","fileCount":32,"integrity":"sha512-oWGVFN2g9ec9J1URR+vPQIQC1XIsX7mxafZnAxbf2pBKAF6gSnC/gh4zDCk+ydTYbpSeNS1+G946DVEvIxvTnA==","signatures":[{"sig":"MEUCIQCM4B9bQFLOl7o905+ndgZ4S7FPYSXJ8re4jFpGQXVi3AIgGKGGJwfwVnDqmEjZZVBrMwOXxXsSg1cT1u7lNbYoz64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@0.15.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":231091},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.15.5.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"},"./bytes":{"types":"./dist/bytes.d.ts","import":"./dist/bytes.js","production":"./dist/bytes.prod.js","development":"./dist/bytes.js"},"./stringify":{"types":"./dist/stringify.d.ts","import":"./dist/stringify.js","production":"./dist/stringify.prod.js","development":"./dist/stringify.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/079d3b75eba1f0b91ff2297519f98514/sigx-serialize-0.15.5.tgz","_integrity":"sha512-oWGVFN2g9ec9J1URR+vPQIQC1XIsX7mxafZnAxbf2pBKAF6gSnC/gh4zDCk+ydTYbpSeNS1+G946DVEvIxvTnA==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.2","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.15.5","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.15.5_1786779644167_0.49309711192903927","host":"s3://npm-registry-packages-npm-production"}},"0.15.6":{"name":"@sigx/serialize","version":"0.15.6","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@0.15.6","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"5a3a2e9a9f26f76721ad8ff3c2c2dd6b8e2db278","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-0.15.6.tgz","fileCount":32,"integrity":"sha512-bO5fbcdtAQ9GE9v2YSYqX3eln5zcVSXjVfqKupXMEn/nsR5Ol/9i0hNNsQmZLgBQYIHASBErfr9W+roI0iDqIg==","signatures":[{"sig":"MEYCIQDQEyLekOzslJNRc37QfIRbOoVKyfPnVPYIoqS8VQFvGQIhAMdKkHD7Y0bP9Nr0BQaZiT4iCk0svmMo7s3f3Sl9NFoI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@0.15.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":263886},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-0.15.6.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"},"./bytes":{"types":"./dist/bytes.d.ts","import":"./dist/bytes.js","production":"./dist/bytes.prod.js","development":"./dist/bytes.js"},"./stringify":{"types":"./dist/stringify.d.ts","import":"./dist/stringify.js","production":"./dist/stringify.prod.js","development":"./dist/stringify.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/0ae5e0a6010628cf95b22fcbda3236b9/sigx-serialize-0.15.6.tgz","_integrity":"sha512-bO5fbcdtAQ9GE9v2YSYqX3eln5zcVSXjVfqKupXMEn/nsR5Ol/9i0hNNsQmZLgBQYIHASBErfr9W+roI0iDqIg==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.2","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","esbuild":"^0.28.1","@sigx/vite":"^0.15.6","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_0.15.6_1786960824149_0.9055581216160271","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@sigx/serialize","version":"1.0.0","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"author":{"name":"Andreas Ekdahl"},"license":"MIT","_id":"@sigx/serialize@1.0.0","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"homepage":"https://sigx.dev/","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"1140163dbb174d34bd9b6e74a665de1f4d6a0b57","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-1.0.0.tgz","fileCount":32,"integrity":"sha512-CC6dqVlAmPZ5j8oBp/tNOGEJET7UftGXa+VQmvf+BK/vKoYuwQlCBCqLdAmeb2xKXz3TMjbNrXPaGnE5bhAC2Q==","signatures":[{"sig":"MEYCIQD7bt2EFZ44d60DmGqWtLDDznthT3RYw1p7ldkzVKRqrQIhAN22k0DcSnCcxOZX9PAEWuY08kX47MP7b5PRRLQBU/Lu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICpA2lCa+ZVuKp9zcsL7ShNDdBZW/6Z1TVpz7BLjbF8XAiAQbHaAqgL6quEU2+Cg1Oi7w/UliAuYrTZbzWBb7xTEyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":263959},"main":"./dist/index.js","type":"module","_from":"file:sigx-serialize-1.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"},"./bytes":{"types":"./dist/bytes.d.ts","import":"./dist/bytes.js","production":"./dist/bytes.prod.js","development":"./dist/bytes.js"},"./stringify":{"types":"./dist/stringify.d.ts","import":"./dist/stringify.js","production":"./dist/stringify.prod.js","development":"./dist/stringify.js"}},"scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"_resolved":"/tmp/2bb823c4130a92c55bcf09763f0334dd/sigx-serialize-1.0.0.tgz","_integrity":"sha512-CC6dqVlAmPZ5j8oBp/tNOGEJET7UftGXa+VQmvf+BK/vKoYuwQlCBCqLdAmeb2xKXz3TMjbNrXPaGnE5bhAC2Q==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.2","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.3.0","esbuild":"^0.28.2","@sigx/vite":"^1.0.0","typescript":"^7.0.2","@types/node":"^26.5.1"},"_npmOperationalInternal":{"tmp":"tmp/serialize_1.0.0_1789745673826_0.026528007125702358","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"_id":"@sigx/serialize@1.0.1","bugs":{"url":"https://github.com/signalxjs/core/issues"},"dist":{"shasum":"b42ea60ed7dc6d5c232b9030d6c5e353f5a49091","tarball":"https://registry.npmjs.org/@sigx/serialize/-/serialize-1.0.1.tgz","fileCount":32,"integrity":"sha512-3cZFfYFlMU3KF9icY/KcjjVuqpdv576dTWXpdwtjKOzjoG+J7bVFIvQD37RmTcV6tBMC+oDl75WT57at136pyA==","signatures":[{"sig":"MEQCIHGCJcclev1oR5VIDIOMsttdqPLHbwiysFmUUvsggMzSAiBHOCDn0eQ9hfNN9fMiT+7xultkI97h5eI4S0B/vo8Daw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCRI8cSNmEEk7mF19B089bma1xp+mdbOh0sSEBhWbQvPAIgI3z4nUUexCjG8mrZuOc9qY3YQVhUqC5RgP6JiQv/6xo="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sigx%2fserialize@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":263959},"main":"./dist/index.js","name":"@sigx/serialize","type":"module","_from":"file:sigx-serialize-1.0.1.tgz","types":"./dist/index.d.ts","author":{"name":"Andreas Ekdahl"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","production":"./dist/index.prod.js","development":"./dist/index.js"},"./bytes":{"types":"./dist/bytes.d.ts","import":"./dist/bytes.js","production":"./dist/bytes.prod.js","development":"./dist/bytes.js"},"./stringify":{"types":"./dist/stringify.d.ts","import":"./dist/stringify.js","production":"./dist/stringify.prod.js","development":"./dist/stringify.js"}},"license":"MIT","scripts":{"dev":"vite build --watch","build":"vite build && vite build --mode prod-dist && tsc --emitDeclarationOnly"},"version":"1.0.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:be1fd292-6c6f-44ce-ada5-580072e1399d"}},"homepage":"https://sigx.dev/","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"_resolved":"/tmp/f695e765185d1b477e534bb4bcf29dcd/sigx-serialize-1.0.1.tgz","_integrity":"sha512-3cZFfYFlMU3KF9icY/KcjjVuqpdv576dTWXpdwtjKOzjoG+J7bVFIvQD37RmTcV6tBMC+oDl75WT57at136pyA==","repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"_npmVersion":"12.0.2","description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","directories":{},"maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.3.0","esbuild":"^0.28.2","@sigx/vite":"^1.0.1","typescript":"^7.0.2","@types/node":"^26.5.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/serialize_1.0.1_1789801806689_0.6936805977112956"}}},"time":{"created":"2026-07-21T09:32:10.548Z","modified":"2026-09-19T07:10:07.194Z","0.12.0":"2026-07-21T09:32:10.994Z","0.13.0":"2026-07-23T12:56:54.945Z","0.14.0":"2026-07-29T12:39:13.132Z","0.15.0":"2026-08-04T14:08:40.827Z","0.15.1":"2026-08-04T18:22:57.843Z","0.15.2":"2026-08-04T23:22:16.701Z","0.15.3":"2026-08-07T05:58:36.475Z","0.15.4":"2026-08-13T19:56:41.641Z","0.15.5":"2026-08-15T07:40:44.315Z","0.15.6":"2026-08-17T10:00:24.276Z","1.0.0":"2026-09-18T15:34:33.907Z","1.0.1":"2026-09-19T07:10:06.782Z"},"bugs":{"url":"https://github.com/signalxjs/core/issues"},"author":{"name":"Andreas Ekdahl"},"license":"MIT","homepage":"https://sigx.dev/","keywords":["sigx","serialization","hydration","ssr","rpc","date","structured-clone"],"repository":{"url":"git+https://github.com/signalxjs/core.git","type":"git","directory":"packages/serialize"},"description":"The boundary codec for SignalX — how Date, Map, Set, BigInt and custom types survive every server↔client boundary: the SSR state blob, resume boundary props, the cache seed, and the server-function RPC wire","maintainers":[{"name":"andtii","email":"andreas.ekdahl@omniaintranet.com"}],"readme":"# @sigx/serialize\n\nThe boundary codec for [SignalX](https://sigx.dev/) — how values JSON cannot\nrepresent survive every boundary sigx moves data across.\n\nYou will rarely import this directly. It is what makes this work:\n\n```ts\n// src/orders.server.ts\nexport const getOrder = serverFn({\n    input: z.string(),\n    handler: async ({ input: id }) => ({\n        id,\n        createdAt: new Date(),          // arrives on the client as a Date\n        tags: new Set(['priority']),    // arrives as a Set\n        total: 1999n,                   // arrives as a BigInt\n    })\n});\n```\n\n…and the same for SSR state, resume boundary props, and the cache seed.\n\n## Why it is its own package\n\nBoth halves run on **both sides**:\n\n| | encode | revive |\n|---|---|---|\n| **server** | SSR state blob, RPC response, stream chunks | RPC arguments |\n| **client** | RPC arguments | RPC result, SSR restore, resume props, cache seed |\n\nThat rules out every other home. It cannot live in `@sigx/server` — three of\nits consumers (`server-renderer`, `resume`, `cache`) must never depend on the\nRPC layer. It cannot live in `@sigx/server-renderer` — the revive half runs in\nthe browser, often with no renderer present. And a codec is not the component\nmodel, so it does not belong in `@sigx/runtime-core`.\n\n**Zero dependencies, permanently.** `@sigx/server/client` — the fetch stubs\nthe server-fn transform emits imports of — is dependency-free by contract, and\nimports this package directly. Anything added here lands in a size-limited\nentry that `@sigx/resume` handler chunks replicate.\n\n## What round-trips\n\n| Type | |\n|---|---|\n| `Date`, `Map`, `Set`, `BigInt`, `URL`, `RegExp` | ✅ |\n| explicit `undefined` property or array slot | ✅ preserved, not dropped |\n| plain objects, arrays, primitives | ✅ unchanged |\n| `Uint8Array` / typed arrays / `ArrayBuffer` / `DataView` | opt-in via [`@sigx/serialize/bytes`](#binary-opt-in) — otherwise a dev-warned lossy plain object of indices |\n| class instances | prototype lost unless you register a handler |\n| circular structures | ❌ throws, same as `JSON.stringify` |\n| nesting beyond 256 levels | ❌ throws, on encode AND revive — the codec is recursive where `JSON.parse`/`stringify` are not, so it bounds its own stack; wire data is attacker-typable (#559) |\n| a property named `__proto__` | ❌ dropped at revive with a dev warning — rebuilding it by assignment would swap the revived object's prototype instead of creating a property (#548); `constructor`/`prototype` are plain data keys and round-trip |\n| shared references (DAG) | ✅ as copies — each reference serializes independently, exactly like `JSON.stringify`; encode-phase work is memoized so a heavily shared tree costs linear time (#559) |\n\n## API\n\n```ts\nimport { encodeWithHandlers, reviveWithHandlers } from '@sigx/serialize';\n\nconst wire = JSON.stringify(encodeWithHandlers(value));\nconst back = reviveWithHandlers(JSON.parse(wire));\n```\n\n### Straight to a string (opt-in)\n\nIf what you want is the **string** — a storage adapter's `save`, an SSR state\nblob, an RPC body — the pair above walks the value twice: once to build a\nJSON-safe tree, once for `JSON.stringify` to turn that tree into text and\nthrow it away. `@sigx/serialize/stringify` does it in one walk:\n\n```ts\nimport { stringifyWithHandlers } from '@sigx/serialize/stringify';\n\nconst wire = stringifyWithHandlers(value);         // === JSON.stringify(encodeWithHandlers(value))\n```\n\nByte-for-byte the same output, the same two `TypeError`s (circular, past 256\nlevels), and the same handler chain — held there by a differential test suite,\nbecause everything this produces lands on a wire something else parses back.\nLoad it on **read** exactly as before: `reviveWithHandlers(JSON.parse(wire))`.\n\nIt returns `string | undefined`, mirroring `JSON.stringify`: `undefined` for a\ntop-level symbol or function, and only those — an explicit `undefined` (and a\n`toJSON` returning one) is tagged `$undef` and survives.\n\nA separate subpath rather than the root export, deliberately: the root entry is\nbudgeted at 1 KB and is bundled into `@sigx/server/client`'s dependency-free\nfetch stubs, so a server-side emitter must not tax every client bundle. Not\nimporting it costs zero.\n\n`reviveWithHandlers` is **not** a general-purpose deep copy — apply it only to\ntrees `encodeWithHandlers` produced. By design it reads any single-key\n`$`-prefixed object as a tag, so foreign JSON containing `{\"$date\": 1}` would\ncome back a `Date`. Encoded trees are safe precisely because the encoder\nescapes those shapes.\n\n### Custom types\n\nAuthor a handler with `defineTypeHandler` — declare `test` as a type guard\nand `serialize`/`revive` infer their parameter types and pairing from it, no\ncasts:\n\n```ts\nimport { defineTypeHandler } from '@sigx/serialize';\n\nconst money = defineTypeHandler({\n    name: 'money', tag: '$money',\n    test: (v): v is Money => v instanceof Money,\n    serialize: (m) => m.cents,           // m: Money\n    revive: (cents) => new Money(cents), // cents: number — serialize's output\n});\n```\n\n(`TypeHandler<T, Encoded>` is generic; a plain object literal still works —\nbare `TypeHandler` is exactly the pre-generic `unknown`-based shape. One\ninference caveat: a compound test like\n`(v) => typeof URL !== 'undefined' && v instanceof URL` infers `boolean`,\nnot a predicate — annotate it `(v): v is URL =>` explicitly.)\n\nInside a sigx app, register through the per-app registry from\n`sigx/internals` (it is consulted **before** the built-ins, so a pack can\nown a type they also cover):\n\n```ts\nimport { provideTypeHandlers } from 'sigx/internals';\n\nexport const moneyPack = {\n    install(app) {\n        provideTypeHandlers(app._context, [money]);\n    },\n};\n```\n\nApps using server functions should register through\n`serverPlugin({ types })` from `@sigx/server/plugin` instead — ONE\nregistration covers both the per-app registry above AND the server-function\nwire (#411). The wire's underlying seam is\n`globalThis.__SIGX_SERVERFN_CODEC__` — the same global-seam pattern `$cache`\nuses, which is what keeps the stub entry dependency-free; app-less contexts\ncan stamp it via `registerWireTypeHandlers` (or directly).\n\n### Binary (opt-in)\n\nBinary is not built in — this entry is 1 KB-budgeted and bundled by the\ndependency-free fetch stubs, so a `$bytes` handler in the core vocabulary\nwould tax every client bundle and silently start admitting binary into the\nSSR state blob. It ships as its own subpath instead; not registering it\ncosts zero bytes:\n\n```ts\nimport { bytesHandler } from '@sigx/serialize/bytes';\n\n// App/client side — the RPC wire AND the state/boundary registry, at once:\napp.use(serverPlugin({ transport, types: [bytesHandler] }));\n\n// Endpoint-only process (no app) — the RPC wire alone:\nregisterWireTypeHandlers([bytesHandler]);   // from '@sigx/server/plugin'\n\n// SSR blob / boundary props without the server plugin:\nprovideTypeHandlers(app._context, [bytesHandler]);\n```\n\n`Uint8Array` (including Node `Buffer`, which revives as a plain\n`Uint8Array`), every standard typed-array kind, `DataView`, and bare\n`ArrayBuffer` round-trip to their exact constructor. The wire form is\nbase64 under one tag — `{\"$bytes\":\"AQID\"}` for `Uint8Array`,\n`{\"$bytes\":[\"Int32Array\",\"…\"]}` for everything else — roughly 33 % over\nraw; multi-megabyte payloads are better served as real file responses than\nthrough an RPC envelope. A view encodes its window (`byteOffset`/\n`byteLength`), never the whole backing buffer, and multi-byte kinds carry\nraw host-order bytes (the `structuredClone` trade). Out of scope: `Blob`/\n`File` (the codec is synchronous; they arrive inbound via `form: true` but\ncannot go outbound), `SharedArrayBuffer`, and `Float16Array` — those keep\nthe dev warning, honestly. Registering the handler silences the encode\nwarning for exactly what it claims (#565/#569).\n\n## Wire format\n\nEncoded values take the single-key form `{ [tag]: payload }`:\n\n```json\n{ \"createdAt\": { \"$date\": 1700000000000 }, \"tags\": { \"$set\": [\"priority\"] } }\n```\n\nTwo rules make the vocabulary safe to grow:\n\n- A user object whose sole key starts with `$` is emitted as\n  `{ \"$esc\": original }` and unwrapped on revive **without** interpreting the\n  inner key — otherwise `{ \"$date\": \"a string\" }` would come back a `Date`.\n- An unrecognized tag is left in its encoded shape rather than throwing, so a\n  peer on a newer vocabulary degrades instead of breaking. That is why the\n  format carries **no version field**.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}