{"_id":"remix-typedjson","_rev":"26-3ad4544949871f5b484862dcf5e358c2","name":"remix-typedjson","dist-tags":{"latest":"0.4.1","pre":"0.5.2-pre.3"},"versions":{"0.0.2":{"name":"remix-typedjson","version":"0.0.2","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peeDependencies":{"@remix-run/react":"^1.6.5"},"types":"./dist/index.d.ts","gitHead":"25d04f203d5af051ced0ba1e941f01b961f5f877","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.0.2","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-WDZSCL8w+IaXrnH6PsIImU5ByeC8wkiEJLG5lBU4xpz/2mpbheYnSTy6pMQHx+9EjpKmpA3oSjKnjMjtHIMbqw==","shasum":"249707f28a833b94728f6b8f5cd45f7c68aa0254","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.0.2.tgz","fileCount":10,"unpackedSize":24459,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+8pOtLRaGHIsqSAM9bhLuKxRiH/rsE6jC40XBRBMneAiBiHvumE784Uf9aPS1DA36e8rU/m6TIWkbGZ5TQmdtByQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3stlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqOOxAAmNBGNjqLp5d60c5vq1xMyoONj2+6VgZaRYTm6rTEEd22Ep+2\r\nea/OsKTI8+PhqpUI91F3G4xrRC9Cw6lgmlGLym5ettwlbWnZk+iQyvU7hRKZ\r\neLTAHjho+SsvhgCe8SjjNcsr3W4VOu1/paIA9ZOGPmmaUc536EKICoWRVbLt\r\ncfQukp/cP0zehqEhLi5dlxunOJ1PAA5y/RNh/X8vTIurqcQr/ovWSJUDgNY0\r\nkwelNw4FfeVaE+a+bJdUYHVTi/cya21Lm8lKxADeossaiFg5m7+CX5NNXWMD\r\n2oAuKLfFsODVxk4NsSgLkFv3okY2QF3QMimZMI8jgZpwAVA5tBzhO1wH9yQz\r\nAz7jhHBGTZ4oxxDTjamzhqZRWku28uI8EtoA/G6rEAYqioP9FpQ0URWHl3R4\r\nF2TwNSiX/qP1kdgk9OIQMXHEyylaeEGooRih51bC5Yzd9AJsGeoyxNF6bDr0\r\nGvuByAyXR3VxrtDTYCIwmG9s3XWawW4zzQ0/7pT+THaJfOPr6jCp4ylQ59VQ\r\nKG5fG0Om0cRoNOEawxduPD4Bc/DUYCr3x9qQF2L/+ViDAlH+bk0+rZFahN9/\r\n0fVt50QN1/SMA2dYVLLZB3fhJWszHl+p3Y61z8YNWP6m/bBZP+AbeJyB7Kar\r\nedHRwBSHZimOGdEaisx+5Iy6UHOtBqlvbVc=\r\n=ArjB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.0.2_1658768229267_0.1738183472044983"},"_hasShrinkwrap":false},"0.0.3":{"name":"remix-typedjson","version":"0.0.3","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peeDependencies":{"@remix-run/react":"^1.6.5"},"types":"./dist/index.d.ts","gitHead":"bc92a79197d9bcd348469cd225114716917b176d","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.0.3","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-n3n5OcXlPFg8+GQT1fh9IjbWGAo4Mup2/hic073CU6VicK1OIjmRP4HlJO/0u+rhdqVJ1Qgijcd+ibqmHs2GXg==","shasum":"4df5a38dcbf7e3b1e144283cf9468f8b679d77a8","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.0.3.tgz","fileCount":16,"unpackedSize":29363,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYz4adDvxslNATBLC34UUcQHLDElon2K6rhkn3Nu6cBAIgKaAQJ1FMXh6bG6sqKyaHNgetKayTbnWEtmgAlaP45nA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3s4AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBqQ/+IAEG0vLXhNFO4OqrtvCgw/Xkfh2+LcBvbZ+dWYb39N2qOCCc\r\nAtYBAjwqh95mOYvIqDOI8I8J5PFaCiGzl9nwPVweOvKVSuCCjOSHPUyRmgTZ\r\nxxmFpMzN21jn8EqSxxSK8jQlE7npNjFViB3MSHDbcXIemyttO5RqrXHBdOT5\r\nVnUO9gOcmiTqGLexs/xIa2yAJNckpSJJ1NSZpD7G2Ea/jEPL+TKJz6A9hdzP\r\ncoJbGqS180ihUT2zQCF3G3uYQ1FwbnZU5zY405+61X3cgLjVVHYxpuFUE6QN\r\nja+Iin091PMAo7yxYS4nX/SvBIazUeQWRT82pKm81erDNjAd2MZW86G8JqjD\r\n58qgAGgQq8NcgvwS5FjfdVue505rzrPIRj+TMzkFTeBBpb56JoGZ17wAxobl\r\n1S44WCXLbIT+RQtCoaXlkGK+kp8i6EeqgMCPzZY3yQ5okl3MxhwOJvp4iuHO\r\n2Dj3dndZky2ey+Ine4cfMsnr0yiau3XhvKlfEKujBpjL7imVIwQYbyep5iQw\r\nppBNTokfoU3aWG4S9JZ9EierKi6qh6tTMPAihnOpbixgzjpQiktT1nbcIEzE\r\nLhLjmd96L40kmFB7b/UPIfKto7p9RSxB43pOxDNPICuNQCp5+1E0JaYD/5Ss\r\nsAVBP+mWg/EET6FwL4qNO9Frr1f79yjWjZw=\r\n=pAyp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.0.3_1658768896024_0.7638493775577144"},"_hasShrinkwrap":false},"0.0.4":{"name":"remix-typedjson","version":"0.0.4","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peeDependencies":{"@remix-run/react":"^1.6.5"},"types":"./dist/index.d.ts","gitHead":"a164d11056e21dc54bbcef5f11e77802a58f5aa4","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.0.4","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-WHJ5l2kmnIZihdx66Kzd7ckIrzEeflUPjOLIrZe2tFQo1WHW2/cJy//VR228tqqRPvqW+2FMYdCftwIl8Jmcgg==","shasum":"2b8e8ec6565c7697a7ec13865c76676e1bf76774","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.0.4.tgz","fileCount":16,"unpackedSize":29431,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCywdQPhGmFa2t4BVKRtNmK0XehNcondXuG6lcEtmTVPgIgGdI+qSLpFTdsrGPZB3dY0RyZDjkGHdJJGne/FEknAZk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3tDVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp9exAAmY6lhQ6hw3ExCNq2h7oIiCeYKHPnUU2fVy1WFDFgta2/ObMF\r\nKaYJtO6XFrLaIHIhXgk7xQO554kM557U54hkiMLUcsIhAxVrEx0CKYHxROY/\r\n3hKqMc23BKkSWg5JU9zfWGyw3e3iyvUpYuLnyU6rrcfKRwlGmPvnYEC7tsFv\r\nLn3s5F2iIx6UL2A9tUxBCeB7wn7oukQVxIEev1iYQzh+m7qXSvFfC4P4X209\r\nUFejJjd+Bd9p5dqDDcxgDChQe+NirMa0Zc2wvJfdz67qbK2iNwX1fdGS0xz3\r\npx0u7Vb/692HwfWMXZj0VIVCgTd/Mh4WEvfLaeALzPOGylT3R0ZmAJ/YbXw0\r\nMKL/ieMBSJvBnCuOmy4G3Cqn95eS5YsDe3bpA7M8YVCE147daBiu/CsGPVUB\r\nooGn36f+fdotwhvT/dzM5rFaXDwWyYLKLJOCCgwLT2QR4Wv6iFEOITl7lU3u\r\nxDgSz0bvK0AKrAj40NVTzgJpNDefAlwyelDC2UfziUrOGc4k+e7PicEEXruz\r\nlR2ueasOImV1k7f/d33oPfR6rRkQZn6yLgbq/m+jtt6gluW+v5aJsHqYDiHb\r\nOqc22LhelkYOZag2CGbSzz+1WewSPi+hswFdYBoI6isbWxcRhA05YMApr9B9\r\nRTNIcXXBefyDjJSRdKreZPq3cD3qBYM7mWk=\r\n=qDyO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.0.4_1658769621612_0.7261516569181228"},"_hasShrinkwrap":false},"0.0.5":{"name":"remix-typedjson","version":"0.0.5","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"dependencies":{"@remix-run/react":"^1.6.5","react":"^18.2.0"},"types":"./dist/index.d.ts","gitHead":"f716c1f133efd4cb291bdbb8b21888838fe7a54f","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.0.5","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-Cjcub6LaaRU81Ms4hyAt8Lfg+AcvrdSW24DLoeMtZrTe1c0XJcchIRjkSFflISftgARX9LWY4ExeWE1Lc7nG2g==","shasum":"4b40a9c91d5b46f398071ca0bc9ae8287e65c095","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.0.5.tgz","fileCount":16,"unpackedSize":30338,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIENVSdYiMgzZPBCEbeCoMKZEjk73GqqnzPv5T4oMnXQtAiEAw5AribSt764xE5Rrdj5xuVk3ylPgp4Q+olVSTFl9HLc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3uNgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGNA/+Kylu5mKV6KoYgdPQPBP6URG+6QAbwyTS+s+l7FJzFyfS2mRu\r\n6zIRUaOrUVdPlgd1Y0bXj/uz3CpbU7CeYwslj6vX+HZo686lU+RiOA/fY/yC\r\n2WSa3l3xbguzQpxHYl1uxx6Xbge9E4L1VBMGRVAlacwS5++dmMFGN7AkrK8R\r\neBT5usbSY+3RIJpIRtKPaa6PW41zjLH6HIvzFNpa3D5TteD0AVhdAm5ic/IZ\r\ngdHssxIDPrkeOjlKf1IR/QXz66yUf/+hgiCqxfvPZhDajGxPglvMYXwVTOLK\r\n1mYytzWUhblFS+24NHWFKplCDtnKJORHYkhUcEM4ggYovijNOw4eNmDSqR2T\r\nYY7dyzVbyVDUBRbIvQH5NSuej9Hvni1IR3zhBnMznzAsNhR8tjxdKtpmG9Vr\r\nEBBXpx7RXqzr8RP23ZSlaLIBf2JxtwAFvtt13dT0hmnph4vlt+nIQD24RiZW\r\n4WiGnn2JK/z2f+qYB5orLCJ8LGqVJYjDnUKMrMom5Cqsg0M6hJkv4GZNJ15M\r\nY3DnnsDiUge/Bdcr43bd5d1icCXm+GfYlxBw5V3fFzQS3tnTJ7m1phynG4ip\r\nr/kjsIeG6+r3qfRb9ptELUEgc0z74J1cZSX2OqYKVcOtuYC7YJ+lvPTkl8uh\r\nz2JMgTUNt9ivthnU0HkhAWkSMRUTTfNaCT4=\r\n=Iyf8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.0.5_1658774368381_0.253173836794101"},"_hasShrinkwrap":false},"0.0.6":{"name":"remix-typedjson","version":"0.0.6","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"dependencies":{"@remix-run/react":"^1.6.5","react":"^18.2.0"},"types":"./dist/index.d.ts","gitHead":"a3aa9e6bdb6c1b5ef465625191a8940c8f4a6536","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.0.6","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-82lfbuIi7cY8x8Grz3g6LGXfTzmTLlt7iV7nOxgQLflfpWC9cM4ZhSkM/oJ6xeVr+RHaGb9h2d1vj6ssVgwenA==","shasum":"d067654667d4000621d2ee7d870a8f2ba74c4801","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.0.6.tgz","fileCount":16,"unpackedSize":32962,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGT7HwJbn2BOLV0XHAlJufRPSjT9KUS6UXKXScBRfuIUAiEAhQyuc8QDYPpMjQZQIoSbSoEmeYh/SCVw0OLW87zwYg0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4ENTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZUxAAnBx4T5LE7YHYtwQUqYvFWqdxzMisKdbyQDKYN7C6iovIgRXN\r\ncdWovESRj2rMfPbWBRGGdf/EPK3W5XCNEZQ0VkGHtLYnX0v616sMGS5CJ/xu\r\nwh/wScn22psgqzugF8ey/StW8xKMJtQIM4FBnepMu07e2kEXYNh6nLrMHCP/\r\nj+s4anwZl8St2HmqBt1MLRM7psZ206ts/ZLX3JiG22q6VFNGtBWA1TKgLygc\r\nMoN2Xs6kP3wf4N9VfEhUcKcWEX3Eq1W2I2dj5iyQDcXDrZFsq2xqrPsF67U3\r\nYbZjsA0O/xQvte1e257XW+Wy3/dOT6vjLmdaDbDW1iFdV1ETwO5q4OHnqGNN\r\np+gWZrOhdL8zbSYlRQ1YFQ3q7e1OqGGGR6GHlP2zg7nlB34lZJ6GzQbtZmSJ\r\nTTOxIG1UeH4RLiFmG4iWteE2mok4lBmPlooZnwNd0Ey50bjlSzdxsi4QPsuM\r\ngAlo6gI+OZiIg0hTwynBRxdIx4S1UiwI6buz7Wq5VRWRL14NWPvRpvsVSNqD\r\n7VATIfl66Dmge5oJm/klJERA7ilZHrZuMdwMqibYrrBrlZL/PcKQbMSjt4i3\r\n4MKQN5lqz4tIsMuTYHvSkTFhzPnSF6lZEHbGFuDeW40rQyVGsl+N7u6lSU2O\r\nTO0TFdK2/uadkcIoREtwAj1XWHpApxQdRL8=\r\n=a+cG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.0.6_1658864467672_0.13937284097172276"},"_hasShrinkwrap":false},"0.0.7":{"name":"remix-typedjson","version":"0.0.7","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"dependencies":{"@remix-run/react":"^1.6.5","react":"^18.2.0"},"types":"./dist/index.d.ts","gitHead":"bfd2ffbab0cb4c2665d8dcabee8b0dd1db5bb8b7","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.0.7","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-hBw1BZBPf8ssnjltnq1h5o/C9316CZU2A0NebwtaW7DG2DsJdfaUND7G5kQSVyrWOWDK6eIfxes46HS+ffU26w==","shasum":"edae05b3fa4185381f4c24b2bfc201917fb056e3","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.0.7.tgz","fileCount":16,"unpackedSize":34076,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRdiIY+R1JOscQBg6dh0x88RT8Jn6XcmmRVZV0Kja2UwIgXT0nqmbTuzUWJ33jPy5hZ9LuqPgt4psPKw51ZSnnMok="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4UBMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCTQ//RNvcIruDcHVjamceMjjJTvTGG3zWPDzi+V3Nv+AYfzo+3w9n\r\ndqDW1lA7+6LXo7LLMEpWlZ1A2atjTFtsaZdVpPvyFOKOFq51MdYhiDLJaHj6\r\nnK733VfkwhlfHCdxMIf+0x7W6fDDiDUsVa/upiZNfoAkBBOpsW2JQUAWvaef\r\nD89vyKdab6J95j2+Uyfwnz8fkdvPDtJKlgOeJgMhmIA4S6F9ZPCD9ca5tNnL\r\nXsP+AINQKYuOa3WBfRsQIFFe1uOcPYCMvklANP82YJVEacQVdikGAZa40ncA\r\n0zf6VA1ViPE9PAJdZDtqlT73q+ZzxIuCL3GdVesZ4FT7Vr12oriuvgFYh3Al\r\nWZbaT4z7DpELfSDoW5Dxr1iKRIu5dHyaO5Hn4d46GZukILiiIh0/VV6H8J7/\r\nVhLMzObc9bQCAfGuqYFgUQ2+2QePt7Ue64AjuLZ+07dAVWtW6ZJ36Yr0lcKD\r\nxe4e3REXXKR9SAXuGYZRFJbI3+F0c55d1lH08kheIhvwrUQyez3LdxpEowHN\r\nydJZ5tB5If0b9xISYdmEvFHNAaoyt5N0dLOLtzyCRtVuxfNhmYn+xITavRRA\r\nYXPN4wEdZ8LzHPh1y8a5ro9S97XQVmluuO8hgXGofezr7faf5HrQRsz+6FfU\r\n3S4WG43iw9o4FXQ4wU1jaLFsabm9WaaXETY=\r\n=+U0C\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.0.7_1658929228474_0.06492015512924443"},"_hasShrinkwrap":false},"0.0.8":{"name":"remix-typedjson","version":"0.0.8","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"dependencies":{"@remix-run/react":"^1.6.5","react":"^18.2.0"},"types":"./dist/index.d.ts","gitHead":"e33c70b1fa9f4ee62caa61ae2716a122826e56ba","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.0.8","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-kBjGwt9o0BVJ4DdMSQtz4EhhBw+29keDcmoy1t24g+SxQ9acQ+Z89MxQmF5UssfdpEAxxy/OkivykUqcMIGr1Q==","shasum":"682ed01b3a53227c237661ca758bdcd5e97b060a","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.0.8.tgz","fileCount":16,"unpackedSize":34329,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNBoP++HzaO+qqNSejMJh+7DumNT8NUN13Kx+68IbIEAIgEavG2f6pdQpSxYMWhcCPrntiIb3O4xh5lzJ4BysU4Eg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4W7lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqsfQ/9FwQ+n/yaIwY8XUgmgo340oTdmTEKofW3uGvbBz3I9L90WqTt\r\nSeXU16iIDWD6M8nvJ2poDoxK8A+cYzkEIqvQQUvini4z4y9pZHTyJbAXS51p\r\n3dawjJi4Z2cORt3roTjVkb1IWgR9Q8zAjOjlQACb1fofAv4ZTPSwXSlaswo0\r\nsErxCzoWggBHhBI6VcxN17G8T3MsnYbyCBmZxEGUgb8QpcwbWJmUmYDwC1LF\r\nwJOH3G9/GhCsAfB2Odjfk9OlnrHQROYU7WLx6XVevv+ScGiOjHz1kzg62zDI\r\nm3QUL90CJxjvtymThL03gLG2HEBnrPoavDMfiq6fUhMGedmdcN54SUBCtoQ3\r\nY6/svPkoypXrJZjJJkv/BESl/iMxsO4ylDkZVJ6Lq5vaJhyxw5lXUTyp8l7E\r\nzq/k6PbvjnQVGaNNRKABJi5O6zw/5XIbd2KdF9HTaE9wkuznD7/er6kIkr5r\r\nHf42I3nLMTjlt6CKGgEj4iJ8WaO7mPnKG/uAaShs5APsm18uyHOqzzSitPcH\r\nCWqjl6xw0gOm8c1Oe1dJsPpYGZNK7gnuBjzDbXVGMcVJZKNtqyZ1IhuZtfm7\r\nAClX634CpsKM96/wd0EOzu1eX3P768WelbfwAjJcaxKZmP48IpMAH5x514Lz\r\nfawiZzWcK2cfB4Bvl/nnfw8VG9c+yjh++fw=\r\n=wBUA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.0.8_1658941157609_0.38987688997012904"},"_hasShrinkwrap":false},"0.0.9":{"name":"remix-typedjson","version":"0.0.9","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"dependencies":{"@remix-run/react":"^1.6.5","react":"^18.2.0"},"types":"./dist/index.d.ts","gitHead":"0f46878de066f6f236ed4c99fc37d1a35e215c1d","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.0.9","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-Bjincmc63tmqNDTWNBnRQuG3YQVlqvehDZmaY06OHnTYapNyS0WzV0Xnt9HrndI1EAArgfklbke5/Xxo4Nh22g==","shasum":"c17b70f1faf06cd034176ff6ad24783815b615e9","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.0.9.tgz","fileCount":16,"unpackedSize":35970,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICZ0JVYIS3NG0Q0HHHj5fMHTVCakfd3S2GotuA0PANFlAiAxOgtqBtfKc5usya/S8MDawOTQt4zL2tTrxq0gFdkKRQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9lF8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo7Pw//TXSBZOlBWPX72TvSKNhZoYDVO0jv9teIJOEnosyKyncGy/Xj\r\nQSM+gzbm7+VLLd7ENe5QViwqQY11RRgOc1vyEZ1n3InSjiv1ScAGozSLn7fj\r\nK8i8TAcFZEN2TW7946x2ndJlMhzhhgNggV9+60OOpJbsGPzVkcdiobvyuNu3\r\nv4rapk0QnWYgXwFjPjjD4sype8lej+asnGgaogQ/7If271HQJF2y/Kbl+M0g\r\nGueq+sftRK5BGE2XiaMPQr7f4reU+/Bggtkl8YH/FPNW/LeQs6iIBqGRv/k1\r\nZwQvSzEDgaRn8u/rXcd6FMTUY287U/LueIrcF5y2NDhahRbdOW9e9VIE7B5D\r\nDz552GNZnRNNXnIIVOsckfXxI546Da66kevUR6IOdtpYf0jXyzxf/kbBZml2\r\nGE+nsXZncPpbkY7wHR1ymHIw5OqG2htKqWMqpII0ei2+Bt91aw7TswObOWqB\r\nUp5A54RXEBm4lTvzH66D+pLsN5GfCPOhMKNFHzayTE5um9B7sS3JG6q4sMRy\r\nVoyT1O6q2xEqfr2z+BBw2Rcs6pzYloZFYd8OpKz40nFRbxnqZ5Y2SYsIfwK5\r\nqZmv88Z6D4i3aAwJBfHx6tVYYmnE8zdJp4pAgDvn5vMj9Ar57gFdfp2ELg9d\r\nOdhxyKOfwqkpJ1OOpuKsiRR30dU8A4dZnDo=\r\n=N8zE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.0.9_1660309884746_0.47018189477716765"},"_hasShrinkwrap":false},"0.1.0":{"name":"remix-typedjson","version":"0.1.0","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","react":"^17.0.2"},"types":"./dist/index.d.ts","gitHead":"2556b03444da1828ec795b8a74b96688b19d63e2","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.1.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-izx5oeO321ydah3fxcGVK1Dewcyj+89+9DKW+BvRoGltkI6drAwgbGfEi/kLjurgyu/jFEdCR+MztnLrXZRTNQ==","shasum":"69e3552a38221c23cd307102f68277ca8deab53f","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.1.0.tgz","fileCount":16,"unpackedSize":38747,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDdUlMsF9izYKNHgvyiKGoXUx/Ipv+P45Z89kv7sGIbjAiBWzsqAufURGG70nj8H9RFZUsobN4trq1TS0tGNzPM+RA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/+kwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrN/RAAk0i4PUfT4z73OPDmZgC9RGhRI/9f12XqNP8bLarreeG+TbE7\r\n9l/9aFbfJYNJ1eBBixXy1kZ+o+5RP3HiPXEEBNiHddlfXL2Q0qpRMh9RKoCs\r\n9xdt6opOauhcm8TvC/JW0C6rv9noNma3HjfU3VOOxIl6gPxek/nL5Bx6NRRk\r\n3W/yMUbLhbyS/P3HOSKjcwa+c+rFweURTteGl6FlwzGCmsn1PDjRaoRJnu3a\r\np1wwQ1AIZ67XjRihi1VqNNXVlpPWdt/JFR9KZ0Q48ldbsHEA7VxhzDOHgLzk\r\nRax7C2hcktDfrJiQljs54dSF4GdGrGoGJxJuMUBeua6nr54EfucF5R+ryeM8\r\nIfgr3qE1WU0+puUvbaLQ5Nv7tKVe+MKZnqiIcoLS2DgqMvN+TcbxlPRQmTDx\r\ngjN+gqgB62Nn1zSymWHgIhh5OCJhGCTiKUjDNBlPUu/vShqaFIjYDR6vMSNv\r\nx36Nn+kteaNJ+8KuFcA8Gq8yHqxqHn/+hdvWK+Fkd1boGLeE+HhCqt1hnifQ\r\nZt85lI6DJ8zPJP3QV/r9PbRFAfLvOm3rwBAJrt/ulyX+J0FU0W7zXRstx9uL\r\nIpx0nzTv+GMyoKQVaxbPFOVdaL9Wq3hNEj4HEB1nDKyfdEgQLsmsf3epgmCA\r\nwj1boqXwqFDVKD8VzgLhAZEJy5uEM4JRneA=\r\n=Fc1I\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.1.0_1660938544249_0.6757922006555206"},"_hasShrinkwrap":false},"0.1.1":{"name":"remix-typedjson","version":"0.1.1","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","react":"^17.0.2 || ^18.0.0"},"types":"./dist/index.d.ts","gitHead":"d6ce9318f41c2c76e69f71b3847d0204ad39da18","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.1.1","_nodeVersion":"16.14.2","_npmVersion":"8.18.0","dist":{"integrity":"sha512-8iUD57Zd8xqLbLmtTC9LNDU0KcSlF49S+QLacAdw924oAgFpxcKAPV9fn+m9jW55j6qIAcSnryScK5BmGJtXSw==","shasum":"5b90478706d87276929342143e6910205ae8d2af","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.1.1.tgz","fileCount":16,"unpackedSize":39179,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE3O5+FvVtPrLDQB2bf7RP1Tf+ik9rawFiEi+OWyzdr+AiEA5hGhIPFRo2m+9GpLX6qk/ETHFKBjdGRy/0mNKWBTgnI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEiBBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo/zA//Z0lVz/sgxf4SNAvG6fh4BSqypLVWZXrx4SPZ9b+VCL5j0dvz\r\nYKN/otyENEcl1HCcXu4DRWdzcf83S/JGI9p/UH2ZBWDEv2HKR9xVeOk1Sf6t\r\n0A42ILVhRhnTpP6pgCAkOOs01ljrMA9QE0g+wwbN98w2KR8F7pQydOgmNOUF\r\nt/KP1zkNbdTyPpJc71Ga+NilhtWjVGuxpG7aWYgwffOwVs0sNDFvWXJJHUag\r\nTQcpr1u7TTXt5Fh9Cr4L4hoXVImsHmjockkhEg4/jE2d9ALdXkXpJrHyk+Km\r\n6h+CjkBV5Ccm+zw2KnNBWS0qOSJCbbJDEh9ZhXO/0BNvF1fzSMO7ySBDWR/y\r\n9DiPS1lAonSjSnKaKRF038GOKJygVtFmtg8SDYkxHQTYoCOyvFgnosaIIeIK\r\nMbJyudaA/CZccrOQGmkTpdUw/p7Uj3Qufvej4DPDF3uGwuIdmEqnC+3tof7W\r\nzf13nkdlgxbtk3QjjyujR7K3SY64rFuXZCftTnZZCHEwG9pn+ipRaEUYyAaA\r\nSUd/YQPhWJHIW42972jLU+2O2D0liUKyymYkG/uPLXhB5IjWNR6HnZvHfe/X\r\nGNREMG3G0JvlNrUV8tQmuA6P8UVhaa0WkiEnk1HZxTN2unm+67ak0VyN7sWp\r\npYrNNqd4uOpxEP1niOKbRiLh7bsSY+Cw5TU=\r\n=49jF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.1.1_1662132289707_0.9919942347236674"},"_hasShrinkwrap":false},"0.1.2":{"name":"remix-typedjson","version":"0.1.2","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","react":"^17.0.2 || ^18.0.0"},"types":"./dist/index.d.ts","gitHead":"c1ed8747d60cd651be689fc1eb327f4a00701f81","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.1.2","_nodeVersion":"16.14.2","_npmVersion":"8.18.0","dist":{"integrity":"sha512-N5eEUK21IDkTPMPNJGYrDzwfwtfXRUTYxo/U5YBYhgfWr4kkl+jhzjo7BInfzSCfgxBhLni2DWi/XqLYu1UDWA==","shasum":"17dbf27378f8083b3f6f4d3460a8d522c6760115","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.1.2.tgz","fileCount":16,"unpackedSize":39227,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNCCVZyhJvtOV7awud9huekhU8tzlxyiEEBAgJhx6IUgIhAOj/Y0cWVfSAVuF8/QJ7hiJVDGi+u/t9QMRID/aKqE75"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGLHOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpOrQ/9F1apAalHN8PW70eXHrfmS2k16tE7/BDf8ipGNNwZuFNFGG7L\r\n4KetZx+E3e/IgaUPCVSAWPIZs/ChJlAlpExq+r1MBhDwyQ8Z6s6BlBi6pWyU\r\noKF+phhxJaVpRQYmMHPkgNykvlFT0tO1nFFDhOS7TQTi3b9d8LHDb3Vv+cex\r\n0xt3nCRXDLrrQnG9TptwvZiutR7kQpe4eqEm8Pf5B0QJpoVUoUVWxw6uu2ol\r\npsv+/1dLFB2hfsduA+x6WGKKXEgMdgRWYq1+LhzIDpDs25GlSvhRDoN7orz0\r\nvbTJeG/QvDZzoGmtoiPNgpB+UpWnwyZoq/0QKJgg5V4zqjuuyKepQ27z2JIo\r\n/8P9vcptQxOYMhNlobW07QO8e+j7BKpi3SJeEQvVnSE0a2n8yB42Mbcc+ZQF\r\nRsAdNgVzOVqKVMlH+XZrYZjJebJZWElihRx8UQth0HnEOoT6fAK9qmKzlYWZ\r\nCx3vgnhTnVjPnR5X32Mi+kKobh8ie/gpmdNvF7A1zJdzsNkQWxyV8gjK3s1i\r\nRV1KwFRxE8TMkiL4TQIoQiq9zYZ3M4RK8m0gASRj5EBAu4XEEtoSPmJCxwjp\r\nHezqOKAaOJjxQwSeoNytxKDq7EWo8NgDLCbuJwfIKjSJdi+VmIvU8QPZqWUK\r\nNk6GzKidhyGgAK/RFLhNAf87hjDa6SrGFwI=\r\n=JlJq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.1.2_1662562766484_0.4786323152418286"},"_hasShrinkwrap":false},"0.1.3":{"name":"remix-typedjson","version":"0.1.3","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^17.0.2 || ^18.0.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","react":"^17.0.2 || ^18.0.0"},"types":"./dist/index.d.ts","gitHead":"a64e344f3245d9ca300aca946819f2e5802e009d","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.1.3","_nodeVersion":"16.14.2","_npmVersion":"8.18.0","dist":{"integrity":"sha512-+KjrfDxYicS7MzymlfKhcJUaUTQf9Rdp7bFg/sJjsSDoMDG53f2ULnpKvU55E8jHOT/9T1v5Z/OQDGnqhRlh0A==","shasum":"66bb2310271dcb4c0058b7a073b9245bc6494c93","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.1.3.tgz","fileCount":16,"unpackedSize":39870,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBCdXmi9ipdeZ7w1r1vEi5MlJANlHJX4RNJsNHA45IHdAiEA704pgM1d/iFDF36dIP5Y8wuTSUm99jDzXOWUIvyQkJU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRuk6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpqPQ//TqSsPhxwfj0hGQR8G4/mpV8xHOEi+smqKWSYPlmmGxHS7cWw\r\nti26HZAHAOU0fgxChETzNhQ9ylX0HlKZbSrCAWYatXtJCnl46r26QabyvyaV\r\nn9o8GbZskOIt3M+mMT1LN4QVWAVv83RnpDoNYkhG6bA7ca/Y5CuNCh2BMPkc\r\nPofhTj8NT20fz8I28OUD7frCi9tY4B6Y/B2D/dkEBomzDZxoLbLojiUXunfI\r\n8R7uBHEFIpHxbi3a2dUDgMmOEPb1h2WoEZwCGx/aLiCF37KfSw5yoe+wYp9h\r\nNBDrPZl2uZHAEF+76INvTBXc1dOTvu+d2hYHom0QUXOtSSnvp3OWFu3Dv3Uq\r\nDxOB2DEHxJfIGyYF+MiVOmREX0IbBnINI/BC2OQ/1uT/vZBbq3OJDeDjqnxK\r\n4T2Gykq7/6CPlqChWDxfJPVmfhiRZTjkp6MQpvjLr/hqJXNnKnGveCc7TZc5\r\nYsdXiibyY4kppiTgpbbE5T8W+Zo1sxEnu0reLYdpqpj/i5EqVdHUaU3zmmvf\r\nqXyO1FWN82yeY5PBYrKYgo+vK4v2srwpng1Z2zKvP9AnDHLEb/1WBpSIMW7O\r\nMm4hUksqMybINPdUqnk/s0Ien1fBRv5rvYIxKIYvh+XFm5BWacLfKtXQQaad\r\nRw+KGS38Ikih3VYS9hXjHYZZKfD/3kQUUA8=\r\n=ZeIa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.1.3_1665591610530_0.581231452116638"},"_hasShrinkwrap":false},"0.1.4":{"name":"remix-typedjson","version":"0.1.4","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^17.0.2 || ^18.0.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","react":"^17.0.2 || ^18.0.0"},"types":"./dist/index.d.ts","gitHead":"01d627bbab8ae527e3f94e317b0c7eedfbf1aea6","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.1.4","_nodeVersion":"16.14.2","_npmVersion":"8.18.0","dist":{"integrity":"sha512-aiSGvGlD9Y7dJdBG825imUE9RGl7Q1nY2xzzrSXiOACn6b0WpQ0p9YdLm0/i6mpOFuudkIfj81RWo9Y8mQ+OhA==","shasum":"8e14f02ad50986b6455fb3d6a4b041ac5195c4be","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.1.4.tgz","fileCount":16,"unpackedSize":40925,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxn1qefg+AK9qaB6V9UNwdABy/glMt1mH13DYNua59MwIhAI5sgvE0mqxq+LM9je1HBcJKwE4kmy47lsXk23RbdeGF"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYX9lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpx/g//XN0Dpc7nlJ8e9YG+krmf+Oxo8OHERgn0ZDGYQGnJpOxfFNOi\r\nwbjpRPlwoZ5xo+VUzHlAeGyWxjsL/Dmr69vsPzID0HnIW/S/cuLYR5CjQerM\r\nPdKyPOHzjgfpmwVokeU8CjQS1v91yO/eGWdTWwC/e6+igmzMJRhmCLgsGLvG\r\n0zok4MN1oi2p60K8OdgpclSXd8FKSP2gibGzqGsS0Yy+uEDl6FY4f6f9jSXi\r\nQyJLDGEDaB52Ku/F6GIExPsLwBrGYf3u8l0tpqFMYT3v4zkBKaJyNHX45USv\r\nzLmhzHczgcQA5c251sS3XXJArZ74SJ+4j+zu7qAmEXf3U4FS4ts16QWIKhQL\r\ntrA7hO+363PWu/lRqE02L0UtKEo5L+fDq1JBFLPJG7nG00po2Z8hEmZf42mL\r\nYdrcbjZa65fZNfvXpO1bMW2Xzkn29UgnquPDYSkXT5hh0cjfZ24jWFFlCr68\r\nW3Fm2aq0vASqFyKfqGU9PFZ9Wc1GFe+f/2vFmoC/ws3XonERdW575MbPnutn\r\nWqx/prz2DSOOpj0AHqYG1gQjTTsjAkFvqYMk9rjQv8VhnMQyicYC8VZ2Yuri\r\nNT71MHV6mUUuVxOfReUlNTnjPtUcS9PsNWVFp4k+09UWpUox/sJUJGrBuju+\r\n9iNu3e2a8oCnVV/lRW8NADl6KWmqUgjbEpw=\r\n=3ki0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.1.4_1667333988988_0.8211162700577299"},"_hasShrinkwrap":false},"0.1.5":{"name":"remix-typedjson","version":"0.1.5","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepublish":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^17.0.2 || ^18.0.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","react":"^17.0.2 || ^18.0.0"},"types":"./dist/index.d.ts","gitHead":"f06ad176fd8bf6c95f36e15313b9665e72451b62","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.1.5","_nodeVersion":"16.14.2","_npmVersion":"8.18.0","dist":{"integrity":"sha512-lYNUke0DXNSL9iqNns9WWCjDXFyYBta+LA2TAegJUzYLdx4P8Zj7S0CpHOHhQleBCAgX59xWrRcDhfaytD3jkA==","shasum":"2ac018a4682ce1e8d31677c250ce36d55913bab9","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.1.5.tgz","fileCount":16,"unpackedSize":41367,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHpSIESa1oZxW/sMsfQGUaoPzxOdDRx/xEhnOR2c+eYDAiEAz41OezAQwCrSh5qVa+mGqumjzOlqEBrI+pOWwCmXz/c="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjaWaYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqUog/+I1BWqe+VjQgaPs466ijkWKMVwDs/ynw1aOkI5w6qf/FEeGX7\r\nWGANKjjzmNxlkJesrBrGltq8BkrY1yMUbxfzOk8C6TkkEquvuNyoAHUh0WhK\r\nf6MBeZ5qGZTrTcA0zRC4f8g3XeUrBYubD6QG4nL/cLjSF1CYKeYhJC7NLVWK\r\nALo4gAXnh7kRgdDsOIEMP3C1ydMeCJ3uS1kVnwzwpjX2RD8gy8Pnb/XfsvTu\r\nxrVbDW4MPX8gDTaGNuf/1zmjafT6LlhkjTjd7oq8rbGnxyMqvc09LNSKydau\r\nsZjMmTpvjFK2nlacEeC+a0aEkmzWTxvrktw3G5G6ZMGLtdOBSNoVtwpon/qL\r\n3yz/gMEDdVjmHLq9FggVbbkE80GWhgyROijdByI7KsRPJNYPI70FaWoA2WBg\r\nEDwPMshird3gtzyjf6uWO4K9jxk3mmJFHddVlUmA8yOtsB+wyp2hR1vxhS1s\r\n64gyEFXzRuyZLECHwO3mEYOoRCTQMlExFPiDx+bktVP6z7/Ta/Y/Gz34e0z4\r\nCzj0mCgc29Dfi0/BCsTKm18oUYwKIRK59Ho4kd5GQr4P+/LwMxPeu2+xvWrR\r\n/ZJvoRfKkhPb6MDdBS4UHJfQshUHLX38A6JvPiECrwqQGyih3yEs2u0Q/piw\r\n9gJMIpNzzGhAwa353gAkf8bFlYfXNpWqg5c=\r\n=b0pI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.1.5_1667851928736_0.46867457219315556"},"_hasShrinkwrap":false},"0.1.6":{"name":"remix-typedjson","version":"0.1.6","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^17.0.2 || ^18.0.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","react":"^17.0.2 || ^18.0.0"},"types":"./dist/index.d.ts","gitHead":"cd16e0506c4add3f8612d4922743dc12a28d5dac","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.1.6","_nodeVersion":"16.14.2","_npmVersion":"8.18.0","dist":{"integrity":"sha512-3weYEM1drz7la8orRQPJS0iwIj6Zzk4Fimr9cm7srTQow2TArtxTmeZIHicEYrq0EAcBOhXAyxCaik7zmoavXQ==","shasum":"ff8c83538cc51f9b4686fac3be2b93087449d2ad","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.1.6.tgz","fileCount":16,"unpackedSize":41501,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCW8eO96bjKBfafYo5PfG2icLxZ7u5BFJM/rzaZaJfizAIhAJZ8WfGdTNOtYUuyM9ZJ3LcC3K+5CEBshgj/4tisqvcZ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjap8oACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmprSg/6A0s04jebhrgrojp33vNsz/0pjwmNeByaahdHT4ho8ajbZBId\r\naTyUQdlbPsoC8Vku1fU/pFriVg9IrKKmi1QsI28rBQqHCbAr1kMMqFP+mvw9\r\nzBx2ophQyaBYzQst91sb8Fs4ItibV72iu/6mN8jDaq1yW941FqrCqqkFLBMk\r\nwOfi7OGi8oKQGid57VSiHgv90KRD3ALGVqApJl21sTmdAuT52KOi/oYNLWbj\r\neTSuz4+PSviS+keoFhfo1A6CR2rdOjBqhnlT/pdDPeT8oprns3jVDPisCxfB\r\nBs7AKm6/Fw2L8uIWwWcZYRWtTf2WOzqV+Q0wAA+vQ/xvFBN4UNrxPaxthqPc\r\nbzVWLsAXreV6Mnzj/RpUquLwSTLysJr+2o8EO+AYPkAcHAlYFRfTvE255Bs+\r\nLkY1htWxlOkc9tvVLgwvb4JaAD686rgkKse5ac/FiJyOooMU/g3va0bGBbUY\r\nzwfPG3fADkwBk73oBFbi9uj1fsSF02QKdxvej2ESHAD70kUl+EqOTgPg3u+D\r\nMcLBxcXZ1sBmeUTvvyFLkUCaV5CFFGVdPxmj8iyV4pnWVO7FO/9dxRkeQsBm\r\ne6kqdeuttpjiBRMX0xPD60fEmHNwko6Rn8yjBHLUD+cWEQxIFI6i1EdMs6JB\r\nYxHNPa9UXrO3od3fK0ENu+K9E4D0XxzgVF0=\r\n=BoNV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.1.6_1667931943944_0.45914271772730686"},"_hasShrinkwrap":false},"0.1.7":{"name":"remix-typedjson","version":"0.1.7","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","@types/jest":"^27.0.3","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^17.0.2 || ^18.0.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.6.5","@remix-run/server-runtime":"^1.6.5","react":"^17.0.2 || ^18.0.0"},"types":"./dist/index.d.ts","gitHead":"b4aad6b5578ee7919e03139595ed535999389ea7","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_id":"remix-typedjson@0.1.7","_nodeVersion":"16.14.2","_npmVersion":"8.18.0","dist":{"integrity":"sha512-h7WoKbKBGsVdZZp3s79U5SDrMvQ3We7BjGaSIPxchnJOTS3GUDat0kBoy/gh9TVKRf5KYCee+K1UlFAYQmLQsA==","shasum":"215afa7da56effe86630b24ced79ff8ff1694ff1","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.1.7.tgz","fileCount":16,"unpackedSize":43314,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/tDxlQhxhQ21lgM1CQCWIZlwFet6f78/pAx39B9WNtwIgLBwkiJaKxBDGXEk+4w7DASCbPjXFMtHfL2Q+8Ga4Tm8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtc07ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrjuRAAlpvzF+5i4U/VIgcyeMqJB/A4T23yGHlghbZApAfQqN83Fuof\r\nqFgRSbQxwuzX/da7PIpxp7XnSACGGApso9ZIEekyCrOrV/qhLuaEWjEeobJ9\r\nhYDG5/dclyoY4Pu6f43HSS0EeAOMHKQlCm7Z0MuDKRHQ3OsO5IuAlUEw1ZPp\r\n/LlM+aaieyDKriDICEGYe/PKCh6eM0QpZuYDLBatZLkHrrDLByu8oAXeDQs1\r\n+Eq82Jns8kXitncU0fNtB+pG2NSnDy8zb8Vq19R2fsPgxQsQ46to88BWa/9f\r\niMtlXoHzAhOC+Ipctt9b+x4i+r1LEjyyTsvlUy9q5WrPJpk8uSUufOG8DSJr\r\nIIdfAXRpD4S/RStKdTa/ZYRwxdDxcSRY2WCbWzqp969XY11sY9LRi8wihteC\r\nIpJBPduteUhwk48bdg+140ukx3CAs0kE6lD64yUHvs+xF4zogKTicfL+O145\r\nzkOJ4boYOXlnjNcmbgY9do1d4A/w0j1bBEsGzadnjjrT63WDPIHuxr1G1pfN\r\nNFvqb//YiqO07TPSfHd0gpLgM7Ek2A8rxZDXjZfOnozZt0WcQz3ejMhmyKvc\r\nZVWlHYrGswSXbeu9zf6PB97onSCWIz32I9Dua9eeqOKY/pRuSI2euMQ6cTU7\r\nwV7+OLe7e3GzlLl0NChup3zoW0ouNeE/ToY=\r\n=ecV9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.1.7_1672858938872_0.7331089192603091"},"_hasShrinkwrap":false},"0.2.0":{"name":"remix-typedjson","version":"0.2.0","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.16.0","@remix-run/server-runtime":"^1.16.0","@types/jest":"^27.0.3","@types/react":"^18.0.25","@types/react-dom":"^18.0.8","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","decimal.js":"^10.4.3","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0","@remix-run/server-runtime":"^1.16.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.2.0","gitHead":"388ac72d22e6d73a3128da70167505f83e788fc8","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"18.17.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-vSi+Q8h9Mej1eljxu/3Jim080hQ6DCmQxrpntmlrQy/DoIBn153z/TXd8jiTg5cAtxP5/EmL6DTcK2NCi+6EBA==","shasum":"70bfeda0bf3d85e850699dc11db38ef0b2791343","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.2.0.tgz","fileCount":16,"unpackedSize":50227,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAt4N3tnxlMPGh7SJnStcGr09h+DF1mHdI9OK5L5iunaAiEA3WeHfwBFXd2vNxBPxhKaqQFzBXo/Z3yzvWMGLIPzcCs="}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.2.0_1691794626428_0.9104506631414615"},"_hasShrinkwrap":false},"0.2.1":{"name":"remix-typedjson","version":"0.2.1","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.16.0","@remix-run/server-runtime":"^1.16.0","@types/jest":"^27.0.3","@types/react":"^18.0.25","@types/react-dom":"^18.0.8","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","decimal.js":"^10.4.3","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0 || ^2.0","@remix-run/server-runtime":"^1.16.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.2.1","gitHead":"eb0d13977ed7bd69cccc399b435fabe7aa5da01a","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.6.1","_npmVersion":"9.8.1","dist":{"integrity":"sha512-LWi8+5oY8zmtWrxQ4VmacNRyjvfR5wQ+gGTcIvMFAbcs1wvb2RXjZ1iF/f8LftNRF0qlVc7ZqdZmZDhxgv8SSg==","shasum":"cb57bfa3dc83378fdb20507f483df6e96f847a6d","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.2.1.tgz","fileCount":16,"unpackedSize":49049,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOKX9FSGnhPw9nOdQwDh1Amz2rsPXB2pQe6vHtmey95AiBNvyXd28g//0CQ+WwjQZhN+6RQhA6QHgS60R3aYdtOjg=="}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.2.1_1695391981225_0.013651069438273877"},"_hasShrinkwrap":false},"0.2.2":{"name":"remix-typedjson","version":"0.2.2","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.16.0","@remix-run/server-runtime":"^1.16.0","@types/jest":"^27.0.3","@types/react":"^18.0.25","@types/react-dom":"^18.0.8","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","decimal.js":"^10.4.3","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0 || ^2.0","@remix-run/server-runtime":"^1.16.0 || ^2.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.2.2","gitHead":"eb0d13977ed7bd69cccc399b435fabe7aa5da01a","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.6.1","_npmVersion":"9.8.1","dist":{"integrity":"sha512-M6U7OHDReFoinDh5m2m7gJtmLlKrqxdeS+aygyIqHeTu7TLGahcQ8h0RZ0fs2JSd3QV1zJirG2zHpwCN1SK+TQ==","shasum":"1826b03b2115f606a1490611bf925148f4258ccf","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.2.2.tgz","fileCount":16,"unpackedSize":49121,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC5GT0W3K1uGGpUult0hC2R1Lwe+je/GDHmpzu3gQKt+AiBdR1EclHR+DB2vxqOoIU7YWSv+w25i+gV1RSY0qIr79Q=="}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.2.2_1695392289519_0.8981793162919687"},"_hasShrinkwrap":false},"0.3.0":{"name":"remix-typedjson","version":"0.3.0","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.16.0","@remix-run/server-runtime":"^1.16.0","@types/jest":"^27.0.3","@types/react":"^18.0.25","@types/react-dom":"^18.0.8","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","decimal.js":"^10.4.3","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0 || ^2.0","@remix-run/server-runtime":"^1.16.0 || ^2.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.3.0","gitHead":"98a72d47c3381d3f08328db367c16f4daa7e7fb3","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.6.1","_npmVersion":"9.8.1","dist":{"integrity":"sha512-eBMbWxDX/mEJvhf3ecddI4gsvoI2pBhBnNiFGu7UVzfkRMDJ3hPM3zNZ7MdHiQkSQld+tfrP19xXy7q7RU+EJQ==","shasum":"cf000dee942ba18af760d3fc4f611256abf3a5a4","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.3.0.tgz","fileCount":16,"unpackedSize":54578,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCl3mWxH6NebdqIyXqvnZmAM6uHAtF/+zRoSDtfmL/qpAIgLZZw/xGQSifQuH3Yxr2dfpcq6VNu7HOMwqM0hGe33s0="}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.3.0_1697153802668_0.6531031546664232"},"_hasShrinkwrap":false},"0.3.1":{"name":"remix-typedjson","version":"0.3.1","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@remix-run/react":"^1.16.0","@remix-run/server-runtime":"^1.16.0","@types/jest":"^27.0.3","@types/react":"^18.0.25","@types/react-dom":"^18.0.8","all-contributors-cli":"^6.20.0","babel-jest":"^27.4.2","decimal.js":"^10.4.3","esbuild":"^0.14.38","esbuild-register":"^3.3.2","jest":"^27.4.3","prettier":"^2.7.1","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^3.0.2","ts-jest":"^27.0.7","ts-node":"^10.4.0","typescript":"^4.6.4"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0 || ^2.0","@remix-run/server-runtime":"^1.16.0 || ^2.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.3.1","gitHead":"80dc4cb2c544d8c1b0e9f58f1fc5505ffa7cf9d2","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.6.1","_npmVersion":"9.8.1","dist":{"integrity":"sha512-XaLU3slWaUXTWPQe6u5rX4xJuqr665+wk1mRmepFu5Hn4DTP9V0zGOkCqCphCExxZ2Kqg5u+uZbas6AZRaxQzA==","shasum":"4063976c6ff94abfa86ad1693f6b6ec6b8245bdd","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.3.1.tgz","fileCount":16,"unpackedSize":56529,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICY7IJGBnuVQ7jbQug/tfHSb55ncEVmkuvw3qZItoCG6AiBVRdnpLCPz2LzwtBVb0MyJusmevCOpIyZ4bnlbQD9bMQ=="}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.3.1_1697810858631_0.9511524986415305"},"_hasShrinkwrap":false},"0.4.0":{"name":"remix-typedjson","version":"0.4.0","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.23.3","@babel/preset-env":"^7.23.3","@babel/preset-typescript":"^7.23.3","@remix-run/react":"^2.2.0","@remix-run/server-runtime":"^2.2.0","@types/jest":"^29.5.8","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","all-contributors-cli":"^6.26.1","babel-jest":"^29.7.0","decimal.js":"^10.4.3","esbuild":"^0.19.5","esbuild-register":"^3.5.0","jest":"^29.7.0","prettier":"^3.1.0","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.4.0","typescript":"^5.1.6"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.4.0","gitHead":"328f9a19b1a786e67ee1b8c4ee46bd4eb1a46c98","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.6.1","_npmVersion":"10.2.3","dist":{"integrity":"sha512-5ixGPMKrYs+LD4HY+y+DnAXctnCpM1Vcnl8WCBl/uBtm9ZAFnfyw5SNRnWXxHYI7ALmfgTT9krnRkJiOi2hjCg==","shasum":"ab8bf6fbfe24d9df4627468ee98de4cc45c6b173","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.4.0.tgz","fileCount":16,"unpackedSize":57072,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHI/Dwi+eldpS8uabJlwmRzhRksJesEsn/pmNgt8gV6CAiEA/G0ANNlxyREw2pj3du0RPdbgYm0DJwDiQK0RalynFbg="}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.4.0_1700083976099_0.7112124113919376"},"_hasShrinkwrap":false},"0.4.1":{"name":"remix-typedjson","version":"0.4.1","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","browser":"/dist/esm/index.js","main":"./dist/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.23.3","@babel/preset-env":"^7.23.3","@babel/preset-typescript":"^7.23.3","@remix-run/react":"^2.2.0","@remix-run/server-runtime":"^2.2.0","@types/jest":"^29.5.8","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","all-contributors-cli":"^6.26.1","babel-jest":"^29.7.0","decimal.js":"^10.4.3","esbuild":"^0.19.5","esbuild-register":"^3.5.0","jest":"^29.7.0","prettier":"^3.1.0","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.4.0","typescript":"^5.1.6"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0 || ^2.0","@remix-run/server-runtime":"^1.16.0 || ^2.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.4.1","gitHead":"a7395aee0d894c51f005efcac6dcbbd4aad1d696","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.6.1","_npmVersion":"10.2.3","dist":{"integrity":"sha512-AL6LdNajqce1Exy6aB1bD6GYMk90S6H31e8kDCi6jLgBi4K82Ph604lqGGzalswaPPYckYK+NZzgvhWEY7JCDw==","shasum":"548a68bb7a3520ce0fd8e9810cf96078e45b5c29","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.4.1.tgz","fileCount":16,"unpackedSize":57293,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHFXayGVoMnaWfgOV5MzHPD9caaH0AiG0aYdPFMRPfFQIhALbYzw7r20C9EP4WLHYOP2V9W23kr4Bxpj8ScoYlrWY8"}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.4.1_1700856730025_0.03301812066316012"},"_hasShrinkwrap":false},"0.5.1-pre.0":{"name":"remix-typedjson","version":"0.5.1-pre.0","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","type":"module","exports":{"require":"./dist/cjs/index.js","import":"./dist/esm/index.js"},"main":"./dist/cjs/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm && echo '{\"type\": \"module\"}' > ./dist/esm/package.json","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist/csj && echo '{\"type\": \"commonjs\"}' > ./dist/csj/package.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.23.3","@babel/preset-env":"^7.23.3","@babel/preset-typescript":"^7.23.3","@remix-run/react":"^2.2.0","@remix-run/server-runtime":"^2.2.0","@types/jest":"^29.5.8","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","all-contributors-cli":"^6.26.1","babel-jest":"^29.7.0","decimal.js":"^10.4.3","esbuild":"^0.19.5","esbuild-register":"^3.5.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","prettier":"^3.1.0","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.4.0","typescript":"^5.1.6"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0 || ^2.0","@remix-run/server-runtime":"^1.16.0 || ^2.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.5.1-pre.0","readme":"# remix-typedjson\n\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square)](#contributors-)\n\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\nThis package is a replacement for [`superjson`](https://github.com/blitz-js/superjson) to use in your [Remix](https://remix.run/) app. It handles a subset\nof types that `superjson` supports, but is faster and smaller.\n\nNOTE: Although faster, `remix-typedjson` is nowhere near as flexible as `superjson`. It only supports a subset of types with no extensibility. If you need the advanced features of `superjson`, then I definitely recommend it.\n\nExample site: https://remix-typedjson-example-production.up.railway.app/\n\nExample repo: https://github.com/kiliman/remix-typedjson-example\n\nThe following types are supported:\n\n- `Date`\n- `BigInt`\n- `Set`\n- `Map`\n- `RegExp`\n- `undefined`\n- `Error`\n- `NaN`\n- `Number.POSITIVE_INFINITY`\n- `Number.NEGATIVE_INFINITY`\n\n# 🚧 Work In Progress\n\nSets and Maps currently only support string keys and JSON serializable values. Complex types coming soon.\n\n# 🛠 How to Use with Remix\n\nIn order to get full-type fidelity and type inference, you must be on Remix\nv1.6.5+. You will also need to import the following replacement functions.\n\n## `typedjson`\n\n### Installation\n\n```bash\nnpm i remix-typedjson\n```\n\nReplacement for Remix `json` helper. It also supports the optional `ResponseInit`, so you can return headers, etc.\n\nMake sure your `loader` and `action` use the new declaration format:\n\n```js\n❌ export const loader: LoaderFunction = async ({request}) => {}\n❌ export const action: ActionFunction = async ({request}) => {}\n\n✅ export const loader = async ({request}: DataFunctionArgs) => {}\n✅ export const action = async ({request}: DataFunctionArgs) => {}\n\n✅ export async function loader({request}: DataFunctionArgs) {}\n✅ export async function action({request}: DataFunctionArgs) {}\n```\n\n### Usage\n\n```js\nreturn typedjson(\n  { greeting: 'hello', today: new Date() },\n  // ResponseInit is optional, just like the `json` helper\n  { headers: { 'set-header': await commitSession(session) } },\n)\n```\n\n## `useTypedLoaderData`\n\nReplacement for Remix `useLoaderData`. Use the generic `<typeof loader>` to\nget the correct type inference.\n\n### Usage\n\n```js\nconst loaderData = useTypedLoaderData<typeof loader>()\n```\n\n## `useTypedActionData`\n\nReplacement for Remix `useActionData`. Use the generic `<typeof action>` to\nget the correct type inference.\n\n### Usage\n\n```js\nconst actionData = useTypedActionData<typeof action>()\n```\n\n## `typeddefer`\n\n✨ New in v0.3.0\n\nReplacement for Remix `defer` helper. It also supports the optional `ResponseInit`, so you can return headers, etc.\n\n### Usage\n\n```js\nreturn typeddefer({\n  fastData: { message: 'This is fast data', today: new Date() },\n  slowData: new Promise(resolve => setTimeout(resolve, 2000)).then(() => {\n    return { message: 'This is slow data', tomorrow: new Date() }\n  }),\n})\n```\n\n## `<TypedAwait>`\n\nIn your route component, use the new `<TypedAwait>` component instead of the\nRemix `<Await>` component\n\n### Usage\n\n```js\n\nexport default function DeferRoute() {\n  const { fastData, slowData } = useTypedLoaderData<typeof loader>()\n  return (\n    <main>\n      <h1>Defer Route</h1>\n      <h2>Fast Data</h2>\n      <pre>{JSON.stringify(fastData, null, 2)}</pre>\n      <div>fastData.today is {fastData.today.toLocaleString()}</div>\n      <Suspense fallback={<p>Loading slow data...</p>}>\n        <TypedAwait\n          resolve={slowData}\n          errorElement={<p>Error loading slow data!</p>}\n        >\n          {slowData => (\n            <div>\n              <h2>Slow Data</h2>\n              <pre>{JSON.stringify(slowData, null, 2)}</pre>\n              <div>\n                slowData.tomorrow is {slowData.tomorrow.toLocaleString()}\n              </div>\n            </div>\n          )}\n        </TypedAwait>\n      </Suspense>\n    </main>\n  )\n}\n```\n\n## `useTypedRouteLoaderData`\n\nHelper for `useMatches` that returns the route data based on provided route `id`\n\n### Usage\n\n```ts\nimport { loader as rootLoader } from '~/root'\n\nconst rootData = useTypedRouteLoaderData<typeof rootLoader>('root')\n```\n\n## `useTypedFetcher`\n\n✨ Add support for `key` in v0.4.0\n\nReplacement for Remix `useFetcher`. Use the generic `<typeof loader|action>` to\nget the correct type inference for the `fetcher.data` property.\n\n### Usage\n\n```ts\nconst fetcher = useTypedFetcher<typeof action>({ key: 'abc' })\nfetcher.data // data property is fully typed\n```\n\n## `redirect`\n\nIn order to return a `redirect`, you will need to import the `redirect` function from this package, in order for the type inference to work properly.\n\nHowever, you can also `throw redirect()` and you can use the original `redirect` function from Remix.\n\n## ~~`TypedMetaFunction`~~\n\n🔥 Removed in v0.4.0 since it didn't actually work correctly. Will be replaced\nwith a `typedmeta` wrapper function in next release\n\nYou can now get typed arguments for both `data` and `parentsData` from your `meta`\nfunction export. Based on [new feature coming to Remix](https://github.com/remix-run/remix/pull/4022)\n\n```js\nexport const meta: TypedMetaFunction<typeof loader> = ({ data }) => {\n  return {\n    title: `Posts | ${data?.post.title}`,\n  }\n}\n// for parentsData, you can specify a Record of typed loaders keyed by route id\n// root.tsx\nexport type LoaderType = typeof loader\n// routes/parent.tsx\nexport type LoaderType = typeof loader\n// routes/child.tsx\nimport { type LoaderType as RootLoaderType } from '~/root'\nimport { type LoaderType as ParentLoaderType } from '~/routes/parent'\n\nexport const meta: TypedMetaFunction<\n  typeof loader,\n  // parent loader types keyed by route id\n  {\n    'root': RootLoader\n    'routes/parent': ParentLoader\n  }\n> = ({ data, parentsData }) => {\n  // access typed parent data by route id\n  const rootData = parentsData['root']\n  const parentData = parentsData['routes/parent']\n\n  return {\n    title: `Posts | ${data?.post.title}`,\n  }\n}\n```\n\n## `registerCustomType`\n\n✨ New in v0.2.0\n\n`remix-typed-json` support a limited number of native types in order to keep the\nbundle small. However, if you need to support a custom type like `Decimal`, then\nuse the `registerCustomType` API. This way you only pay the cost of the custom\ntype if you use it.\n\n```ts\ntype CustomTypeEntry<T> = {\n  type: string\n  is: (value: unknown) => boolean\n  serialize: (value: T) => string\n  deserialize: (value: string) => T\n}\n\nexport function registerCustomType<T>(entry: CustomTypeEntry<T>)\n```\n\n### Usage\n\nRegister the custom type in _root.tsx_ once.\n\n```ts\n// root.tsx\nimport {\n  typedjson,\n  registerCustomType,\n  useTypedLoaderData,\n} from 'remix-typedjson'\n\nimport Decimal from 'decimal.js'\n\nregisterCustomType({\n  type: 'decimal',\n  is: (value: unknown) => value instanceof Decimal,\n  serialize: (value: Decimal) => value.toString(),\n  deserialize: (value: string) => new Decimal(value),\n})\n```\n\nYou can now serialize and deserialize the `Decimal` type.\n\n```ts\n// route.tsx\nexport function loader() {\n  const d = new Decimal('1234567890123456789012345678901234567890')\n  return typedjson({ greeting: 'Hello World', today: new Date(), d })\n}\n\nexport default function Index() {\n  const data = useTypedLoaderData<typeof loader>()\n\n  return (\n    <>\n      <h2>Loader Data</h2>\n      <pre>{JSON.stringify(data, null, 2)}</pre>\n      <ul>\n        <li>today: {data.today.toLocaleString()}</li>\n        <li>\n          d instanceof Decimal: {data.d instanceof Decimal ? 'true' : 'false'}\n        </li>\n        <li>d: {data.d.toFixed(0)}</li>\n      </ul>\n    </>\n  )\n}\n```\n\n<img src=\"https://user-images.githubusercontent.com/47168/260161616-5eb9c4c7-3891-4f34-b89c-f927800b081d.png\" style=\"max-width: 720px;\" >\n\n<img src=\"https://user-images.githubusercontent.com/47168/260161632-933fc685-fbee-40fd-a2b3-dbe61da77435.png\" style=\"max-width: 720px;\" >\n\n## 😍 Contributors\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://kiliman.dev/\"><img src=\"https://avatars.githubusercontent.com/u/47168?v=4?s=100\" width=\"100px;\" alt=\"Kiliman\"/><br /><sub><b>Kiliman</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kiliman\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kiliman\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://kentcdodds.com/\"><img src=\"https://avatars.githubusercontent.com/u/1500684?v=4?s=100\" width=\"100px;\" alt=\"Kent C. Dodds\"/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kentcdodds\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Skn0tt\"><img src=\"https://avatars.githubusercontent.com/u/14912729?v=4?s=100\" width=\"100px;\" alt=\"Simon Knott\"/><br /><sub><b>Simon Knott</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Skn0tt\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/issues?q=author%3ASkn0tt\" title=\"Bug reports\">🐛</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Skn0tt\" title=\"Tests\">⚠️</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Tony-Truand\"><img src=\"https://avatars.githubusercontent.com/u/7480192?v=4?s=100\" width=\"100px;\" alt=\"Tony Truand\"/><br /><sub><b>Tony Truand</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Tony-Truand\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Tony-Truand\" title=\"Tests\">⚠️</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/ProdByGR\"><img src=\"https://avatars.githubusercontent.com/u/29157049?v=4?s=100\" width=\"100px;\" alt=\"Gregori Rivas\"/><br /><sub><b>Gregori Rivas</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=ProdByGR\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/glomyst\"><img src=\"https://avatars.githubusercontent.com/u/5370064?v=4?s=100\" width=\"100px;\" alt=\"Afsah Nasir\"/><br /><sub><b>Afsah Nasir</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=glomyst\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/memark\"><img src=\"https://avatars.githubusercontent.com/u/318504?v=4?s=100\" width=\"100px;\" alt=\"Magnus Markling\"/><br /><sub><b>Magnus Markling</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=memark\" title=\"Code\">💻</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/joelazar\"><img src=\"https://avatars.githubusercontent.com/u/16268238?v=4?s=100\" width=\"100px;\" alt=\"Jozsef Lazar\"/><br /><sub><b>Jozsef Lazar</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=joelazar\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/lukebowerman\"><img src=\"https://avatars.githubusercontent.com/u/19156294?v=4?s=100\" width=\"100px;\" alt=\"Luke Bowerman\"/><br /><sub><b>Luke Bowerman</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=lukebowerman\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://maker.js.org/\"><img src=\"https://avatars.githubusercontent.com/u/11507384?v=4?s=100\" width=\"100px;\" alt=\"Dan Marshall\"/><br /><sub><b>Dan Marshall</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=danmarshall\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://trigger.dev/\"><img src=\"https://avatars.githubusercontent.com/u/534?v=4?s=100\" width=\"100px;\" alt=\"Eric Allam\"/><br /><sub><b>Eric Allam</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=ericallam\" title=\"Documentation\">📖</a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","readmeFilename":"README.md","gitHead":"a547f6d469c733bda4c726a709f4841326795957","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-vYPk/Hl4GHyG+npIxext71BtNTVu6My22egTkh8kgiD1B2VUixjzhiMSkSy/4YqbLSQ/+PCTWTLpIhlR4oiWrg==","shasum":"444f3dd584c869f4c1be1b87187e5d4c01dae8ab","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.5.1-pre.0.tgz","fileCount":16,"unpackedSize":56754,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJzofUB7QpfBWgI6St4ahKpWXSDQdfrdujVimeLIBsUAIgGEiEnHjfGyhuueBZ5IGwpb3IoDbUs+SOfOa+ZzR45R0="}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.5.1-pre.0_1709071269345_0.7454401909803365"},"_hasShrinkwrap":false},"0.5.2-pre.0":{"name":"remix-typedjson","version":"0.5.2-pre.0","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","type":"module","exports":{"require":"./dist/cjs/index.js","import":"./dist/esm/index.js"},"main":"./dist/cjs/index.js","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run clean && npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm && echo '{\"type\": \"module\"}' > ./dist/esm/package.json","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist/cjs && echo '{\"type\": \"commonjs\"}' > ./dist/cjs/package.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.23.3","@babel/preset-env":"^7.23.3","@babel/preset-typescript":"^7.23.3","@remix-run/react":"^2.2.0","@remix-run/server-runtime":"^2.2.0","@types/jest":"^29.5.8","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","all-contributors-cli":"^6.26.1","babel-jest":"^29.7.0","decimal.js":"^10.4.3","esbuild":"^0.19.5","esbuild-register":"^3.5.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","prettier":"^3.1.0","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.4.0","typescript":"^5.1.6"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0 || ^2.0","@remix-run/server-runtime":"^1.16.0 || ^2.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.5.2-pre.0","readme":"# remix-typedjson\n\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square)](#contributors-)\n\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\nThis package is a replacement for [`superjson`](https://github.com/blitz-js/superjson) to use in your [Remix](https://remix.run/) app. It handles a subset\nof types that `superjson` supports, but is faster and smaller.\n\nNOTE: Although faster, `remix-typedjson` is nowhere near as flexible as `superjson`. It only supports a subset of types with no extensibility. If you need the advanced features of `superjson`, then I definitely recommend it.\n\nExample site: https://remix-typedjson-example-production.up.railway.app/\n\nExample repo: https://github.com/kiliman/remix-typedjson-example\n\nThe following types are supported:\n\n- `Date`\n- `BigInt`\n- `Set`\n- `Map`\n- `RegExp`\n- `undefined`\n- `Error`\n- `NaN`\n- `Number.POSITIVE_INFINITY`\n- `Number.NEGATIVE_INFINITY`\n\n# 🚧 Work In Progress\n\nSets and Maps currently only support string keys and JSON serializable values. Complex types coming soon.\n\n# 🛠 How to Use with Remix\n\nIn order to get full-type fidelity and type inference, you must be on Remix\nv1.6.5+. You will also need to import the following replacement functions.\n\n## `typedjson`\n\n### Installation\n\n```bash\nnpm i remix-typedjson\n```\n\nReplacement for Remix `json` helper. It also supports the optional `ResponseInit`, so you can return headers, etc.\n\nMake sure your `loader` and `action` use the new declaration format:\n\n```js\n❌ export const loader: LoaderFunction = async ({request}) => {}\n❌ export const action: ActionFunction = async ({request}) => {}\n\n✅ export const loader = async ({request}: DataFunctionArgs) => {}\n✅ export const action = async ({request}: DataFunctionArgs) => {}\n\n✅ export async function loader({request}: DataFunctionArgs) {}\n✅ export async function action({request}: DataFunctionArgs) {}\n```\n\n### Usage\n\n```js\nreturn typedjson(\n  { greeting: 'hello', today: new Date() },\n  // ResponseInit is optional, just like the `json` helper\n  { headers: { 'set-header': await commitSession(session) } },\n)\n```\n\n## `useTypedLoaderData`\n\nReplacement for Remix `useLoaderData`. Use the generic `<typeof loader>` to\nget the correct type inference.\n\n### Usage\n\n```js\nconst loaderData = useTypedLoaderData<typeof loader>()\n```\n\n## `useTypedActionData`\n\nReplacement for Remix `useActionData`. Use the generic `<typeof action>` to\nget the correct type inference.\n\n### Usage\n\n```js\nconst actionData = useTypedActionData<typeof action>()\n```\n\n## `typeddefer`\n\n✨ New in v0.3.0\n\nReplacement for Remix `defer` helper. It also supports the optional `ResponseInit`, so you can return headers, etc.\n\n### Usage\n\n```js\nreturn typeddefer({\n  fastData: { message: 'This is fast data', today: new Date() },\n  slowData: new Promise(resolve => setTimeout(resolve, 2000)).then(() => {\n    return { message: 'This is slow data', tomorrow: new Date() }\n  }),\n})\n```\n\n## `<TypedAwait>`\n\nIn your route component, use the new `<TypedAwait>` component instead of the\nRemix `<Await>` component\n\n### Usage\n\n```js\n\nexport default function DeferRoute() {\n  const { fastData, slowData } = useTypedLoaderData<typeof loader>()\n  return (\n    <main>\n      <h1>Defer Route</h1>\n      <h2>Fast Data</h2>\n      <pre>{JSON.stringify(fastData, null, 2)}</pre>\n      <div>fastData.today is {fastData.today.toLocaleString()}</div>\n      <Suspense fallback={<p>Loading slow data...</p>}>\n        <TypedAwait\n          resolve={slowData}\n          errorElement={<p>Error loading slow data!</p>}\n        >\n          {slowData => (\n            <div>\n              <h2>Slow Data</h2>\n              <pre>{JSON.stringify(slowData, null, 2)}</pre>\n              <div>\n                slowData.tomorrow is {slowData.tomorrow.toLocaleString()}\n              </div>\n            </div>\n          )}\n        </TypedAwait>\n      </Suspense>\n    </main>\n  )\n}\n```\n\n## `useTypedRouteLoaderData`\n\nHelper for `useMatches` that returns the route data based on provided route `id`\n\n### Usage\n\n```ts\nimport { loader as rootLoader } from '~/root'\n\nconst rootData = useTypedRouteLoaderData<typeof rootLoader>('root')\n```\n\n## `useTypedFetcher`\n\n✨ Add support for `key` in v0.4.0\n\nReplacement for Remix `useFetcher`. Use the generic `<typeof loader|action>` to\nget the correct type inference for the `fetcher.data` property.\n\n### Usage\n\n```ts\nconst fetcher = useTypedFetcher<typeof action>({ key: 'abc' })\nfetcher.data // data property is fully typed\n```\n\n## `redirect`\n\nIn order to return a `redirect`, you will need to import the `redirect` function from this package, in order for the type inference to work properly.\n\nHowever, you can also `throw redirect()` and you can use the original `redirect` function from Remix.\n\n## ~~`TypedMetaFunction`~~\n\n🔥 Removed in v0.4.0 since it didn't actually work correctly. Will be replaced\nwith a `typedmeta` wrapper function in next release\n\nYou can now get typed arguments for both `data` and `parentsData` from your `meta`\nfunction export. Based on [new feature coming to Remix](https://github.com/remix-run/remix/pull/4022)\n\n```js\nexport const meta: TypedMetaFunction<typeof loader> = ({ data }) => {\n  return {\n    title: `Posts | ${data?.post.title}`,\n  }\n}\n// for parentsData, you can specify a Record of typed loaders keyed by route id\n// root.tsx\nexport type LoaderType = typeof loader\n// routes/parent.tsx\nexport type LoaderType = typeof loader\n// routes/child.tsx\nimport { type LoaderType as RootLoaderType } from '~/root'\nimport { type LoaderType as ParentLoaderType } from '~/routes/parent'\n\nexport const meta: TypedMetaFunction<\n  typeof loader,\n  // parent loader types keyed by route id\n  {\n    'root': RootLoader\n    'routes/parent': ParentLoader\n  }\n> = ({ data, parentsData }) => {\n  // access typed parent data by route id\n  const rootData = parentsData['root']\n  const parentData = parentsData['routes/parent']\n\n  return {\n    title: `Posts | ${data?.post.title}`,\n  }\n}\n```\n\n## `registerCustomType`\n\n✨ New in v0.2.0\n\n`remix-typed-json` support a limited number of native types in order to keep the\nbundle small. However, if you need to support a custom type like `Decimal`, then\nuse the `registerCustomType` API. This way you only pay the cost of the custom\ntype if you use it.\n\n```ts\ntype CustomTypeEntry<T> = {\n  type: string\n  is: (value: unknown) => boolean\n  serialize: (value: T) => string\n  deserialize: (value: string) => T\n}\n\nexport function registerCustomType<T>(entry: CustomTypeEntry<T>)\n```\n\n### Usage\n\nRegister the custom type in _root.tsx_ once.\n\n```ts\n// root.tsx\nimport {\n  typedjson,\n  registerCustomType,\n  useTypedLoaderData,\n} from 'remix-typedjson'\n\nimport Decimal from 'decimal.js'\n\nregisterCustomType({\n  type: 'decimal',\n  is: (value: unknown) => value instanceof Decimal,\n  serialize: (value: Decimal) => value.toString(),\n  deserialize: (value: string) => new Decimal(value),\n})\n```\n\nYou can now serialize and deserialize the `Decimal` type.\n\n```ts\n// route.tsx\nexport function loader() {\n  const d = new Decimal('1234567890123456789012345678901234567890')\n  return typedjson({ greeting: 'Hello World', today: new Date(), d })\n}\n\nexport default function Index() {\n  const data = useTypedLoaderData<typeof loader>()\n\n  return (\n    <>\n      <h2>Loader Data</h2>\n      <pre>{JSON.stringify(data, null, 2)}</pre>\n      <ul>\n        <li>today: {data.today.toLocaleString()}</li>\n        <li>\n          d instanceof Decimal: {data.d instanceof Decimal ? 'true' : 'false'}\n        </li>\n        <li>d: {data.d.toFixed(0)}</li>\n      </ul>\n    </>\n  )\n}\n```\n\n<img src=\"https://user-images.githubusercontent.com/47168/260161616-5eb9c4c7-3891-4f34-b89c-f927800b081d.png\" style=\"max-width: 720px;\" >\n\n<img src=\"https://user-images.githubusercontent.com/47168/260161632-933fc685-fbee-40fd-a2b3-dbe61da77435.png\" style=\"max-width: 720px;\" >\n\n## 😍 Contributors\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://kiliman.dev/\"><img src=\"https://avatars.githubusercontent.com/u/47168?v=4?s=100\" width=\"100px;\" alt=\"Kiliman\"/><br /><sub><b>Kiliman</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kiliman\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kiliman\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://kentcdodds.com/\"><img src=\"https://avatars.githubusercontent.com/u/1500684?v=4?s=100\" width=\"100px;\" alt=\"Kent C. Dodds\"/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kentcdodds\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Skn0tt\"><img src=\"https://avatars.githubusercontent.com/u/14912729?v=4?s=100\" width=\"100px;\" alt=\"Simon Knott\"/><br /><sub><b>Simon Knott</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Skn0tt\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/issues?q=author%3ASkn0tt\" title=\"Bug reports\">🐛</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Skn0tt\" title=\"Tests\">⚠️</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Tony-Truand\"><img src=\"https://avatars.githubusercontent.com/u/7480192?v=4?s=100\" width=\"100px;\" alt=\"Tony Truand\"/><br /><sub><b>Tony Truand</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Tony-Truand\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Tony-Truand\" title=\"Tests\">⚠️</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/ProdByGR\"><img src=\"https://avatars.githubusercontent.com/u/29157049?v=4?s=100\" width=\"100px;\" alt=\"Gregori Rivas\"/><br /><sub><b>Gregori Rivas</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=ProdByGR\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/glomyst\"><img src=\"https://avatars.githubusercontent.com/u/5370064?v=4?s=100\" width=\"100px;\" alt=\"Afsah Nasir\"/><br /><sub><b>Afsah Nasir</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=glomyst\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/memark\"><img src=\"https://avatars.githubusercontent.com/u/318504?v=4?s=100\" width=\"100px;\" alt=\"Magnus Markling\"/><br /><sub><b>Magnus Markling</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=memark\" title=\"Code\">💻</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/joelazar\"><img src=\"https://avatars.githubusercontent.com/u/16268238?v=4?s=100\" width=\"100px;\" alt=\"Jozsef Lazar\"/><br /><sub><b>Jozsef Lazar</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=joelazar\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/lukebowerman\"><img src=\"https://avatars.githubusercontent.com/u/19156294?v=4?s=100\" width=\"100px;\" alt=\"Luke Bowerman\"/><br /><sub><b>Luke Bowerman</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=lukebowerman\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://maker.js.org/\"><img src=\"https://avatars.githubusercontent.com/u/11507384?v=4?s=100\" width=\"100px;\" alt=\"Dan Marshall\"/><br /><sub><b>Dan Marshall</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=danmarshall\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://trigger.dev/\"><img src=\"https://avatars.githubusercontent.com/u/534?v=4?s=100\" width=\"100px;\" alt=\"Eric Allam\"/><br /><sub><b>Eric Allam</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=ericallam\" title=\"Documentation\">📖</a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","readmeFilename":"README.md","gitHead":"a547f6d469c733bda4c726a709f4841326795957","types":"./dist/cjs/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-EFJxyJU8j33bIywo92BfCxYe9apJm4XUsEWCWdCTSpkpLGB/+FfnY5hAj9xWDz1yu1wmgIdP+UNj4J2wB8cOhg==","shasum":"3227ff8d99192d7907326ed72f4e02a4f1113b61","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.5.2-pre.0.tgz","fileCount":16,"unpackedSize":56771,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbHOao+2B+urOK4fF/T+tBrAfSIzX4t1fWQcSsQ3aT6gIhAMYoXn6t66Ihxm771ZtVGF0eRrzooxQU3W9Kmy6bDtuy"}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.5.2-pre.0_1709071423299_0.09008357585004223"},"_hasShrinkwrap":false},"0.5.2-pre.2":{"name":"remix-typedjson","version":"0.5.2-pre.2","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","type":"module","exports":{"require":"./dist/cjs/index.cjs","import":"./dist/esm/index.js"},"main":"./dist/cjs/index.cjs","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run clean && npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm && echo '{\"type\": \"module\"}' > ./dist/esm/package.json","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist/cjs && renamer -f .js -r .cjs -e ext ./dist/cjs/*.js && echo '{\"type\": \"commonjs\"}' > ./dist/cjs/package.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.23.3","@babel/preset-env":"^7.23.3","@babel/preset-typescript":"^7.23.3","@remix-run/react":"^2.2.0","@remix-run/server-runtime":"^2.2.0","@types/jest":"^29.5.8","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","all-contributors-cli":"^6.26.1","babel-jest":"^29.7.0","decimal.js":"^10.4.3","esbuild":"^0.19.5","esbuild-register":"^3.5.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","prettier":"^3.1.0","react":"^18.2.0","react-dom":"^18.2.0","renamer":"^5.0.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.4.0","typescript":"^5.1.6"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0 || ^2.0","@remix-run/server-runtime":"^1.16.0 || ^2.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.5.2-pre.2","readme":"# remix-typedjson\n\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square)](#contributors-)\n\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\nThis package is a replacement for [`superjson`](https://github.com/blitz-js/superjson) to use in your [Remix](https://remix.run/) app. It handles a subset\nof types that `superjson` supports, but is faster and smaller.\n\nNOTE: Although faster, `remix-typedjson` is nowhere near as flexible as `superjson`. It only supports a subset of types with no extensibility. If you need the advanced features of `superjson`, then I definitely recommend it.\n\nExample site: https://remix-typedjson-example-production.up.railway.app/\n\nExample repo: https://github.com/kiliman/remix-typedjson-example\n\nThe following types are supported:\n\n- `Date`\n- `BigInt`\n- `Set`\n- `Map`\n- `RegExp`\n- `undefined`\n- `Error`\n- `NaN`\n- `Number.POSITIVE_INFINITY`\n- `Number.NEGATIVE_INFINITY`\n\n# 🚧 Work In Progress\n\nSets and Maps currently only support string keys and JSON serializable values. Complex types coming soon.\n\n# 🛠 How to Use with Remix\n\nIn order to get full-type fidelity and type inference, you must be on Remix\nv1.6.5+. You will also need to import the following replacement functions.\n\n## `typedjson`\n\n### Installation\n\n```bash\nnpm i remix-typedjson\n```\n\nReplacement for Remix `json` helper. It also supports the optional `ResponseInit`, so you can return headers, etc.\n\nMake sure your `loader` and `action` use the new declaration format:\n\n```js\n❌ export const loader: LoaderFunction = async ({request}) => {}\n❌ export const action: ActionFunction = async ({request}) => {}\n\n✅ export const loader = async ({request}: DataFunctionArgs) => {}\n✅ export const action = async ({request}: DataFunctionArgs) => {}\n\n✅ export async function loader({request}: DataFunctionArgs) {}\n✅ export async function action({request}: DataFunctionArgs) {}\n```\n\n### Usage\n\n```js\nreturn typedjson(\n  { greeting: 'hello', today: new Date() },\n  // ResponseInit is optional, just like the `json` helper\n  { headers: { 'set-header': await commitSession(session) } },\n)\n```\n\n## `useTypedLoaderData`\n\nReplacement for Remix `useLoaderData`. Use the generic `<typeof loader>` to\nget the correct type inference.\n\n### Usage\n\n```js\nconst loaderData = useTypedLoaderData<typeof loader>()\n```\n\n## `useTypedActionData`\n\nReplacement for Remix `useActionData`. Use the generic `<typeof action>` to\nget the correct type inference.\n\n### Usage\n\n```js\nconst actionData = useTypedActionData<typeof action>()\n```\n\n## `typeddefer`\n\n✨ New in v0.3.0\n\nReplacement for Remix `defer` helper. It also supports the optional `ResponseInit`, so you can return headers, etc.\n\n### Usage\n\n```js\nreturn typeddefer({\n  fastData: { message: 'This is fast data', today: new Date() },\n  slowData: new Promise(resolve => setTimeout(resolve, 2000)).then(() => {\n    return { message: 'This is slow data', tomorrow: new Date() }\n  }),\n})\n```\n\n## `<TypedAwait>`\n\nIn your route component, use the new `<TypedAwait>` component instead of the\nRemix `<Await>` component\n\n### Usage\n\n```js\n\nexport default function DeferRoute() {\n  const { fastData, slowData } = useTypedLoaderData<typeof loader>()\n  return (\n    <main>\n      <h1>Defer Route</h1>\n      <h2>Fast Data</h2>\n      <pre>{JSON.stringify(fastData, null, 2)}</pre>\n      <div>fastData.today is {fastData.today.toLocaleString()}</div>\n      <Suspense fallback={<p>Loading slow data...</p>}>\n        <TypedAwait\n          resolve={slowData}\n          errorElement={<p>Error loading slow data!</p>}\n        >\n          {slowData => (\n            <div>\n              <h2>Slow Data</h2>\n              <pre>{JSON.stringify(slowData, null, 2)}</pre>\n              <div>\n                slowData.tomorrow is {slowData.tomorrow.toLocaleString()}\n              </div>\n            </div>\n          )}\n        </TypedAwait>\n      </Suspense>\n    </main>\n  )\n}\n```\n\n## `useTypedRouteLoaderData`\n\nHelper for `useMatches` that returns the route data based on provided route `id`\n\n### Usage\n\n```ts\nimport { loader as rootLoader } from '~/root'\n\nconst rootData = useTypedRouteLoaderData<typeof rootLoader>('root')\n```\n\n## `useTypedFetcher`\n\n✨ Add support for `key` in v0.4.0\n\nReplacement for Remix `useFetcher`. Use the generic `<typeof loader|action>` to\nget the correct type inference for the `fetcher.data` property.\n\n### Usage\n\n```ts\nconst fetcher = useTypedFetcher<typeof action>({ key: 'abc' })\nfetcher.data // data property is fully typed\n```\n\n## `redirect`\n\nIn order to return a `redirect`, you will need to import the `redirect` function from this package, in order for the type inference to work properly.\n\nHowever, you can also `throw redirect()` and you can use the original `redirect` function from Remix.\n\n## ~~`TypedMetaFunction`~~\n\n🔥 Removed in v0.4.0 since it didn't actually work correctly. Will be replaced\nwith a `typedmeta` wrapper function in next release\n\nYou can now get typed arguments for both `data` and `parentsData` from your `meta`\nfunction export. Based on [new feature coming to Remix](https://github.com/remix-run/remix/pull/4022)\n\n```js\nexport const meta: TypedMetaFunction<typeof loader> = ({ data }) => {\n  return {\n    title: `Posts | ${data?.post.title}`,\n  }\n}\n// for parentsData, you can specify a Record of typed loaders keyed by route id\n// root.tsx\nexport type LoaderType = typeof loader\n// routes/parent.tsx\nexport type LoaderType = typeof loader\n// routes/child.tsx\nimport { type LoaderType as RootLoaderType } from '~/root'\nimport { type LoaderType as ParentLoaderType } from '~/routes/parent'\n\nexport const meta: TypedMetaFunction<\n  typeof loader,\n  // parent loader types keyed by route id\n  {\n    'root': RootLoader\n    'routes/parent': ParentLoader\n  }\n> = ({ data, parentsData }) => {\n  // access typed parent data by route id\n  const rootData = parentsData['root']\n  const parentData = parentsData['routes/parent']\n\n  return {\n    title: `Posts | ${data?.post.title}`,\n  }\n}\n```\n\n## `registerCustomType`\n\n✨ New in v0.2.0\n\n`remix-typed-json` support a limited number of native types in order to keep the\nbundle small. However, if you need to support a custom type like `Decimal`, then\nuse the `registerCustomType` API. This way you only pay the cost of the custom\ntype if you use it.\n\n```ts\ntype CustomTypeEntry<T> = {\n  type: string\n  is: (value: unknown) => boolean\n  serialize: (value: T) => string\n  deserialize: (value: string) => T\n}\n\nexport function registerCustomType<T>(entry: CustomTypeEntry<T>)\n```\n\n### Usage\n\nRegister the custom type in _root.tsx_ once.\n\n```ts\n// root.tsx\nimport {\n  typedjson,\n  registerCustomType,\n  useTypedLoaderData,\n} from 'remix-typedjson'\n\nimport Decimal from 'decimal.js'\n\nregisterCustomType({\n  type: 'decimal',\n  is: (value: unknown) => value instanceof Decimal,\n  serialize: (value: Decimal) => value.toString(),\n  deserialize: (value: string) => new Decimal(value),\n})\n```\n\nYou can now serialize and deserialize the `Decimal` type.\n\n```ts\n// route.tsx\nexport function loader() {\n  const d = new Decimal('1234567890123456789012345678901234567890')\n  return typedjson({ greeting: 'Hello World', today: new Date(), d })\n}\n\nexport default function Index() {\n  const data = useTypedLoaderData<typeof loader>()\n\n  return (\n    <>\n      <h2>Loader Data</h2>\n      <pre>{JSON.stringify(data, null, 2)}</pre>\n      <ul>\n        <li>today: {data.today.toLocaleString()}</li>\n        <li>\n          d instanceof Decimal: {data.d instanceof Decimal ? 'true' : 'false'}\n        </li>\n        <li>d: {data.d.toFixed(0)}</li>\n      </ul>\n    </>\n  )\n}\n```\n\n<img src=\"https://user-images.githubusercontent.com/47168/260161616-5eb9c4c7-3891-4f34-b89c-f927800b081d.png\" style=\"max-width: 720px;\" >\n\n<img src=\"https://user-images.githubusercontent.com/47168/260161632-933fc685-fbee-40fd-a2b3-dbe61da77435.png\" style=\"max-width: 720px;\" >\n\n## 😍 Contributors\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://kiliman.dev/\"><img src=\"https://avatars.githubusercontent.com/u/47168?v=4?s=100\" width=\"100px;\" alt=\"Kiliman\"/><br /><sub><b>Kiliman</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kiliman\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kiliman\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://kentcdodds.com/\"><img src=\"https://avatars.githubusercontent.com/u/1500684?v=4?s=100\" width=\"100px;\" alt=\"Kent C. Dodds\"/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kentcdodds\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Skn0tt\"><img src=\"https://avatars.githubusercontent.com/u/14912729?v=4?s=100\" width=\"100px;\" alt=\"Simon Knott\"/><br /><sub><b>Simon Knott</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Skn0tt\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/issues?q=author%3ASkn0tt\" title=\"Bug reports\">🐛</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Skn0tt\" title=\"Tests\">⚠️</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Tony-Truand\"><img src=\"https://avatars.githubusercontent.com/u/7480192?v=4?s=100\" width=\"100px;\" alt=\"Tony Truand\"/><br /><sub><b>Tony Truand</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Tony-Truand\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Tony-Truand\" title=\"Tests\">⚠️</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/ProdByGR\"><img src=\"https://avatars.githubusercontent.com/u/29157049?v=4?s=100\" width=\"100px;\" alt=\"Gregori Rivas\"/><br /><sub><b>Gregori Rivas</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=ProdByGR\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/glomyst\"><img src=\"https://avatars.githubusercontent.com/u/5370064?v=4?s=100\" width=\"100px;\" alt=\"Afsah Nasir\"/><br /><sub><b>Afsah Nasir</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=glomyst\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/memark\"><img src=\"https://avatars.githubusercontent.com/u/318504?v=4?s=100\" width=\"100px;\" alt=\"Magnus Markling\"/><br /><sub><b>Magnus Markling</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=memark\" title=\"Code\">💻</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/joelazar\"><img src=\"https://avatars.githubusercontent.com/u/16268238?v=4?s=100\" width=\"100px;\" alt=\"Jozsef Lazar\"/><br /><sub><b>Jozsef Lazar</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=joelazar\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/lukebowerman\"><img src=\"https://avatars.githubusercontent.com/u/19156294?v=4?s=100\" width=\"100px;\" alt=\"Luke Bowerman\"/><br /><sub><b>Luke Bowerman</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=lukebowerman\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://maker.js.org/\"><img src=\"https://avatars.githubusercontent.com/u/11507384?v=4?s=100\" width=\"100px;\" alt=\"Dan Marshall\"/><br /><sub><b>Dan Marshall</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=danmarshall\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://trigger.dev/\"><img src=\"https://avatars.githubusercontent.com/u/534?v=4?s=100\" width=\"100px;\" alt=\"Eric Allam\"/><br /><sub><b>Eric Allam</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=ericallam\" title=\"Documentation\">📖</a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","readmeFilename":"README.md","gitHead":"a547f6d469c733bda4c726a709f4841326795957","types":"./dist/cjs/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-WQhEnzBEFw5GeEB0NAOLlM7y9mT1pkX46DQvgSmK9jMStDBfY4mddeUx8E5jF3BkJB4gn/iJ/Ec2Cl06bovbJw==","shasum":"81b4daf27e7054fc8afb43651a7b27aeb04223ec","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.5.2-pre.2.tgz","fileCount":13,"unpackedSize":41189,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCach8+48iWVDdsXTQNxicmml/cXvbKi0ytZjaJTPZyIgIhAN863Gw/rltiRtBfLRD2pAznyfvbvpYRgqHDZ5LyC5Qq"}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.5.2-pre.2_1709072250146_0.6629468160072458"},"_hasShrinkwrap":false},"0.5.2-pre.3":{"name":"remix-typedjson","version":"0.5.2-pre.3","description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","type":"module","exports":{"require":"./dist/cjs/index.cjs","import":"./dist/esm/index.js"},"main":"./dist/cjs/index.cjs","sideEffects":false,"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"license":"MIT","scripts":{"clean":"rimraf dist","build":"npm run clean && npm run build:esm && npm run build:cjs","build:esm":"tsc --project tsconfig.build.json --module ESNext --outDir ./dist/esm && echo '{\"type\": \"module\"}' > ./dist/esm/package.json","build:cjs":"tsc --project tsconfig.build.json --module CommonJS --outDir ./dist/cjs && renamer -f .js -r .cjs -e ext ./dist/cjs/*.js && echo '{\"type\": \"commonjs\"}' > ./dist/cjs/package.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"jest","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","prepare":"npm run build","prestart":"npm run build","start":"node dist/cli.js"},"devDependencies":{"@babel/core":"^7.23.3","@babel/preset-env":"^7.23.3","@babel/preset-typescript":"^7.23.3","@remix-run/react":"^2.2.0","@remix-run/server-runtime":"^2.2.0","@types/jest":"^29.5.8","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","all-contributors-cli":"^6.26.1","babel-jest":"^29.7.0","decimal.js":"^10.4.3","esbuild":"^0.19.5","esbuild-register":"^3.5.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","prettier":"^3.1.0","react":"^18.2.0","react-dom":"^18.2.0","renamer":"^5.0.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.4.0","typescript":"^5.1.6"},"jest":{"preset":"ts-jest/presets/default-esm","testEnvironment":"jsdom"},"peerDependencies":{"@remix-run/react":"^1.16.0 || ^2.0","@remix-run/server-runtime":"^1.16.0 || ^2.0","react":"^17.0.2 || ^18.0.0"},"_id":"remix-typedjson@0.5.2-pre.3","readme":"# remix-typedjson\n\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square)](#contributors-)\n\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\nThis package is a replacement for [`superjson`](https://github.com/blitz-js/superjson) to use in your [Remix](https://remix.run/) app. It handles a subset\nof types that `superjson` supports, but is faster and smaller.\n\nNOTE: Although faster, `remix-typedjson` is nowhere near as flexible as `superjson`. It only supports a subset of types with no extensibility. If you need the advanced features of `superjson`, then I definitely recommend it.\n\nExample site: https://remix-typedjson-example-production.up.railway.app/\n\nExample repo: https://github.com/kiliman/remix-typedjson-example\n\nThe following types are supported:\n\n- `Date`\n- `BigInt`\n- `Set`\n- `Map`\n- `RegExp`\n- `undefined`\n- `Error`\n- `NaN`\n- `Number.POSITIVE_INFINITY`\n- `Number.NEGATIVE_INFINITY`\n\n# 🚧 Work In Progress\n\nSets and Maps currently only support string keys and JSON serializable values. Complex types coming soon.\n\n# 🛠 How to Use with Remix\n\nIn order to get full-type fidelity and type inference, you must be on Remix\nv1.6.5+. You will also need to import the following replacement functions.\n\n## `typedjson`\n\n### Installation\n\n```bash\nnpm i remix-typedjson\n```\n\nReplacement for Remix `json` helper. It also supports the optional `ResponseInit`, so you can return headers, etc.\n\nMake sure your `loader` and `action` use the new declaration format:\n\n```js\n❌ export const loader: LoaderFunction = async ({request}) => {}\n❌ export const action: ActionFunction = async ({request}) => {}\n\n✅ export const loader = async ({request}: DataFunctionArgs) => {}\n✅ export const action = async ({request}: DataFunctionArgs) => {}\n\n✅ export async function loader({request}: DataFunctionArgs) {}\n✅ export async function action({request}: DataFunctionArgs) {}\n```\n\n### Usage\n\n```js\nreturn typedjson(\n  { greeting: 'hello', today: new Date() },\n  // ResponseInit is optional, just like the `json` helper\n  { headers: { 'set-header': await commitSession(session) } },\n)\n```\n\n## `useTypedLoaderData`\n\nReplacement for Remix `useLoaderData`. Use the generic `<typeof loader>` to\nget the correct type inference.\n\n### Usage\n\n```js\nconst loaderData = useTypedLoaderData<typeof loader>()\n```\n\n## `useTypedActionData`\n\nReplacement for Remix `useActionData`. Use the generic `<typeof action>` to\nget the correct type inference.\n\n### Usage\n\n```js\nconst actionData = useTypedActionData<typeof action>()\n```\n\n## `typeddefer`\n\n✨ New in v0.3.0\n\nReplacement for Remix `defer` helper. It also supports the optional `ResponseInit`, so you can return headers, etc.\n\n### Usage\n\n```js\nreturn typeddefer({\n  fastData: { message: 'This is fast data', today: new Date() },\n  slowData: new Promise(resolve => setTimeout(resolve, 2000)).then(() => {\n    return { message: 'This is slow data', tomorrow: new Date() }\n  }),\n})\n```\n\n## `<TypedAwait>`\n\nIn your route component, use the new `<TypedAwait>` component instead of the\nRemix `<Await>` component\n\n### Usage\n\n```js\n\nexport default function DeferRoute() {\n  const { fastData, slowData } = useTypedLoaderData<typeof loader>()\n  return (\n    <main>\n      <h1>Defer Route</h1>\n      <h2>Fast Data</h2>\n      <pre>{JSON.stringify(fastData, null, 2)}</pre>\n      <div>fastData.today is {fastData.today.toLocaleString()}</div>\n      <Suspense fallback={<p>Loading slow data...</p>}>\n        <TypedAwait\n          resolve={slowData}\n          errorElement={<p>Error loading slow data!</p>}\n        >\n          {slowData => (\n            <div>\n              <h2>Slow Data</h2>\n              <pre>{JSON.stringify(slowData, null, 2)}</pre>\n              <div>\n                slowData.tomorrow is {slowData.tomorrow.toLocaleString()}\n              </div>\n            </div>\n          )}\n        </TypedAwait>\n      </Suspense>\n    </main>\n  )\n}\n```\n\n## `useTypedRouteLoaderData`\n\nHelper for `useMatches` that returns the route data based on provided route `id`\n\n### Usage\n\n```ts\nimport { loader as rootLoader } from '~/root'\n\nconst rootData = useTypedRouteLoaderData<typeof rootLoader>('root')\n```\n\n## `useTypedFetcher`\n\n✨ Add support for `key` in v0.4.0\n\nReplacement for Remix `useFetcher`. Use the generic `<typeof loader|action>` to\nget the correct type inference for the `fetcher.data` property.\n\n### Usage\n\n```ts\nconst fetcher = useTypedFetcher<typeof action>({ key: 'abc' })\nfetcher.data // data property is fully typed\n```\n\n## `redirect`\n\nIn order to return a `redirect`, you will need to import the `redirect` function from this package, in order for the type inference to work properly.\n\nHowever, you can also `throw redirect()` and you can use the original `redirect` function from Remix.\n\n## ~~`TypedMetaFunction`~~\n\n🔥 Removed in v0.4.0 since it didn't actually work correctly. Will be replaced\nwith a `typedmeta` wrapper function in next release\n\nYou can now get typed arguments for both `data` and `parentsData` from your `meta`\nfunction export. Based on [new feature coming to Remix](https://github.com/remix-run/remix/pull/4022)\n\n```js\nexport const meta: TypedMetaFunction<typeof loader> = ({ data }) => {\n  return {\n    title: `Posts | ${data?.post.title}`,\n  }\n}\n// for parentsData, you can specify a Record of typed loaders keyed by route id\n// root.tsx\nexport type LoaderType = typeof loader\n// routes/parent.tsx\nexport type LoaderType = typeof loader\n// routes/child.tsx\nimport { type LoaderType as RootLoaderType } from '~/root'\nimport { type LoaderType as ParentLoaderType } from '~/routes/parent'\n\nexport const meta: TypedMetaFunction<\n  typeof loader,\n  // parent loader types keyed by route id\n  {\n    'root': RootLoader\n    'routes/parent': ParentLoader\n  }\n> = ({ data, parentsData }) => {\n  // access typed parent data by route id\n  const rootData = parentsData['root']\n  const parentData = parentsData['routes/parent']\n\n  return {\n    title: `Posts | ${data?.post.title}`,\n  }\n}\n```\n\n## `registerCustomType`\n\n✨ New in v0.2.0\n\n`remix-typed-json` support a limited number of native types in order to keep the\nbundle small. However, if you need to support a custom type like `Decimal`, then\nuse the `registerCustomType` API. This way you only pay the cost of the custom\ntype if you use it.\n\n```ts\ntype CustomTypeEntry<T> = {\n  type: string\n  is: (value: unknown) => boolean\n  serialize: (value: T) => string\n  deserialize: (value: string) => T\n}\n\nexport function registerCustomType<T>(entry: CustomTypeEntry<T>)\n```\n\n### Usage\n\nRegister the custom type in _root.tsx_ once.\n\n```ts\n// root.tsx\nimport {\n  typedjson,\n  registerCustomType,\n  useTypedLoaderData,\n} from 'remix-typedjson'\n\nimport Decimal from 'decimal.js'\n\nregisterCustomType({\n  type: 'decimal',\n  is: (value: unknown) => value instanceof Decimal,\n  serialize: (value: Decimal) => value.toString(),\n  deserialize: (value: string) => new Decimal(value),\n})\n```\n\nYou can now serialize and deserialize the `Decimal` type.\n\n```ts\n// route.tsx\nexport function loader() {\n  const d = new Decimal('1234567890123456789012345678901234567890')\n  return typedjson({ greeting: 'Hello World', today: new Date(), d })\n}\n\nexport default function Index() {\n  const data = useTypedLoaderData<typeof loader>()\n\n  return (\n    <>\n      <h2>Loader Data</h2>\n      <pre>{JSON.stringify(data, null, 2)}</pre>\n      <ul>\n        <li>today: {data.today.toLocaleString()}</li>\n        <li>\n          d instanceof Decimal: {data.d instanceof Decimal ? 'true' : 'false'}\n        </li>\n        <li>d: {data.d.toFixed(0)}</li>\n      </ul>\n    </>\n  )\n}\n```\n\n<img src=\"https://user-images.githubusercontent.com/47168/260161616-5eb9c4c7-3891-4f34-b89c-f927800b081d.png\" style=\"max-width: 720px;\" >\n\n<img src=\"https://user-images.githubusercontent.com/47168/260161632-933fc685-fbee-40fd-a2b3-dbe61da77435.png\" style=\"max-width: 720px;\" >\n\n## 😍 Contributors\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://kiliman.dev/\"><img src=\"https://avatars.githubusercontent.com/u/47168?v=4?s=100\" width=\"100px;\" alt=\"Kiliman\"/><br /><sub><b>Kiliman</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kiliman\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kiliman\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://kentcdodds.com/\"><img src=\"https://avatars.githubusercontent.com/u/1500684?v=4?s=100\" width=\"100px;\" alt=\"Kent C. Dodds\"/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=kentcdodds\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Skn0tt\"><img src=\"https://avatars.githubusercontent.com/u/14912729?v=4?s=100\" width=\"100px;\" alt=\"Simon Knott\"/><br /><sub><b>Simon Knott</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Skn0tt\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/issues?q=author%3ASkn0tt\" title=\"Bug reports\">🐛</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Skn0tt\" title=\"Tests\">⚠️</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Tony-Truand\"><img src=\"https://avatars.githubusercontent.com/u/7480192?v=4?s=100\" width=\"100px;\" alt=\"Tony Truand\"/><br /><sub><b>Tony Truand</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Tony-Truand\" title=\"Code\">💻</a> <a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=Tony-Truand\" title=\"Tests\">⚠️</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/ProdByGR\"><img src=\"https://avatars.githubusercontent.com/u/29157049?v=4?s=100\" width=\"100px;\" alt=\"Gregori Rivas\"/><br /><sub><b>Gregori Rivas</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=ProdByGR\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/glomyst\"><img src=\"https://avatars.githubusercontent.com/u/5370064?v=4?s=100\" width=\"100px;\" alt=\"Afsah Nasir\"/><br /><sub><b>Afsah Nasir</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=glomyst\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/memark\"><img src=\"https://avatars.githubusercontent.com/u/318504?v=4?s=100\" width=\"100px;\" alt=\"Magnus Markling\"/><br /><sub><b>Magnus Markling</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=memark\" title=\"Code\">💻</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/joelazar\"><img src=\"https://avatars.githubusercontent.com/u/16268238?v=4?s=100\" width=\"100px;\" alt=\"Jozsef Lazar\"/><br /><sub><b>Jozsef Lazar</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=joelazar\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/lukebowerman\"><img src=\"https://avatars.githubusercontent.com/u/19156294?v=4?s=100\" width=\"100px;\" alt=\"Luke Bowerman\"/><br /><sub><b>Luke Bowerman</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=lukebowerman\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://maker.js.org/\"><img src=\"https://avatars.githubusercontent.com/u/11507384?v=4?s=100\" width=\"100px;\" alt=\"Dan Marshall\"/><br /><sub><b>Dan Marshall</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=danmarshall\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://trigger.dev/\"><img src=\"https://avatars.githubusercontent.com/u/534?v=4?s=100\" width=\"100px;\" alt=\"Eric Allam\"/><br /><sub><b>Eric Allam</b></sub></a><br /><a href=\"https://github.com/Kiliman/remix-typedjson/commits?author=ericallam\" title=\"Documentation\">📖</a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","readmeFilename":"README.md","gitHead":"a547f6d469c733bda4c726a709f4841326795957","types":"./dist/cjs/index.d.ts","bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"homepage":"https://github.com/kiliman/remix-typedjson#readme","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-SWVWsrJqpKga8nx1mlj17pr8sBb1G8CtTQ8shzYjCqcIWf9xS8N+4WFpicUmlfXiQOI/CmQuKMmoCX6WX/Srxg==","shasum":"4a274c44cc1267ace5a91ac9d0536ed522c61378","tarball":"https://registry.npmjs.org/remix-typedjson/-/remix-typedjson-0.5.2-pre.3.tgz","fileCount":16,"unpackedSize":56868,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNqc28E2vkIFkfU5znomA4lqwwdAUZV6lq/XDzjm4yUAIhAKHaHAmG061FkRZN+gnwaY887L2ZweysVWxlc774MOek"}]},"_npmUser":{"name":"kiliman","email":"kiliman@gmail.com"},"directories":{},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-typedjson_0.5.2-pre.3_1709072303479_0.07166805027063416"},"_hasShrinkwrap":false}},"time":{"created":"2022-07-25T16:57:09.267Z","0.0.2":"2022-07-25T16:57:09.556Z","modified":"2024-02-27T22:18:24.088Z","0.0.3":"2022-07-25T17:08:16.211Z","0.0.4":"2022-07-25T17:20:21.752Z","0.0.5":"2022-07-25T18:39:28.595Z","0.0.6":"2022-07-26T19:41:07.838Z","0.0.7":"2022-07-27T13:40:28.683Z","0.0.8":"2022-07-27T16:59:17.787Z","0.0.9":"2022-08-12T13:11:24.881Z","0.1.0":"2022-08-19T19:49:04.364Z","0.1.1":"2022-09-02T15:24:49.916Z","0.1.2":"2022-09-07T14:59:26.729Z","0.1.3":"2022-10-12T16:20:10.754Z","0.1.4":"2022-11-01T20:19:49.158Z","0.1.5":"2022-11-07T20:12:08.885Z","0.1.6":"2022-11-08T18:25:44.161Z","0.1.7":"2023-01-04T19:02:19.047Z","0.2.0":"2023-08-11T22:57:06.598Z","0.2.1":"2023-09-22T14:13:01.504Z","0.2.2":"2023-09-22T14:18:09.780Z","0.3.0":"2023-10-12T23:36:42.895Z","0.3.1":"2023-10-20T14:07:38.915Z","0.4.0":"2023-11-15T21:32:56.298Z","0.4.1":"2023-11-24T20:12:10.183Z","0.5.1-pre.0":"2024-02-27T22:01:09.546Z","0.5.2-pre.0":"2024-02-27T22:03:43.492Z","0.5.2-pre.2":"2024-02-27T22:17:30.336Z","0.5.2-pre.3":"2024-02-27T22:18:23.657Z"},"maintainers":[{"name":"kiliman","email":"kiliman@gmail.com"}],"description":"This package is a replacement for superjson to use in your Remix app. It handles a subset of types that `superjson` supports, but is faster and smaller.","homepage":"https://github.com/kiliman/remix-typedjson#readme","keywords":["remix","json","typescript"],"repository":{"type":"git","url":"git+https://github.com/kiliman/remix-typedjson.git"},"author":{"name":"Michael J. Carter","email":"kiliman@gmail.com","url":"https://kiliman.dev/"},"bugs":{"url":"https://github.com/kiliman/remix-typedjson/issues"},"license":"MIT","readme":"","readmeFilename":""}