{"_id":"dynamic-self-register-proxy","_rev":"32-37ba9d7415f0fe21bae56c0e79ea4645","name":"dynamic-self-register-proxy","dist-tags":{"latest":"1.0.36"},"versions":{"1.0.0":{"name":"dynamic-self-register-proxy","version":"1.0.0","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.0","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"3ef2767556e172f1bed035cd041396afa648fa2b","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.0.tgz","fileCount":5,"integrity":"sha512-rFKvnfOONvNVUoQ82Ly8jq8gK+Z2wW0xbYti+96yYtJ5wZJHrEZQbB67KYIO+P/EGHk4IazgWiUg2t+/Wfv6SA==","signatures":[{"sig":"MEQCIBGB0S94dlCig1tFY6Ct5OPAa0I72EDsSiinovCMeg1vAiA86Y6DOOrI0ASWTabBlLLC1YatlEP5CJ7ds0BXdapWkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26632},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"1d0b42be6f44ad71fc3203dd0c37467b309ec63f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.0_1769506392166_0.03523277133566394","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"dynamic-self-register-proxy","version":"1.0.1","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.1","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"33094c2426855ff18bf4acf835591bd89c40e6c3","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.1.tgz","fileCount":5,"integrity":"sha512-DL8hmc4Qps8Wp9kzSRXU4lu3V9jPORHwwa9mjIJ8P33rdeOmL1NbhD4WaN8MlZol0Dt9svgFHTiBK9JGx6iS3w==","signatures":[{"sig":"MEYCIQC/VZ3cBSvCZs9MuSM5u7zDPjcEyOUaaLWgCdgSc9prUQIhANnjhCCZtzzK+exrTpZ2uGYyLr8sqpojAIOFxbBqJRQR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27730},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"8bb94ac881e403fb6b7d709bf063c2b389497621","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.1_1769506513730_0.40672514097081325","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"dynamic-self-register-proxy","version":"1.0.2","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.2","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"9387bdcedf7a312e6d5d794b0d89f7cb53b59870","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.2.tgz","fileCount":5,"integrity":"sha512-x1DOqYYQuHSdQSzjS8vAKkY0HPmQWaFhao3w8C9QDC4F5Q9kO2LLYgz5k5g9jOe7jA5YDYYdyvz06CTOwlYe4Q==","signatures":[{"sig":"MEQCIHES5G+6vdSaFDAxpwSdSr7i+JmqruyTO2sBsvpnFCs8AiAA+AdaCulUgFliPnhmPbQAcmFeBcMaURJYjVgiRyUNCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36022},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"282533813ea6c80092c0d0ef3e1514afb62db0b6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.2_1769507773662_0.2776800423522281","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"dynamic-self-register-proxy","version":"1.0.3","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.3","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"40347c003b5a2d483777ed02c838cabdd2e6ba9f","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.3.tgz","fileCount":5,"integrity":"sha512-YkCQ+CMPj8ED5DIUwHWq9+jAQ6ZAqptRuOvrFTlduNJse2ESxQsZDpHqswhbNldAFWCeiRKBGJQdqcZsFjuomA==","signatures":[{"sig":"MEYCIQCnjb/IjBcJ8Y73WDRorfWoBARLTuB+X8rjAqZpno5wLgIhAIIjyAl0RwQyuEk8dZYvDDlO58d9HZgXg9aRuCGSJgHk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36677},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"98fb061b9c7585eec24a71c729b94402e3e8533c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.3_1769508403742_0.2900461034999273","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"dynamic-self-register-proxy","version":"1.0.4","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.4","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"e977226d2eb5054bfef35f9d952dc2b464cd233c","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.4.tgz","fileCount":5,"integrity":"sha512-Dn1XS6HH/b9oP5/GKnZ+6JLUOtwZcrTav1vG5wGGHiXIRWq6YFEWcPfTJE+JfHRdMbAEORJExq9OStkJhEHmqA==","signatures":[{"sig":"MEUCIF76GQSBVDMxXBJ7MD991zZwd9IQgJN7xupFa2X5xxF/AiEA2XF6wbNmzNAQ2Vg6MzDXoSsIpjAXfh53uBrJM9uAfKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39351},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"698127d6444157f9dfdf90406cee33964955db2f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.4_1769508813516_0.611529796605147","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"dynamic-self-register-proxy","version":"1.0.5","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.5","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"26abe24184c49e52d0f58875d567d7a50da117d4","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.5.tgz","fileCount":5,"integrity":"sha512-l4dlTsa/7cG2SmvOszqbA/p8dBcbYd/sZerxLVu3ptVMk7wl/fxJvcJpP5In+KaZW54iTd4Z2Bam/AIFHqIZkw==","signatures":[{"sig":"MEQCID9+e/mVI+pCwRerL9jFj8IpBV39UJfdIMRflxwC2XHsAiAuzryg4tRvFe+MU8DhVjeS+D+Qaci0KCNteIIY8/C6wA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42844},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"e67641d6b728316f0d4fdb52b94162cdecda80a4","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.5_1769523078770_0.9220735578602752","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"dynamic-self-register-proxy","version":"1.0.7","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.7","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"1ec51b5a135677a9003f481bc0f65849de07a2bd","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.7.tgz","fileCount":5,"integrity":"sha512-KABUTUiPQnuYpi7kahQCmmzvuXFBuMfC0wcsDJV0RlJtq719LqrhC7LzcGlgzR+WRb1cP4IuCRE23+G8tQWjUg==","signatures":[{"sig":"MEYCIQDguW/iArgoHwnOvJtJaZs37vkdH/PksPX/XRzSWbheMgIhAOBC5Nyo65vNTwbred84w9abCSHmwkJhVWw1cxSBY2Jy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43168},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"e21b194c6d105b27a09d2aac693a64fd101622be","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.7_1769715312850_0.11087001881795344","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"dynamic-self-register-proxy","version":"1.0.8","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.8","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"0ecf27cc74dda4f6f2af29c8eeb04352da051938","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.8.tgz","fileCount":5,"integrity":"sha512-IYZrdwgMkVlkj/XbIHQXufT1DLphSMbzCm/tINpqUGdvyyHq1mePbeTKjC3wd6Z7jEBEOjuU7XdgQECMer/kqA==","signatures":[{"sig":"MEQCIDNOmL0JwarV6UyrmgZGO101A6fCNh6bwocnoMcfcFumAiBXk3KOLwh7RjwRnTjkG8dG0q+ZW1BFGn7N1WH7KkKrmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44531},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"b8f501721321a15e240407fbe666de0e3d41f946","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.8_1769715818304_0.1577523019192486","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"dynamic-self-register-proxy","version":"1.0.9","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.9","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"051e7bcdb40237b4c85955684df21dd0f967aaa1","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.9.tgz","fileCount":5,"integrity":"sha512-yH7KQWugoFVL3PxE6zAAbJwehHrSe1pjn2OC1afvTMsV0Xye4koMQ6jxkXgcAYS+2sjSkJtjEdzNXpy6Y86N4Q==","signatures":[{"sig":"MEUCIQDBzTXo60Vvuq/kwkQAmGhD5zFqWYPXaCeTWFwXiBgLcgIgfk/sIJOgSsqfoNNT6/S+MBkAKpN1M+7vd9V/LaxlEXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44630},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"e1edc862ea671425bd60cf5370f169c9ae948b8f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.9_1769760021883_0.8321685649863879","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"dynamic-self-register-proxy","version":"1.0.10","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.10","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"5d638fa01e867309746ce4195ce463432cd81700","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.10.tgz","fileCount":6,"integrity":"sha512-PTAjMk6kKJ9CJcoG0r/x8veiOzrx8aiG4orgpAyhQx/kJwqdzl9HRICrY+zEXHOoBCKobSeRJLqH+tQXMWODoA==","signatures":[{"sig":"MEYCIQCfx2Xg4VZaYa5ojJvdklh9vTRqMDkI40btvJ+NSpC61QIhANwp8agpFaE8uDQi66yTu7fUhoXT0cM86YhGXaJS/PlQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46979},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"496bb0b904cd53cd436edadbc7e298a122cfdad4","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.10_1769765482234_0.4567999304569397","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"dynamic-self-register-proxy","version":"1.0.11","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.11","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"84951017104f2ae193bddbb979fa662e5855d6e4","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.11.tgz","fileCount":6,"integrity":"sha512-p7JXQJXoQ3/eQSuU5Uox9P+PdQdVdymy4lILv+EbS31jCgD/jpKP6Ldv4/sLXLUmuwe6X2i7K+FTFSLmLC4woQ==","signatures":[{"sig":"MEUCIEzkoi/z42JH9zTo3Wgn/sLv4QR+Gv91uBHy3PfFGTJ2AiEA5p9UATT1GFlTFEMm51lOBF0pZx6ZPQVlkpJweUDZQj8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53879},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"c6baa97cc394a946d911b6b4b6adb5857f0bc992","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.11_1769957113498_0.27413385642148413","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"dynamic-self-register-proxy","version":"1.0.12","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.12","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"f1477c9eec03c13c665b2a53c613f7968b5ba9ad","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.12.tgz","fileCount":6,"integrity":"sha512-8Tf6/mz5rBFGy4Q3r89oGBBnK+gSDQVInh+47bMcCi+wCPb3sTCcI1cmWnHUtvZRTBsdBaT0M0DA15zX7AdhTg==","signatures":[{"sig":"MEUCIQDGfp6j9AHB4wZlIPciSt5kLfcG+2lhpNTJDM/+xhDqpQIgOki01ksRMkK8nU4H/xC6oR5hlNPSvOu7eOLwtwT1abs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54961},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"dedbcbd4cf790ba5378ecd38a51e1c208d8b72c5","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.12_1769958070113_0.19881108622775678","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"dynamic-self-register-proxy","version":"1.0.14","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.14","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"bd0e618703a76b5d9e582e43aaa96b0673f2f71a","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.14.tgz","fileCount":6,"integrity":"sha512-aHuU6/ppgpOiz2mmgSJjNVVxs6Dt6HFJT7rPHzKaGd0umB5XAAfNegJVzlvoK5DsXFi6KOozk5007uzybVSNJA==","signatures":[{"sig":"MEYCIQDJNnuB/BQ14ewBL5FH5uSSO9fU1yFdcoxm1EsF7Cm/bwIhANFLJ/6KKCRe98UVQgUVgsM80OUcFn+NmTxPjigZ10pt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56127},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"c5f3336b9e9e486633d58921f1cb8c2070f6080b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.14_1770240503629_0.8760746851827104","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"dynamic-self-register-proxy","version":"1.0.15","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.15","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"b5905570607f39f4a3c3098a8e72c706df03f3b0","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.15.tgz","fileCount":6,"integrity":"sha512-ofiBYoFJtaCKkekhtLGEdLk3KRi4jf3peWBdb7JexnSbB2A2Ry+GyWrO5XXMjhC/ofTszASvy9xCU47L7zwrCw==","signatures":[{"sig":"MEYCIQDGSQ9pMJVi9rTd/jGtnb1dwnpaQvlj1hQ0n574fXIf3wIhAM80/VABeXltnhwb4SsBvK1ZCflrJAZSj/SVwlmLTG5v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57134},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"10762209943a9437b71a9d58abb2bd8d4deb9c0c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"dotenv":"^17.2.3","express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.15_1770315508036_0.6672673608048003","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"dynamic-self-register-proxy","version":"1.0.16","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.16","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"74289cd18f9c72abd1138703ec119a7bea0ee593","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.16.tgz","fileCount":6,"integrity":"sha512-S0z7Rl+zPjau0lPJvxcT92cXcHMtN+AccfO66N9y8n9/k7pO34xj/ghiT6VCFuP/28l08co+TSmWpbIfKG1IUA==","signatures":[{"sig":"MEUCIQDkRpYFtlcL+pVkmCNdRZ3k00WgcxN0KwuhSEII02MrFAIgeqn4odXm2zjLLQR/Da0M/WxizexJ9ZB5N6ej1LMcHXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57134},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"93b173faae6119da7a55036524466942c64ee997","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"dotenv":"^17.2.3","express":"^5.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.16_1770316743578_0.33878324204442745","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"dynamic-self-register-proxy","version":"1.0.18","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.18","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"1bb186337889bef6197ee49c190e84d1f4e79758","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.18.tgz","fileCount":7,"integrity":"sha512-urcYv12USPsxZ3voB38wKIT4qArY0q+HEEoeF+Cl2u5BuLFqyRnTe2IDJdsuTVE7HEnvyayQg3+hQrklq5lPjg==","signatures":[{"sig":"MEUCIQD612Ovlf0l+fexqSdol7Zy9Iq5Oyi74aszGXe6LIR1pQIgVN9TgRa9HZZdJnEkM6RIlH38J9UMugv1zpr313Pjoeg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79106},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"5754a0cee4ddc88ec3b9fc51ecd0de8648e37a5a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.18_1770577755107_0.29105720133580815","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"dynamic-self-register-proxy","version":"1.0.19","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.19","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"210f7c9500f49c6294e4ff96aa9ca0f666395c13","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.19.tgz","fileCount":7,"integrity":"sha512-vQMbVaoqPcm6sbxeY+i/1fWqeWLIwP7pDTTxpNZK0fd55rWoUCQQUaoxmWmDYaF6Ll8ibNAPNZzQW5mobtfVag==","signatures":[{"sig":"MEUCIG9LbPuucmxq39fuvF/J4SHfH66cfPqTBVA5fQpI2YDUAiEAyUGf/VSmRuy0fjMG3zmvJoTLwe0hvzCxzK6+ZBGbskI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80610},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"40c7f30bd54fa2c58ad1cd4c8c5d24b49817c540","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.19_1770796630981_0.3953365724056037","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"dynamic-self-register-proxy","version":"1.0.20","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.20","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"b2a324465a261015cd23a836af572265621b161a","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.20.tgz","fileCount":7,"integrity":"sha512-GqHi8hCb8nC0YvsyqPQh59E+cpNi35Qs24zCSXj44Sj4+17bkmFgliDn/Egk5gRYRfdCaPOIZixQ9420dnIelQ==","signatures":[{"sig":"MEUCIQCl0j/z91Cza96R4iwGDInGrNqyNBJgoEWaOB4hQTmFCQIgFCjIjwXwrvos5ZUeaS3AXXURjgczGp71eDXk3GOEvFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82714},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"12f7e33536fac0a13316727414492f7bccf1542b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.20_1770911057965_0.7785001909681413","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"dynamic-self-register-proxy","version":"1.0.21","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.21","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"b040b3d30a0e519e8520bb51c54ad6cd00bebbce","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.21.tgz","fileCount":7,"integrity":"sha512-goLuJlhiHAR5HGbpovslV/gGgArfy9iyETugKKVKdNKiBZCPzAknpPNq3aJSCBDoSNdDA1HPbRz9kwAazNe6GA==","signatures":[{"sig":"MEQCIFXjDbGdtq+3YD9cHIo9YqV0vloTW0UdgTJvByPtmOM2AiBsmlZKVmrr4YiiochO6EdaB0BdGJCskhTJ9eDo8cO++Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83844},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"cdcc66f26128e4a28703a11fb6f2bcc622581d07","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.21_1771256859354_0.6231352380304143","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"dynamic-self-register-proxy","version":"1.0.22","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.22","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"f664a9c76e343ecfc0ae4887316f3f9d62c0fc11","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.22.tgz","fileCount":7,"integrity":"sha512-f3qIKL+TNNrO1uSuH7D6KipnN2SrPZ2LjbHj5JwvpBWGBnSlRgMMMe2q72jrA4dY6XvUjxAlKEZu1wP9CAswkA==","signatures":[{"sig":"MEUCIQCC6claGHkvC9KD553hDEx2BDGlZv32nGJsTkViDfI5ugIgbmRD8ZfBw6txkQy3VItkzS140kon5Hw3b/Pw3qOITrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113203},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"e7d2d03990f19e9c001647d342feeefc0693577e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.22_1771326851167_0.3705515650184805","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"dynamic-self-register-proxy","version":"1.0.23","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.23","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"c343673ae601627743f91b39e2736d74a9e072a1","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.23.tgz","fileCount":8,"integrity":"sha512-8F7V49MCgQzHetwtvi9NWi1h95N8ZztoOcVq+dpaqXR6N0FTWmt/KQBiJgj/94H11kX+y1AyJIgNbHAlvljSTQ==","signatures":[{"sig":"MEQCIEMDxvSCxkQDE7BLL3hTPm4OoT3ijaU5neljZhR8SBTTAiAHE0Db35ZALWGA0uZkXA88bmYJ5IEjf/zccsDhcJk65g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122384},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"534344ad899dae77e00021a0641dfe509e8565d1","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.23_1771327816989_0.8078376481860194","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"dynamic-self-register-proxy","version":"1.0.25","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.25","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"6b3f97dfa1f40141d4bbfa511ec3963c61c330b8","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.25.tgz","fileCount":23,"integrity":"sha512-ocFkJuohFVJC5llMWxHQN8o/CC/3aMmEIkuSnD5xgRsuVD4cZ5bXW7MS/6osuEzyaxvXMCliS6G3iHV8VyEhxQ==","signatures":[{"sig":"MEQCIAzovI3IPW1MlxJG9fUCczFwZshFt470EXyDAoNsUccbAiB3V/XZUsF91KrFni5iPjmvS11BJ16pJPJeczwJS9eH8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165875},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"0a8a7992bc51327183fe855c16ca892bbde9ec79","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.25_1771495281119_0.719351136008554","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"dynamic-self-register-proxy","version":"1.0.26","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.26","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"919a0783cbf62752d937c64ffc1ba7e57ad3662e","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.26.tgz","fileCount":23,"integrity":"sha512-sEEdl9qFS1w9PX2GWnWPxUMWPUdW8au3pWxQDM2e7ZcVU0O3BS3GOu9/ozpmMQ9vi+mrVOCygpPHgCe35TaGGQ==","signatures":[{"sig":"MEUCIQCnYRIvK8L2zRUgAVvTqNv+UNvGsyJ3zhxkIUbdSlYKSgIgXFS3e86OdHCHmRwrA/ubZHrVJVNEUjThhQpYedCtRyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166980},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"16489ee0f64f76c6be6030866415b07a205fdc2f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.26_1771512110349_0.05865852459818233","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"dynamic-self-register-proxy","version":"1.0.27","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.27","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"59bde129c96e9aef7edccaeb3dac2ee161e531b9","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.27.tgz","fileCount":23,"integrity":"sha512-CJx1ArO3Xp+EaPunT14m0lmuPUmhTd1gFYXQhjAs1BRXDzf+N3l4Auh/YzwvQDX8EMhoCO9aeU3LIl0XztlIYg==","signatures":[{"sig":"MEQCICR2BWWDju4pXb0/AVljuXVGSZ8/bJ2X2KjMw8Hru7sUAiB6n9/FGBO14QVhZ6olAsq/ReEA2k/ELGotBfkfAfMcKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167758},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"58ce08dc8e7b420751b27c5dd8b6efd4a34edd8e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.27_1771513164509_0.5225904803763282","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"dynamic-self-register-proxy","version":"1.0.29","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.29","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"848ca935af1cd6d1d16b8799bb276eb5acef7e81","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.29.tgz","fileCount":23,"integrity":"sha512-UgXWGewkwaTiKNp4mCpCpOSjFI+mJHrB97ipA2szVfQgDG+5yoext5p8DhD3lvJflfbaYOINolkz1jHgRed+yg==","signatures":[{"sig":"MEYCIQCK6dw/lQ0jFfVJUdEycvMpCn/11sTj/5sh41rMu7FweAIhAJL2ZXc9/DCn/qjZdTgSzhkdNx1OxZuvwoN9ZnLHNrH7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167690},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"f7f524bf535be5267bb3180523dc69ee582a4df0","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","express":"^5.2.1","node-pty":"^1.1.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.29_1772016431584_0.10296856527986065","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"dynamic-self-register-proxy","version":"1.0.30","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.30","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"9b82f87645ec43fe4630a1ae2145233457ef5cc7","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.30.tgz","fileCount":23,"integrity":"sha512-xIOlkqcU1lLTqc83oh1ZczFcB1Ynjzscjwfz/TXn5mG+/V18Tjk1wyxEa/Nv9Rk4wLe+jToRBUALlUqtjV++Zg==","signatures":[{"sig":"MEQCICtkBjmbESYXcXbJ42asrMOhnuogg6h94o8hmkadGFIEAiADOjAMQa0XAnllc3125yAcJzCsKoSgraRDBJ3csJWd/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170750},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"357c56b5b3f24f7f3c6276c96cfb0ba4e1ca207e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","helmet":"^8.1.0","express":"^5.2.1","node-pty":"^1.1.0","express-rate-limit":"^8.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.30_1772096573657_0.9315170580220258","host":"s3://npm-registry-packages-npm-production"}},"1.0.31":{"name":"dynamic-self-register-proxy","version":"1.0.31","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.31","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"c328071d86b8b1a30012825e01525dff20ed6cc0","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.31.tgz","fileCount":23,"integrity":"sha512-Jeaywz8S12PpKYwPPoyTEHbj8OdSYpYMoA/sBzqpSFUGwPmgvYSiXi0nYT/Cwja1pESEVwe1dGSz4kTrNYdLBA==","signatures":[{"sig":"MEQCIDQ3lmu25w1/OM5MYwVpxTvWND7ysYl21FvbRlkn4zHNAiB6aiiPLDy8JErEEfbqYrZHinDzWTU2ctZFHX5K4SDf/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172889},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"a91b8aae7153af581bc47c0e19a79554e0776864","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","helmet":"^8.1.0","express":"^5.2.1","node-pty":"^1.1.0","express-rate-limit":"^8.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.31_1772726500559_0.01617873205121212","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"name":"dynamic-self-register-proxy","version":"1.0.32","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.32","maintainers":[{"name":"imenam","email":"imenam@hotmail.fr"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"b8f52b359029f549b117144a00e2913ad04df816","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.32.tgz","fileCount":23,"integrity":"sha512-jU3TOwuoBS0kokhZx03YwEh4CmOXb3lFw+uthqwZWawaGtVvKH6M0GJ8nmMNZFSNnUgih7ACp6q+nWEHNJ0jIA==","signatures":[{"sig":"MEQCICAQf7vQB/rZeTUDvcoBov9dYvvfWS6/2tzqPBe7hW0gAiB8AZaQ8UakpXXayQCLu2MubdK9ROu102ObIIfwVOkygA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173202},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"137aaa1764dcbb0d7a0ddaa9583aee5c42fb31cf","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"imenam@hotmail.fr"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","helmet":"^8.1.0","express":"^5.2.1","node-pty":"^1.1.0","express-rate-limit":"^8.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.32_1773041532712_0.8148661379628033","host":"s3://npm-registry-packages-npm-production"}},"1.0.33":{"name":"dynamic-self-register-proxy","version":"1.0.33","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.33","maintainers":[{"name":"imenam","email":"matthieupin@gmail.com"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"3f04e2d04e52cd3476385136de1950880ef0b3c6","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.33.tgz","fileCount":23,"integrity":"sha512-+ImIXv0x+LuACfRLL16ChNaickrgBMW9PikbwKTXaER8aWtWXqwDk7Nssr/9hPLD3TqxT3qtzcZberOAiWGm+Q==","signatures":[{"sig":"MEYCIQDo1/hkCzMiji6aB6hFSI+y9y1tFsdJtNgo5fd0rgAShAIhAOY7E9u99X/xi4p1iHQTHEuMkBjMIYd18n2sbotBKRon","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173225},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"65d7864277e2edf291629acb0f467290d7d3e522","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"matthieupin@gmail.com"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","helmet":"^8.1.0","express":"^5.2.1","node-pty":"^1.1.0","express-rate-limit":"^8.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.33_1773135662484_0.5530086781245198","host":"s3://npm-registry-packages-npm-production"}},"1.0.34":{"name":"dynamic-self-register-proxy","version":"1.0.34","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.34","maintainers":[{"name":"imenam","email":"matthieupin@gmail.com"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"b1e4504e5c76073d84f7b2c126a67c45618c4e3d","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.34.tgz","fileCount":23,"integrity":"sha512-9cJ0d/Az+jLg68TNhjPDIx2iJ5enjuvn87WjuvITJii/jUbp0s/hNdV2CxZ1TQ846s/s3iyZVlanhocFq5+Yxw==","signatures":[{"sig":"MEUCIAE+0BQQozj1CGHPZYd/3AMUxJklpDmSe/+j2UaJwun8AiEAntDeCYnACWBxyS/doQ9tyyH82aNHpPE9u+yiEnM4uz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173225},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"ff246a715e17b7a7393174137e2de496f645f06e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"matthieupin@gmail.com"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","helmet":"^8.1.0","express":"^5.2.1","node-pty":"^1.1.0","express-rate-limit":"^8.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.34_1773137628596_0.38047596567670006","host":"s3://npm-registry-packages-npm-production"}},"1.0.35":{"name":"dynamic-self-register-proxy","version":"1.0.35","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","_id":"dynamic-self-register-proxy@1.0.35","maintainers":[{"name":"imenam","email":"matthieupin@gmail.com"}],"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"bin":{"dynamic-proxy":"proxy.js","dynamic-self-register-proxy":"proxy.js"},"dist":{"shasum":"d9be618b6338162f00e4aada2991d13503c90c38","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.35.tgz","fileCount":23,"integrity":"sha512-hbQMP8fs9uNqOLaFRrI9qGc/xPNWfTNqrYnrVNLloqvbtLfHgwh9YYSqnnoKAAtxp4AXaIqRimem6xu6FnSqfA==","signatures":[{"sig":"MEYCIQCxYhoteJXk+7Sq2Vl3SeNZXfmLb3CJwu2UTkrMqRI76AIhANyBjCJ+8IEuM42A/McuQRQhHoQz7UbpKKyI8WPCAylI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173225},"main":"proxy-client.js","engines":{"node":">=18.0.0"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"gitHead":"2354b45a2f3a7cadf23fe8ace57c2bd581e20a04","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"_npmUser":{"name":"imenam","email":"matthieupin@gmail.com"},"repository":{"url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ws":"^8.19.0","dotenv":"^17.2.3","helmet":"^8.1.0","express":"^5.2.1","node-pty":"^1.1.0","express-rate-limit":"^8.2.1","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamic-self-register-proxy_1.0.35_1773674832492_0.9363200262043156","host":"s3://npm-registry-packages-npm-production"}},"1.0.36":{"name":"dynamic-self-register-proxy","version":"1.0.36","description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","main":"proxy-client.js","bin":{"dynamic-self-register-proxy":"proxy.js","dynamic-proxy":"proxy.js"},"exports":{".":"./proxy-client.js","./client":"./proxy-client.js","./server":"./proxy.js"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node proxy.js","example":"node example-app.js","release":"npm version patch && npm publish --access public && git push origin main --follow-tags"},"keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git"},"homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"engines":{"node":">=18.0.0"},"dependencies":{"dotenv":"^17.2.3","express":"^5.2.1","express-rate-limit":"^8.2.1","helmet":"^8.1.0","http-proxy-middleware":"^3.0.5","node-pty":"^1.1.0","ws":"^8.19.0"},"_id":"dynamic-self-register-proxy@1.0.36","gitHead":"b750cbb831b005a78856347fff4819aec4f87719","_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-GyX/nngciLx15SPGGB16QwNUsUl1hY+DwOnB0svhTK+x9Diz+yZyGnwTrCwN8DM7qQHrkwqJXVaqEr9U4pLpzw==","shasum":"94cb91e6676c89dadbbf6344a353c46a220573f9","tarball":"https://registry.npmjs.org/dynamic-self-register-proxy/-/dynamic-self-register-proxy-1.0.36.tgz","fileCount":23,"unpackedSize":173445,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICFOG5bVH1BusO4tovmutw2k2clbKnOHwcNYYQaZCwPQAiEA69DhL7v4xKYpDJzfl7c9M29wWzc/dC1+HflaRvxQoyk="}]},"_npmUser":{"name":"imenam","email":"matthieupin@gmail.com"},"directories":{},"maintainers":[{"name":"imenam","email":"matthieupin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dynamic-self-register-proxy_1.0.36_1773916566138_0.5726766861049222"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-27T09:33:12.076Z","modified":"2026-03-19T10:36:06.384Z","1.0.0":"2026-01-27T09:33:12.324Z","1.0.1":"2026-01-27T09:35:13.879Z","1.0.2":"2026-01-27T09:56:13.788Z","1.0.3":"2026-01-27T10:06:43.888Z","1.0.4":"2026-01-27T10:13:33.669Z","1.0.5":"2026-01-27T14:11:18.919Z","1.0.7":"2026-01-29T19:35:13.007Z","1.0.8":"2026-01-29T19:43:38.431Z","1.0.9":"2026-01-30T08:00:22.041Z","1.0.10":"2026-01-30T09:31:22.397Z","1.0.11":"2026-02-01T14:45:13.667Z","1.0.12":"2026-02-01T15:01:10.232Z","1.0.14":"2026-02-04T21:28:23.778Z","1.0.15":"2026-02-05T18:18:28.182Z","1.0.16":"2026-02-05T18:39:03.746Z","1.0.18":"2026-02-08T19:09:15.284Z","1.0.19":"2026-02-11T07:57:11.125Z","1.0.20":"2026-02-12T15:44:18.449Z","1.0.21":"2026-02-16T15:47:39.475Z","1.0.22":"2026-02-17T11:14:11.323Z","1.0.23":"2026-02-17T11:30:17.133Z","1.0.25":"2026-02-19T10:01:21.258Z","1.0.26":"2026-02-19T14:41:50.501Z","1.0.27":"2026-02-19T14:59:24.662Z","1.0.29":"2026-02-25T10:47:11.748Z","1.0.30":"2026-02-26T09:02:53.809Z","1.0.31":"2026-03-05T16:01:40.717Z","1.0.32":"2026-03-09T07:32:12.869Z","1.0.33":"2026-03-10T09:41:02.625Z","1.0.34":"2026-03-10T10:13:48.757Z","1.0.35":"2026-03-16T15:27:12.647Z","1.0.36":"2026-03-19T10:36:06.280Z"},"bugs":{"url":"https://github.com/matthieu-music/dynamic-self-register-proxy/issues"},"author":{"name":"Matthieu Pesnot-Pin"},"license":"ISC","homepage":"https://github.com/matthieu-music/dynamic-self-register-proxy#readme","keywords":["proxy","reverse-proxy","dynamic-proxy","self-register","auto-register","microservices","docker","gateway","api-gateway","load-balancer","http-proxy","express"],"repository":{"type":"git","url":"git+https://github.com/matthieu-music/dynamic-self-register-proxy.git"},"description":"Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port","maintainers":[{"name":"imenam","email":"matthieupin@gmail.com"}],"readme":"# Dynamic Self-Register Proxy\n\n[![npm version](https://badge.fury.io/js/dynamic-self-register-proxy.svg)](https://www.npmjs.com/package/dynamic-self-register-proxy)\n[![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC)\n\nUn reverse proxy Node.js avec API d'auto-enregistrement, permettant à vos applications de s'enregistrer dynamiquement et de recevoir un port automatiquement attribué.\n\n## Cas d'usage\n\n- **Conteneur Docker unique** exposant un seul port vers l'extérieur\n- **Microservices dynamiques** qui démarrent/s'arrêtent sans configuration manuelle\n- **Environnement de développement** avec plusieurs applications Node.js\n\n## Installation\n\n```bash\nnpm install dynamic-self-register-proxy\n```\n\nOu pour une installation globale :\n\n```bash\nnpm install -g dynamic-self-register-proxy\n```\n\n## Démarrage rapide\n\n### 1. Démarrer le proxy\n\n```bash\n# Via npx (sans installation globale)\nnpx dynamic-self-register-proxy\n\n# Ou si installé globalement\ndynamic-proxy\n\n# Ou via npm script (développement local)\nnpm start\n```\n\nLe proxy démarre par défaut sur le port `3000`.\n\n### Configuration via fichier .env\n\nCréez un fichier `.env` à la racine du projet (voir `.env.example`) :\n\n```env\nPROXY_NAME=Mon Proxy Dev\nPROXY_PORT=3000\n```\n\n### Configuration via variables d'environnement\n\n```bash\n# Windows PowerShell\n$env:PROXY_PORT=\"3002\"; npx dynamic-self-register-proxy\n\n# Linux/Mac\nPROXY_PORT=3002 npx dynamic-self-register-proxy\n```\n\n### 2. Enregistrer une application\n\nVotre application doit s'enregistrer au démarrage :\n\n```javascript\nconst response = await fetch('http://localhost:3000/proxy/register', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\n    path: '/myapp',      // Chemin d'accès via le proxy\n    name: 'My App'       // Nom de l'application (optionnel)\n  })\n});\n\nconst { port } = await response.json();\n// port = 4000 (attribué automatiquement)\n\n// Démarrez votre serveur sur ce port\napp.listen(port);\n```\n\n### 3. Accéder à votre application\n\n```\nhttp://localhost:3000/myapp/  →  votre application sur le port 4000\n```\n\n## Page d'accueil\n\nL'URL racine `/` affiche une page listant tous les serveurs enregistrés avec des liens pour y accéder.\n\nLe nom du proxy (configurable via `PROXY_NAME`) est affiché dans le titre et l'en-tête de la page.\n\n- **Navigateurs** (`Accept: text/html`) → Page HTML avec interface moderne\n- **Clients API** (`Accept: application/json`) → Réponse JSON\n\n```bash\n# Accès navigateur : ouvrir http://localhost:3000/\n\n# Accès API\ncurl -H \"Accept: application/json\" http://localhost:3000/\n```\n\n**Réponse JSON :**\n```json\n{\n  \"name\": \"Proxy Server\",\n  \"status\": \"healthy\",\n  \"uptime\": 3600,\n  \"count\": 2,\n  \"routes\": [\n    {\n      \"path\": \"/api\",\n      \"port\": 4000,\n      \"name\": \"API Server\",\n      \"registeredAt\": \"2026-01-27T10:00:00.000Z\",\n      \"target\": \"http://localhost:4000\"\n    }\n  ],\n  \"availablePorts\": 998\n}\n```\n\n## API du Proxy\n\n| Endpoint | Méthode | Description |\n|----------|---------|-------------|\n| `/` | GET | Page d'accueil (HTML ou JSON selon Accept header) |\n| `/proxy/register` | POST | Enregistre une nouvelle route |\n| `/proxy/unregister` | DELETE | Supprime une route |\n| `/proxy/routes` | GET | Liste toutes les routes |\n| `/proxy/health` | GET | Health check du proxy |\n\n### POST /proxy/register\n\nEnregistre une nouvelle route et attribue un port.\n\n**Request:**\n```json\n{\n  \"path\": \"/myapp\",\n  \"name\": \"My Application\",\n  \"port\": 4005\n}\n```\n\n| Champ | Type | Requis | Description |\n|-------|------|--------|-------------|\n| `path` | string | ✅ | Chemin URL pour accéder à l'app |\n| `name` | string | ❌ | Nom descriptif |\n| `port` | number | ❌ | Port spécifique (sinon auto-attribué) |\n\n**Response (201):**\n```json\n{\n  \"success\": true,\n  \"path\": \"/myapp\",\n  \"port\": 4000,\n  \"name\": \"My Application\",\n  \"message\": \"Route registered. Start your server on port 4000\"\n}\n```\n\n**Erreurs:**\n- `400` - Path manquant\n- `409` - Path ou port déjà utilisé\n\n### DELETE /proxy/unregister\n\nSupprime une route enregistrée.\n\n**Request:**\n```json\n{\n  \"path\": \"/myapp\"\n}\n```\n\n**Response (200):**\n```json\n{\n  \"success\": true,\n  \"path\": \"/myapp\",\n  \"freedPort\": 4000\n}\n```\n\n### GET /proxy/routes\n\nListe toutes les routes enregistrées.\n\n**Response:**\n```json\n{\n  \"count\": 2,\n  \"routes\": [\n    {\n      \"path\": \"/api\",\n      \"port\": 4000,\n      \"name\": \"API Server\",\n      \"registeredAt\": \"2026-01-27T10:00:00.000Z\",\n      \"target\": \"http://localhost:4000\"\n    },\n    {\n      \"path\": \"/web\",\n      \"port\": 4001,\n      \"name\": \"Web App\",\n      \"registeredAt\": \"2026-01-27T10:01:00.000Z\",\n      \"target\": \"http://localhost:4001\"\n    }\n  ],\n  \"availablePorts\": 998\n}\n```\n\n### GET /proxy/health\n\nVérifie l'état du proxy.\n\n**Response:**\n```json\n{\n  \"name\": \"Proxy Server\",\n  \"status\": \"healthy\",\n  \"uptime\": 3600,\n  \"registeredRoutes\": 2,\n  \"usedPorts\": 2\n}\n```\n\n## Intégration dans votre application\n\n### Exemple complet avec Express\n\n```javascript\nconst express = require('express');\n\nconst PROXY_URL = process.env.PROXY_URL || 'http://localhost:3000';\nconst APP_PATH = process.env.APP_PATH || '/myapp';\nconst APP_NAME = process.env.APP_NAME || 'My App';\n\nasync function start() {\n  // 1. S'enregistrer auprès du proxy\n  const res = await fetch(`${PROXY_URL}/proxy/register`, {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify({ path: APP_PATH, name: APP_NAME })\n  });\n  \n  const { port } = await res.json();\n  \n  // 2. Créer l'application\n  const app = express();\n  \n  app.get('/', (req, res) => {\n    res.json({ message: 'Hello!' });\n  });\n  \n  // 3. Démarrer sur le port attribué\n  const server = app.listen(port, () => {\n    console.log(`App accessible via ${PROXY_URL}${APP_PATH}`);\n  });\n  \n  // 4. Se désenregistrer à l'arrêt\n  process.on('SIGTERM', async () => {\n    await fetch(`${PROXY_URL}/proxy/unregister`, {\n      method: 'DELETE',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ path: APP_PATH })\n    });\n    server.close();\n  });\n}\n\nstart();\n```\n\n### Utilisation du ProxyClient\n\nLe package inclut un client helper pour faciliter l'enregistrement :\n\n```javascript\nconst ProxyClient = require('dynamic-self-register-proxy');\n\nconst proxy = new ProxyClient('http://localhost:3000');\nconst { port } = await proxy.register('/myapp', 'My App');\n\napp.listen(port);\n\n// Arrêt propre automatique\nproxy.setupGracefulShutdown(server);\n```\n\nMéthodes disponibles :\n\n- `register(path, name, port?)` - Enregistre une route\n- `unregister()` - Supprime l'enregistrement\n- `listRoutes()` - Liste toutes les routes\n- `health()` - Vérifie l'état du proxy\n- `setupGracefulShutdown(server)` - Configure l'arrêt propre\n- `setupHealthRoute(app, options?)` - Ajoute la route de health check\n\n## Docker\n\n### Build et lancement\n\n```bash\n# Build\nnpm run docker:build\n\n# Démarrer (proxy + 2 apps exemples)\nnpm run docker:up\n\n# Arrêter\nnpm run docker:down\n```\n\n### Accès\n\n- Proxy : `http://localhost:8081`\n- App 1 : `http://localhost:8081/app1`\n- App 2 : `http://localhost:8081/app2`\n- Routes : `http://localhost:8081/proxy/routes`\n\n### Ajouter votre propre service\n\nDans `docker-compose.yml` :\n\n```yaml\nservices:\n  my-service:\n    build: ./my-service\n    environment:\n      - PROXY_URL=http://proxy:3000\n      - APP_PATH=/my-service\n      - APP_NAME=My Service\n    depends_on:\n      - proxy\n    networks:\n      - proxy-network\n```\n\n## Health Check Polling\n\nLe proxy vérifie périodiquement que les serveurs enregistrés sont toujours actifs. Si un serveur ne répond pas correctement, il est automatiquement désenregistré.\n\n### Implémentation requise\n\nChaque application enregistrée **doit** implémenter la route `GET /proxy/health` qui retourne un code **200** :\n\n```javascript\n// Avec Express\napp.get('/proxy/health', (req, res) => {\n  res.status(200).json({ status: 'healthy' });\n});\n```\n\n### Avec ProxyClient\n\nLe helper `ProxyClient` fournit une méthode pour ajouter automatiquement cette route :\n\n```javascript\nconst ProxyClient = require('dynamic-self-register-proxy');\n\nconst proxy = new ProxyClient('http://localhost:3000');\nconst app = express();\n\n// Ajoute automatiquement GET /proxy/health\nproxy.setupHealthRoute(app);\n\n// Ou avec un health check personnalisé\nproxy.setupHealthRoute(app, {\n  healthCheck: async () => {\n    // Vérifier la connexion à la DB, etc.\n    const dbOk = await checkDatabase();\n    return dbOk;\n  }\n});\n```\n\n### Comportement\n\n- **Période de grâce** : les nouveaux serveurs ont **60 secondes** après l'enregistrement avant d'être vérifiés (laisse le temps au serveur de démarrer)\n- Le proxy vérifie tous les serveurs toutes les **30 secondes** (par défaut)\n- Timeout de **5 secondes** par requête de health check\n- Si la réponse n'est pas un code **200**, le serveur est automatiquement désenregistré\n- Les erreurs de connexion (serveur arrêté, timeout) entraînent aussi le désenregistrement\n\n## Configuration MCP (Cursor / Claude Desktop)\n\nPour utiliser ce proxy comme serveur MCP, ajoutez la configuration suivante :\n\n### Cursor\n\nDans votre fichier `.cursor/mcp.json` :\n\n```json\n{\n  \"mcpServers\": {\n    \"dynamic-proxy\": {\n      \"command\": \"npx\",\n      \"args\": [\"dynamic-self-register-proxy\"],\n      \"env\": {\n        \"PROXY_PORT\": \"3000\"\n      }\n    }\n  }\n}\n```\n\n### Claude Desktop\n\nDans votre fichier de configuration Claude Desktop (`claude_desktop_config.json`) :\n\n```json\n{\n  \"mcpServers\": {\n    \"dynamic-proxy\": {\n      \"command\": \"npx\",\n      \"args\": [\"dynamic-self-register-proxy\"],\n      \"env\": {\n        \"PROXY_PORT\": \"3000\"\n      }\n    }\n  }\n}\n```\n\n### Avec variables d'environnement personnalisées\n\n```json\n{\n  \"mcpServers\": {\n    \"dynamic-proxy\": {\n      \"command\": \"npx\",\n      \"args\": [\"dynamic-self-register-proxy\"],\n      \"env\": {\n        \"PROXY_NAME\": \"MCP Gateway\",\n        \"PROXY_PORT\": \"8080\",\n        \"HEALTH_CHECK_INTERVAL\": \"60000\",\n        \"HEALTH_CHECK_TIMEOUT\": \"10000\",\n        \"HEALTH_CHECK_GRACE_PERIOD\": \"120000\"\n      }\n    }\n  }\n}\n```\n\n## Configuration\n\nLe proxy charge automatiquement le fichier `.env` s'il existe (voir `.env.example` pour un template).\n\n### Variables du proxy\n\n| Variable | Défaut | Description |\n|----------|--------|-------------|\n| `PROXY_NAME` | `Proxy Server` | Nom affiché sur la page d'accueil |\n| `PROXY_PORT` | `3000` | Port d'écoute du proxy |\n| `HEALTH_CHECK_INTERVAL` | `30000` | Intervalle du health check polling (ms) |\n| `HEALTH_CHECK_TIMEOUT` | `5000` | Timeout pour chaque health check (ms) |\n| `HEALTH_CHECK_GRACE_PERIOD` | `60000` | Période de grâce pour les nouveaux serveurs (ms) |\n| `PROXY_CONFIG_DIR` | `.` | Dossier de stockage des configurations (meta-configs.json) |\n\n### Variables pour les applications clientes\n\n| Variable | Défaut | Description |\n|----------|--------|-------------|\n| `PROXY_URL` | `http://localhost:3000` | URL du proxy (pour les apps) |\n| `APP_PATH` | `/example` | Chemin de l'application |\n| `APP_NAME` | `Example App` | Nom de l'application |\n\n## Plage de ports\n\nPar défaut, le proxy attribue des ports entre **4000** et **5000** (1000 ports disponibles).\n\nPour modifier cette plage, éditez `proxy.js` :\n\n```javascript\nconst INTERNAL_PORT_START = 4000;\nconst INTERNAL_PORT_END = 5000;\n```\n\n## Fonctionnalités\n\n- **Attribution sécurisée des ports** : utilisation d'un mutex pour éviter les conflits lors d'enregistrements simultanés\n- **Période de grâce** : les nouveaux serveurs ne sont pas vérifiés immédiatement, leur laissant le temps de démarrer\n- **Négociation de contenu** : l'URL racine `/` retourne HTML pour les navigateurs, JSON pour les API\n- **Health check automatique** : désenregistrement automatique des serveurs non répondants\n\n## 📝 Logs et Débogage\n\nLe serveur enregistre ses activités (requêtes, erreurs, enregistrements) dans un fichier de log persistant :\n\n- **Windows** : `C:\\var\\log\\proxy-server\\server.log`\n- **Linux/Mac** : `/var/log/proxy-server/server.log`\n\nLe format des logs inclut la date, l'heure, le PID et le tag `[PROXY]`.\n\n## Limitations\n\n- Les routes sont stockées en mémoire (perdues au redémarrage du proxy)\n- Pas de persistance des enregistrements\n- Pas d'authentification sur l'API de registration\n- Les applications doivent implémenter `GET /proxy/health` pour ne pas être désenregistrées automatiquement\n\n## Licence\n\nISC\n","readmeFilename":"README.md"}