{"_id":"@a_jackie_z/config","_rev":"11-3d4fe2abec19761e614a5e23e2d5437a","name":"@a_jackie_z/config","dist-tags":{"latest":"1.1.9"},"versions":{"1.0.0":{"name":"@a_jackie_z/config","version":"1.0.0","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.0.0","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"dist":{"shasum":"a7a074720eb1622ea5fc1f3b3d59a442122935f5","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.0.0.tgz","fileCount":6,"integrity":"sha512-FF/uKmph/N0eZHhQr89enI4vmlp+PFDvmF+9U0MgyM0YvUqcfJbwdrHu8GZ90mQQKzDmFx8Hv/iUs8CJesoDCw==","signatures":[{"sig":"MEUCICj3fAyLWiJDYCIu0shNVA9zsMPTjty46WxN1iPutE/xAiEAjc3Az0l4D7ECnAdGZEII/M0eHSRxVNUKeuGXPy6GQ0Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15136},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f71c09804fbb51b5c72dac15513d3fa3a45585f9","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"_npmVersion":"11.6.2","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.5","@a_jackie_z/logger":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.0.9"},"_npmOperationalInternal":{"tmp":"tmp/config_1.0.0_1768837731559_0.10221582429237319","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@a_jackie_z/config","version":"1.1.0","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.1.0","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"dist":{"shasum":"03dd8c176420039b738fb74fe1e90686687e0fa1","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.0.tgz","fileCount":6,"integrity":"sha512-ej96FOjg4K31oC23PXVRPuvtAukGspSiaDDeZT6Q9AEV7FW4e4CQLA3CI5A0f1yEGtkqIZRcMZ5kd3RIYQqanQ==","signatures":[{"sig":"MEYCIQC+CqHJeLVcr4Q9gv41f1ppVNVD/hwpzlj0qpapD6lqvAIhAK2+0zZo42EEknrpqbAAwNsMw48+K7hSj8mS6GOYfMIo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15045},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ce8462f611d98c375d6131f71f56ed19c0f44a4c","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"_npmVersion":"11.6.2","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.5","@a_jackie_z/logger":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.0.9"},"_npmOperationalInternal":{"tmp":"tmp/config_1.1.0_1769058239693_0.6239443664564799","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@a_jackie_z/config","version":"1.1.1","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.1.1","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"dist":{"shasum":"8f6dd5dd6e292daf81279b66cf6bbae2ff847923","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.1.tgz","fileCount":6,"integrity":"sha512-j29IwXmcqicZJdebrHJ2CydsxpNM6YS4X8miUHM5XlD728EXZSBS/lvQqTamxKOtgXnwDYqXBWG7T9prvcWAMw==","signatures":[{"sig":"MEQCIDT7u4dKGRdil6JOd93lDAwfZgAK+geqAMi0dBfko3/AAiA7uNWF1xO8r1hx9Cb3xItqSvpg3rxkx0ZNbxFg+Zb5NQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15250},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"111cc413586f14397d4c9776d984ec18b74f9bf2","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"_npmVersion":"11.6.2","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.5","@a_jackie_z/logger":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.0.9"},"_npmOperationalInternal":{"tmp":"tmp/config_1.1.1_1769059969822_0.37762108125054406","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@a_jackie_z/config","version":"1.1.2","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.1.2","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"dist":{"shasum":"9ad1ab71533859cb75468a5ed8680d92d38f122d","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.2.tgz","fileCount":6,"integrity":"sha512-XA2ts34kXbtxO0UUHPs3YE5TvtDxig5/63+8Z0uxcnjeN4x3+vh1O6iXBgbG2pcwW6Ae6HJidjHnaCAF6DsAkQ==","signatures":[{"sig":"MEUCIHl0siS65DppNNvnT+e/JV9RKCJtgtlczML5r90/AS1IAiEAkkueYE3nFbY2+2ryTsp1GbXCnB4TQMqSKrD6T/CIi3E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15239},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"951f0d2100c9ab93163a30355d89d110b9b69d1b","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"_npmVersion":"11.6.2","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.5","@a_jackie_z/logger":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.0.9"},"_npmOperationalInternal":{"tmp":"tmp/config_1.1.2_1769535471308_0.1911672206627868","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@a_jackie_z/config","version":"1.1.3","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.1.3","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"homepage":"https://github.com/a-jackie-z/config#readme","bugs":{"url":"https://github.com/a-jackie-z/config/issues"},"dist":{"shasum":"fec51803ec046ca06074df452017a67bcaeb61f8","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.3.tgz","fileCount":6,"integrity":"sha512-U9zwANh4ut2GI/XFI5CQ32nPSG8cYkgw69cgi2i9KPEorH9ot/gBDryPukOwRj+26KW7eAyrfqIE0xeZAY/plQ==","signatures":[{"sig":"MEUCIQCA61bK+kfOs5PjlduviNzsjZir9h1tAR5P8emeSxQZMgIgaGqL5YPjWmsVZCteZMfKnjWTdYl+mMmUzB09e6K24bQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15312},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2cf6ef70f31b0224ea880d3cc74e363423541bc4","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"repository":{"url":"git+https://github.com/a-jackie-z/config.git"},"_npmVersion":"11.6.2","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.5","@a_jackie_z/logger":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.0.9"},"_npmOperationalInternal":{"tmp":"tmp/config_1.1.3_1770006451344_0.48187596091034557","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@a_jackie_z/config","version":"1.1.4","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.1.4","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"homepage":"https://github.com/a-jackie-z/config#readme","bugs":{"url":"https://github.com/a-jackie-z/config/issues"},"dist":{"shasum":"fa3ae4e015a044540e95bade71ca74d4750b6bb7","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.4.tgz","fileCount":6,"integrity":"sha512-5lThaTJQROsKn6aPTZ9bT/1gI/8wXeQfiiUNj1ZRwBYfvYCkkXVrTBk2tqDUPkTP1t+lg7ZsTOFGPan4/WwXmw==","signatures":[{"sig":"MEUCIQDDbMFLAOw3XY6lMpqWW33ifT7HrjyGdNSZlHKOSfd9JQIgDilN382CZFiCQEit/Scy5wWF/KXDl4z8XdqWtv89zfg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15313},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2cf6ef70f31b0224ea880d3cc74e363423541bc4","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"repository":{"url":"git+https://github.com/a-jackie-z/config.git"},"_npmVersion":"11.6.2","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","@a_jackie_z/logger":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/config_1.1.4_1770142677151_0.22627711503451975","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@a_jackie_z/config","version":"1.1.5","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.1.5","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"homepage":"https://github.com/a-jackie-z/config#readme","bugs":{"url":"https://github.com/a-jackie-z/config/issues"},"dist":{"shasum":"77eebb416d3f6f9ef99c0b1874d9775acfe0b677","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.5.tgz","fileCount":6,"integrity":"sha512-BvtAfty0mlb+bZqNZPMXswJTkjm66AY9XSYoC4u3t/sJg8gSADH4WL6TEhooIS9oMjnwuSVxnr+xKoP/eSb/lw==","signatures":[{"sig":"MEUCIHjPRTmgxQV4xwobCb+OQhryohddw/rcqElbXtykZmPTAiEA+mwkRcnzPBMl/GTrLdat4IA+ARORxqEwFCMKuoOkUco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15313},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"fa100e564016008657c94adfb95c79c6ad4d54ed","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"repository":{"url":"git+https://github.com/a-jackie-z/config.git"},"_npmVersion":"11.6.2","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","@a_jackie_z/logger":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/config_1.1.5_1770192516753_0.5212392599533913","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@a_jackie_z/config","version":"1.1.6","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.1.6","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"homepage":"https://github.com/a-jackie-z/config#readme","bugs":{"url":"https://github.com/a-jackie-z/config/issues"},"dist":{"shasum":"99b9e6ac258595fe647fe3a6e7bfc567ca2fe361","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.6.tgz","fileCount":6,"integrity":"sha512-AeiJS2GLGC+BGIeF6mWcfbxXKmEkikdgwtE7dBBa2uiuWXaeot+/hy3hZdtSzW4zBXoGtXECJPyGjMYa6Enrag==","signatures":[{"sig":"MEUCIQCKgQEPVK5H5m74Rnz/mvV71lxZMKyUpHDCAS775geJfQIgDOi/fQIAz7dXDzGb2PmTt3FuETj0gZwAgaTWZh12tWQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15321},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a8804267bd4d6cbf884812f96aa43c6340ab0f68","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"repository":{"url":"git+https://github.com/a-jackie-z/config.git"},"_npmVersion":"11.8.0","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","@a_jackie_z/logger":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/config_1.1.6_1772032197182_0.9541892750032654","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@a_jackie_z/config","version":"1.1.7","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.1.7","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"homepage":"https://github.com/a-jackie-z/config#readme","bugs":{"url":"https://github.com/a-jackie-z/config/issues"},"dist":{"shasum":"f26951444eb5e358b30855f869877861f184875d","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.7.tgz","fileCount":6,"integrity":"sha512-xqdVMv9+aTEtQdvYeGtKVvZj+42tMCdQv+iFfXXnuSfxl+uee0QdhBjZF5C9P2thpiFyUMa7FF9bkgYEARxisg==","signatures":[{"sig":"MEUCIAkkOGWgVAww++JXwBbWoa8qP+ZQl8fAiIxD5WomnYHGAiEAtadksEz9riFKzYqH5iw/FMdezlyeJ4W3XFOa/dOlty8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15321},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a8804267bd4d6cbf884812f96aa43c6340ab0f68","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"repository":{"url":"git+https://github.com/a-jackie-z/config.git"},"_npmVersion":"11.8.0","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","@a_jackie_z/logger":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/config_1.1.7_1772032256158_0.48894297247799146","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"@a_jackie_z/config","version":"1.1.8","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","_id":"@a_jackie_z/config@1.1.8","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"homepage":"https://github.com/a-jackie-z/config#readme","bugs":{"url":"https://github.com/a-jackie-z/config/issues"},"dist":{"shasum":"d54050f6e0fbd8890628e8e9afeefa2a700c746e","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.8.tgz","fileCount":6,"integrity":"sha512-krZ3q/pd4GHI6aDR0jOG7I0aFl0mULB4boXvu1zCia6b7yz76SWl6cPRP/aYJgiphLSJ/EAt2+xkLivieZYSFg==","signatures":[{"sig":"MEQCIDeRFG1lU3O82rWmFaF1V/rcojTHkeXHw/9mZgQ0uSFdAiBmd+1P2NG8X71GtZSyOpP/A26K4EnWfi49lQ/NPCGJ6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15321},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9f5a8f4b104450797390feeb54aacbccf7694fc0","scripts":{"test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts","build":"tsup"},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"repository":{"url":"git+https://github.com/a-jackie-z/config.git"},"_npmVersion":"11.8.0","description":"A configuration factory for microservices built with TypeScript.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","@a_jackie_z/logger":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/config_1.1.8_1774347059442_0.5279366105309622","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"@a_jackie_z/config","version":"1.1.9","description":"A configuration factory for microservices built with TypeScript.","license":"MIT","author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"repository":{"url":"git+https://github.com/a-jackie-z/config.git"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup","test":"LOG_PRETTY=true LOG_LEVEL=debug tsx lib/tests/config.ts"},"dependencies":{"@a_jackie_z/logger":"^1.0.4","zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.5.0","tsup":"^8.5.1","tsx":"^4.21.0","typescript":"^6.0.2"},"gitHead":"9f5a8f4b104450797390feeb54aacbccf7694fc0","_id":"@a_jackie_z/config@1.1.9","bugs":{"url":"https://github.com/a-jackie-z/config/issues"},"homepage":"https://github.com/a-jackie-z/config#readme","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-whdkJlMlstGlH+6XhGHGo3wXwblGRT8GGog5C4m3xIAsUnPo/S+h/KZyGdJ+2F/k4+Quv6D5r+If325aDFLkag==","shasum":"09d74d36c33eb99de56d6a45afbca8b49df95b9a","tarball":"https://registry.npmjs.org/@a_jackie_z/config/-/config-1.1.9.tgz","fileCount":6,"unpackedSize":15321,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGlqcv4W+iVLwnXx4gsK8NepvjTSMVHJY3GXLTifULbwAiB6Ibce35X/6nFgZVrftgCZBDcRXmrcGwLVy3E13kJzWA=="}]},"_npmUser":{"name":"sanglu","email":"connect.with.sang@gmail.com"},"directories":{},"maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/config_1.1.9_1774347213072_0.4907360681356987"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-19T15:48:51.457Z","modified":"2026-03-24T10:13:33.399Z","1.0.0":"2026-01-19T15:48:51.690Z","1.1.0":"2026-01-22T05:03:59.848Z","1.1.1":"2026-01-22T05:32:49.969Z","1.1.2":"2026-01-27T17:37:51.450Z","1.1.3":"2026-02-02T04:27:31.503Z","1.1.4":"2026-02-03T18:17:57.354Z","1.1.5":"2026-02-04T08:08:36.888Z","1.1.6":"2026-02-25T15:09:57.322Z","1.1.7":"2026-02-25T15:10:56.285Z","1.1.8":"2026-03-24T10:10:59.578Z","1.1.9":"2026-03-24T10:13:33.226Z"},"bugs":{"url":"https://github.com/a-jackie-z/config/issues"},"author":{"name":"Sang Lu","email":"connect.with.sang@gmail.com"},"license":"MIT","homepage":"https://github.com/a-jackie-z/config#readme","repository":{"url":"git+https://github.com/a-jackie-z/config.git"},"description":"A configuration factory for microservices built with TypeScript.","maintainers":[{"name":"sanglu","email":"connect.with.sang@gmail.com"}],"readme":"# @a_jackie_z/config\n\nA type-safe configuration factory for TypeScript microservices. Load and validate environment variables using Zod schemas with automatic type coercion.\n\n## Features\n\n- **Type Safety**: Full TypeScript support with inferred types from Zod schemas\n- **Automatic Coercion**: Converts environment variable strings to numbers and booleans\n- **Validation**: Built-in validation using Zod with helpful error messages\n- **Default Values**: Support for optional fields and default values\n- **Zero Configuration**: Simple API with minimal setup\n\n## Installation\n\n```bash\nnpm install @a_jackie_z/config zod\n```\n\n## Quick Start\n\n```typescript\nimport { z } from 'zod'\nimport { createConfig } from '@a_jackie_z/config'\n\n// 1. Define your configuration schema\nconst appConfigSchema = z.object({\n  port: z.number().int().positive(),\n  host: z.string().default('localhost'),\n  debug: z.boolean().default(false),\n  apiKey: z.string().min(1),\n  timeout: z.number().optional(),\n})\n\n// 2. Map schema properties to environment variable names\nconst appConfigMetadata = {\n  port: 'APP_PORT',\n  host: 'APP_HOST',\n  debug: 'APP_DEBUG',\n  apiKey: 'API_KEY',\n  timeout: 'REQUEST_TIMEOUT',\n}\n\n// 3. Load configuration from environment variables\nconst config = createConfig(appConfigSchema, appConfigMetadata)\n\n// TypeScript knows the exact types:\n// config.port is number\n// config.host is string\n// config.debug is boolean\n// config.apiKey is string\n// config.timeout is number | undefined\n```\n\nSet environment variables:\n```bash\nexport APP_PORT=8080\nexport APP_DEBUG=true\nexport API_KEY=secret-key-123\nexport REQUEST_TIMEOUT=5000\n```\n\n## How It Works\n\n### `createConfig(schema, metadata, env?)`\n\n**Parameters:**\n- `schema`: Zod object schema defining your configuration structure\n- `metadata`: Object mapping schema properties to environment variable names\n- `env`: Optional environment object (defaults to `process.env`)\n\n**Returns:** Validated configuration object with proper TypeScript types\n\n### Automatic Type Coercion\n\nEnvironment variables are strings by default. The factory automatically converts them:\n\n**Numbers:**\n- `\"3000\"` → `3000`\n- `\"3.14\"` → `3.14`\n\n**Booleans:**\n- `\"true\"`, `\"1\"`, `\"yes\"` → `true`\n- `\"false\"`, `\"0\"`, `\"no\"`, `\"\"` → `false`\n\n**Strings:**\n- No conversion needed\n\n## Examples\n\n### Database Configuration\n\n```typescript\nimport { z } from 'zod'\nimport { createConfig } from '@a_jackie_z/config'\n\nconst dbConfigSchema = z.object({\n  host: z.string(),\n  port: z.number().int().positive().default(5432),\n  database: z.string(),\n  username: z.string(),\n  password: z.string(),\n  ssl: z.boolean().default(false),\n  maxConnections: z.number().int().positive().default(10),\n})\n\nconst dbConfigMetadata = {\n  host: 'DB_HOST',\n  port: 'DB_PORT',\n  database: 'DB_NAME',\n  username: 'DB_USER',\n  password: 'DB_PASSWORD',\n  ssl: 'DB_SSL',\n  maxConnections: 'DB_MAX_CONNECTIONS',\n}\n\nconst dbConfig = createConfig(dbConfigSchema, dbConfigMetadata)\n```\n\n### API Service Configuration\n\n```typescript\nimport { z } from 'zod'\nimport { createConfig } from '@a_jackie_z/config'\n\nconst apiConfigSchema = z.object({\n  baseUrl: z.string().url(),\n  apiKey: z.string().min(1),\n  timeout: z.number().int().positive().default(30000),\n  retries: z.number().int().min(0).default(3),\n  rateLimit: z.number().int().positive().optional(),\n})\n\nconst apiConfigMetadata = {\n  baseUrl: 'API_BASE_URL',\n  apiKey: 'API_KEY',\n  timeout: 'API_TIMEOUT',\n  retries: 'API_RETRIES',\n  rateLimit: 'API_RATE_LIMIT',\n}\n\nconst apiConfig = createConfig(apiConfigSchema, apiConfigMetadata)\n```\n\n### Handling Validation Errors\n\n```typescript\nimport { z } from 'zod'\nimport { createConfig } from '@a_jackie_z/config'\n\nconst configSchema = z.object({\n  port: z.number().int().positive(),\n  apiKey: z.string().min(1),\n})\n\nconst configMetadata = {\n  port: 'APP_PORT',\n  apiKey: 'API_KEY',\n}\n\ntry {\n  const config = createConfig(configSchema, configMetadata)\n  console.log('Configuration loaded successfully')\n} catch (error) {\n  if (error instanceof z.ZodError) {\n    console.error('Configuration validation failed:')\n    error.issues.forEach(issue => {\n      console.error(`  - ${issue.path.join('.')}: ${issue.message}`)\n    })\n    process.exit(1)\n  }\n  throw error\n}\n```\n\n### Testing with Mock Environment\n\n```typescript\nimport { z } from 'zod'\nimport { createConfig } from '@a_jackie_z/config'\n\nconst configSchema = z.object({\n  port: z.number().int().positive(),\n  debug: z.boolean().default(false),\n})\n\nconst configMetadata = {\n  port: 'APP_PORT',\n  debug: 'APP_DEBUG',\n}\n\n// Pass custom environment for testing\nconst testConfig = createConfig(\n  configSchema,\n  configMetadata,\n  {\n    APP_PORT: '3000',\n    APP_DEBUG: 'true',\n  }\n)\n\nconsole.assert(testConfig.port === 3000)\nconsole.assert(testConfig.debug === true)\n```\n\n## API Reference\n\n### `createConfig<T>(schema, metadata, env?)`\n\nCreates a validated configuration object from environment variables.\n\n**Type Parameters:**\n- `T extends z.ZodRawShape`: The shape of your Zod schema\n\n**Parameters:**\n- `schema: z.ZodObject<T>`: Zod object schema\n- `metadata: Partial<Record<keyof T, string>>`: Property to environment variable mapping (partial mapping allowed - unmapped properties must have defaults or be optional)\n- `env?: Record<string, string | undefined>`: Optional environment object (defaults to `process.env`)\n\n**Returns:** `z.infer<z.ZodObject<T>>`: Type-safe configuration object\n\n**Throws:** `z.ZodError` when validation fails\n\n### Type Safety\n\nThe metadata parameter is type-safe and ensures that:\n- Only properties defined in the schema can be mapped\n- Properties without environment variable mappings must have default values or be optional in the schema\n- TypeScript will catch typos in property names at compile time\n\n## License\n\nMIT\n\n## Author\n\nSang Lu <connect.with.sang@gmail.com>\n","readmeFilename":"README.md"}