It looks like you are implemented UPnP support from scratch. In the file upnp.js quite a lot of code.
But the UPnP is not supported by Apple routers and they use their own much simpler protocol NAT-PMP and it's seconds version called PCP. All this three protocols are supported by miniupnp which is installed on many routers of other vendors and can be installed on OpenWrt. There is a command line utility natpmpc to test it.
Could you please support the NAT-PMP or PCP?
In fact there is a lot of nat-pmp libraries and most of them also supports the UPnP IDG.
But only this one supports PCP too https://github.com/freedomjs/freedom-port-control
So maybe it will be just easy too use it.
It looks like you are implemented UPnP support from scratch. In the file upnp.js quite a lot of code. But the UPnP is not supported by Apple routers and they use their own much simpler protocol NAT-PMP and it's seconds version called PCP. All this three protocols are supported by miniupnp which is installed on many routers of other vendors and can be installed on OpenWrt. There is a command line utility natpmpc to test it.
Could you please support the NAT-PMP or PCP? In fact there is a lot of nat-pmp libraries and most of them also supports the UPnP IDG. But only this one supports PCP too https://github.com/freedomjs/freedom-port-control So maybe it will be just easy too use it.