{"_id":"@alltiptop/geoip-3xui-rules","_rev":"32-e46b3fc35e8160dad98e2fe3c1634cbd","name":"@alltiptop/geoip-3xui-rules","dist-tags":{"latest":"0.7.1"},"versions":{"0.1.0":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.0","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.0","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"5b4a7df098f895769aa75244c9739bd0b6d55d09","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.0.tgz","fileCount":3,"integrity":"sha512-dkluOb1xuKt902Y/nUEjotfeBvmBQvzWtu8mL1g35FRBybrXU6s/9eDu03sGbtw+chhW9y8KAzgvwg58tYTbFg==","signatures":[{"sig":"MEQCIEdwmMLvOos2E5PJ/F6I/KJiGXkdJZJ0k1qmzDyHJoVSAiBxUaN9JoeVJAlDn8+rPkscBjNEgA/P/JXj/XuGKHefGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4116},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{"./server":"./dist/index.js"},"gitHead":"51ef00bc84290ac8ccee0336fa9b63ee6354c351","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"dotenv":"^17.2.0","fastify":"^5.4.0","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.0.13"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.0_1752333915403_0.13452440926062015","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.1","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.1","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"1a9823d85bb446e6e52c42b36b00bf412da21ae7","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.1.tgz","fileCount":4,"integrity":"sha512-pc8L/nKn9LT5YUgCDZbT5WQe+bmD2drCAntg3C9KWpWLpMLXyj0e46YbYDq8uX5UGEvTWvuCTZwmBoISYz1fWg==","signatures":[{"sig":"MEQCIFPr3179ffahIWJy175kaCtkkD+02Mz3XM/+5XmqCtyvAiBYp4b537qBymy6xBOUITDJHcfGnOZqGEHGnzYp+MLcbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8418},"main":"./index.ts","type":"module","types":"./index.d.ts","engines":{"node":">=24"},"exports":{"./index":"./index.ts"},"gitHead":"23b364760f04f29047e9d9f6e477c2c03a0b22c6","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"fastify":"^5.4.0","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.0.13"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.1_1752334800785_0.7217785223871773","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.2","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.2","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"191bfb717cec345f488582f2fe2a1309b3678d78","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.2.tgz","fileCount":5,"integrity":"sha512-aJe8H2R7mci5XWG0uwKc+Q7VmU0o3n/DTP+lOv9Yj228tOfaFjgx5jyseNEm15YGhsif2scbjyOnHN1K1Sw5wg==","signatures":[{"sig":"MEQCIF5sFCJC/yHblmqUDCfY1wCDDxuzI+s3l4lrWt3ByqTMAiAhBCbCbINCxA9eY0u41voAwLnnZj7OU5VzenlubTDteA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9060},"main":"./index.ts","type":"module","types":"./index.d.ts","engines":{"node":">=24"},"exports":{"./index":"./index.ts","./index.d.ts":"./index.d.ts"},"gitHead":"a9c7f34dcd264aba6b88dad58e6de445ce5f168f","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"fs":"^0.0.1-security","path":"^0.12.7","fastify":"^5.4.0","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.2_1752335179927_0.04747238471758641","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.3","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.3","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"a8a5783b916f93a68a484199341a99011f6a308b","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.3.tgz","fileCount":8,"integrity":"sha512-tzztC9GvWYSZiAw+/SjILQuWROnOopDTYXOG+FHINGA7curEp1htKWFG5wArou3rreHESylrENMBCtp/bkHdzQ==","signatures":[{"sig":"MEYCIQCDpVFoGnhMkbVprIItgEEUhtYot+0EjB3e7tJwgRE90gIhAN6SkP3Rv2J/em2/Sps0nsKyByHjTPHP3ZY1N4SsoXmm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11200},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{"./index":"./index.ts","./index.d.ts":"./index.d.ts"},"gitHead":"3dd8368edc2361252a169a1f2f8fa349d89c9523","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"fastify":"^5.4.0","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.3_1752336288499_0.86297411727813","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.4","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.4","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"e9ba065d98066f157086405ddfdf2e08c18ba341","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.4.tgz","fileCount":8,"integrity":"sha512-PqjgVbkuKf7IO31gqN9N7/cTPbEZSNtapBsrg+QDG4Svl5uYIysTUaer2CYuk+U3MHn3uR/rMGITUCaL2r9QBg==","signatures":[{"sig":"MEUCIQCi3XMfQ+sQPo0tQE4+VwTk9YUXrtTRiRPFzsZqXtiM6AIgP+9IQkmW3+i4qcbtAZzEJp9PW5tsjzNHKsh0uzzJd5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11259},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"482e2c470ecc05e9467f561b1efb82c1b6155eb7","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"fastify":"^5.4.0","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.4_1752336587540_0.5552506062059741","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.5","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.5","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"c7854311861cab31afb2898bcc113b1d88597094","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.5.tgz","fileCount":8,"integrity":"sha512-yloGpwtBhDDQ03sY8yCz9mPawsgKbxkRKOXmOcMcXODdseS8vServPF8nQVAA2IJIe7xU/rTjVJrS3Kt8BJdJA==","signatures":[{"sig":"MEQCIC0gcla2AraFHmbl77CcbqDJIg7rD4NSXNzNM0VmZ9yTAiB9ox7ddf8dnpFBSQoQxJOFWaBUtkxmPlzibU6Tcn75tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11418},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"7a40294c220c59ac8317e140080de2a3a9786e1c","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.5_1752402272531_0.9552060042916857","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.6","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.6","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"c0a9a92513c15e91a7d211d0ac20d3662a3efdb5","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.6.tgz","fileCount":8,"integrity":"sha512-yGjQ5lxLwuHofL/QVa2seorhoNKt4b/r1aLUQ+bhEiGInLTj2GjjN0Yng5ALZ0SfwJs6ziUeCKQxUuf5t7kQbA==","signatures":[{"sig":"MEUCIGhnswBUiIOM8Jd0oc5PSMCRSqgD5BY+30nnQYVAPMYbAiEAvdEUcM3KDIRez1XWlGVuSV4cGlzw2E3KuzlcXIy60Wg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14278},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"be2495a24fa28382683012852e0a013af62d5b62","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.6_1752432734723_0.46414869702021955","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.7","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.7","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"9d1aae87126476c3cbd9ba66738b7ed882047778","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.7.tgz","fileCount":8,"integrity":"sha512-X95dTKiZKnufNtwAleDST3cY4VRbrLJQAEGjK34F74ivenCtKMIS3W5CUIN5ePT3aJr/qI6aJuIcPv8RLRVBUg==","signatures":[{"sig":"MEYCIQDIZhPmgZfY3C+APaFqqhAggEcF6v21UELJ6Gw3E0F5OwIhANXID3FA3wtgL7B93EI52wMSTEZEBZ6AY/k7I4pkaswI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14394},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"47c5cebb1dde01bced37e99134a60f38fee095cd","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.7_1753020230978_0.3706660522429013","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.8","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.8","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"1c9908411c7de072aaf393406c4286362567e9f7","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.8.tgz","fileCount":8,"integrity":"sha512-DVAz+qIR9y4sQFs5rKR7TFZ1vkBHUALDnr45oLw8T0y8cXfKq8YSm9DmuRP1AH77dkwt3AfpJ4c+h5O8Nfxx1g==","signatures":[{"sig":"MEQCIFXCTUhGRg04az9cbNGcQAgCZtXTFD9IdLAL0+7GQzzOAiAFZrf4yaFW8b1TtCFh/WzmXUyLF3c4m7bHjVVRYFWT3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15163},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"2b96450232339ea73d437877bc2cbcc87a3591e8","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.8_1753133620998_0.2430556379459845","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.9","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.9","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"5d9464f0171729f77b0e58adfe5187168855bf12","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.9.tgz","fileCount":10,"integrity":"sha512-8Yi01CmO341pEdaHd3VKcWIgJbyq8sqh+kLhx9IC7TGbs0FY+3QOc74VhvPBCUlBpoW2LuYMy1/HOWk6W2Ftmg==","signatures":[{"sig":"MEQCIBhUbrpE2hjUFiuwRwo1IOPFuF9eDywWasXX/U6nj8jpAiAknnKjNKkwlWhLcabHnaxGKxaWlC+I5dPxVj2x0F1Vjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17374},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"32b71893ad8a5ef5a47f3039e4cbc146dfecf3f8","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.8","@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.9_1753739359900_0.8080964760515073","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.10","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.10","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"a45788729824b871cae7aa4df7ffd8a69b99436e","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.10.tgz","fileCount":10,"integrity":"sha512-dosFI6RGqYqkuEiOaTTk/WCurMntm4EJib8/G2f02A08J2prsuId/Gl4ydhoSA1Sj98aVttPuH0XIurJdJsSxA==","signatures":[{"sig":"MEUCIEKj4VJ2iAW6qyXzXonNcqN2LW+PWd1CuYRJmCkasBYfAiEA0NyS93z2qqksDVEGTRKvaiTOqgwCc40mWzr+F8PGceQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17346},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"207ae403f2e95d5daeac02d35510a8699da537ce","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.10_1753743602305_0.48175147447875744","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@alltiptop/geoip-3xui-rules","version":"0.1.11","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.1.11","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"5a65bcfc0ce7f165f3c0e98a91984135679d5583","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.1.11.tgz","fileCount":8,"integrity":"sha512-UWFILGsF+4vQlY4RQ4szAneBp6ejfkI0tpydhqkJXJA4qbzYK4AX+XeRxoT2Of2jY/yaEGZN9PkPJBTutx3/GQ==","signatures":[{"sig":"MEUCID/YBXnlbflq/9yCCMm9W3an2h54eEXRWaOmA+I0p+fAAiEAhjK0blAQzcprr3Z+qv/5/K5m0eU9+B3IUn1RAy++ZPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17261},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"dcaf0379234642b2435993512d6a92c86a35388a","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.1.11_1753745253839_0.2706955724429596","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alltiptop/geoip-3xui-rules","version":"0.2.0","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.2.0","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"034860f0a587fc1ef5deacb77de7573a719b1f71","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.2.0.tgz","fileCount":8,"integrity":"sha512-qErVYXOEDLfc7/ayv5XoTEwKuXJB3LLTnnlIqqV/SuklX1HL6Sd1Vhnf07BOI3+wLhHo7uXVCCBgKdIQSgsUbg==","signatures":[{"sig":"MEQCIBX8G9cHpJA4AzBg95eREYYgdxGlWARy0VqzFMgG7eSJAiBm5L//UQefCM1AIRiXJzOGepEsWReX6g6TXTeX3Tmqiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19617},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"1a069c3630a632d2142ea681920f870ae0006c15","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.2.0_1753808889887_0.715281119840737","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@alltiptop/geoip-3xui-rules","version":"0.2.1","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.2.1","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"a2ac85b005cb6ef14c603c2284434e2d9c6bb7f4","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.2.1.tgz","fileCount":8,"integrity":"sha512-j6yA7vkYkSeKr90/AMR94VB9qBlbRZNN0wd4NVT/rrTPVRpg+kchLzLWBWqGN/VLSe64sL5oHmUvU5mQ4QUScw==","signatures":[{"sig":"MEQCIAiD3napOL8z3/07hF0dkLXVELjPze0rBjShjw73bctqAiBpBBAgF1eUU6z5GZDuFCJZMUNVPaViFEW99YD+3J/+KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19923},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"d36b1fc6a6715e59d482bb090b2f89ca9908bb99","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.2.1_1755300593348_0.25422624067385535","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@alltiptop/geoip-3xui-rules","version":"0.2.2","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.2.2","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"b1bc90a8f6898d748177e84134d63eff15b9134d","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.2.2.tgz","fileCount":11,"integrity":"sha512-5w9Y+uZHq0VDpDHJBlRNkb3brjBZEwl1ro2VaKEcZMilRKDleehDWJtmSQOwRf2Z6LrcgRYKSN6nXPxk+Em+Xw==","signatures":[{"sig":"MEQCIAUZcVHffQCH9hmt8D1sKVRZWzcxrd81Njk4RCkHCs31AiApPb9s/uQmINrlOhB7l4T+fLUz7VaNxEEArrro9xztAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23490},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"6029d84f74cbd2f35349c55719e3bbcd6fe38c10","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.2.2_1755895333901_0.3880166462662511","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@alltiptop/geoip-3xui-rules","version":"0.2.3","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.2.3","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"c6b80026329a83fa6137809d3aa9bfb4f3228d20","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.2.3.tgz","fileCount":11,"integrity":"sha512-YtfNPe6/YgBay+0Rsz/zZYEy9I7QxzgV59X7hcqZJfl2U9r/ph56RX8+EdEl2jzXBUixCACOzVQZg3DU1256qQ==","signatures":[{"sig":"MEQCIAqK6ToU7Myf4MbRiyO+F5CJFpLszNeXLurUDGu2MtR/AiAnN9+7FQgUe7xB4bKof6OIM9qr9AbgbdnoIfJJzMGMVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24076},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"aa094f540720ba8316a1ca3fa980792ff120ba41","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.2.3_1755895891455_0.3337411001679236","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@alltiptop/geoip-3xui-rules","version":"0.2.4","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.2.4","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"e338c210dd8cc16e6d95208136863ac840b2693e","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.2.4.tgz","fileCount":11,"integrity":"sha512-pxi+ai5Ttnbu+HrzgBVjo6jjJgOJdmLZ/MqUeToVtY4uDtHIEV6N54hbfNApx8ijPb4F4pyqDMQVO5uN9Hor2A==","signatures":[{"sig":"MEUCIFDeHtU4wLR2cMyDE1p8GYH4gtsrWWgpCMQtOhivhtVXAiEAh1V/moKAgFwi3KKBlJ3DdBWDMWQ8sVJhBZ8FF82j4JQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25928},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"a0297962674b3710738972a443fee006de9459c5","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.2.4_1755905667433_0.08763723988980088","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@alltiptop/geoip-3xui-rules","version":"0.2.5","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.2.5","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"a72be86345f0c03b2382948d268da19acb43b061","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.2.5.tgz","fileCount":11,"integrity":"sha512-TWfoULTAo3Fo61pswTn/ZEDNWuUp2AK9tqUVzbibSLvDcNHbbx0ch/rG1Qefwoygyab+fvaDV/WdTYmkQ7PI+A==","signatures":[{"sig":"MEYCIQDvt5D4EI/AsvNaLdUAe3kRrmf6m1q0QjHt4O6onAZovgIhAMnddn9DcE899y1LlA0GtsYD9v2IEJf/rnUfSiu6atd6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26138},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"84479e01baa8f9838df669f781c8f0d322f4d048","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.2.5_1755973615614_0.47947688660132526","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@alltiptop/geoip-3xui-rules","version":"0.3.0","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.3.0","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"3fc5156ebff2201133c116b1a7f1745c615ebdd6","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.3.0.tgz","fileCount":25,"integrity":"sha512-9HFt+4tLVcGCoinaGZbM0paaEV4xbxMNwWgoTN0SDj0ENYEFuAZdRIsqGOsHM9n6ntNgiJaQSPTJyf227XVY8Q==","signatures":[{"sig":"MEYCIQCLqKvNGfqQH7jFGCO8x+y/Nj9BxCsZB3s1QM32wydaEgIhAJu5J8xU52IAAaeVqjQDsF8HQCCtMGddadhUzcBpFgGp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28983},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"7e2d7ab3102024adf17297a11e713a3521dae4af","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.3.0_1756038872032_0.019429291055342413","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@alltiptop/geoip-3xui-rules","version":"0.3.1","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.3.1","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"88e09e6b647110ee5bf8df850d694c9027b6c7f9","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.3.1.tgz","fileCount":25,"integrity":"sha512-F0r8J9EdD84NO+DQU4skl8r5KPWMxOSdKZ7aPy+VmxmZE+QNxYoxug2eZ21Flr+Lfgqlsu+waY1XKvg7QoHNDQ==","signatures":[{"sig":"MEUCIQD2RV28A2gZuXPqnpLKZQxF7EUx/N4KFk4gYnsdstjF9AIgULz9xGQ+1y7LUsv8g33UtsFfWf3CzuK4k4o26xXE//c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28983},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"4c79106fa95bce7f775322220f40141cde7b4639","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.3.1_1756039286952_0.4092331150490194","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@alltiptop/geoip-3xui-rules","version":"0.3.2","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.3.2","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"e969958eb3d282bb5b791cd7b35db8d77d1ac0de","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.3.2.tgz","fileCount":25,"integrity":"sha512-8/rS7WeYEm7CNaUv1bgpA1QdgO5lz55hgoVQcpXcctWCKg27pQcMFddK7YdhkYCXviHQYI9EAaqMaQehhy9XTQ==","signatures":[{"sig":"MEQCIC427nGf/PuCFwTByqQeuyjl3N1+BKRbjAQeMbB3osqQAiAUogDs6wLeEI2wnZ1M145oKFS4Qk0GFjhPYL6sp2NlPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29074},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"9aa31b47bda0868af1c8c6a74cd8afcfe4681d8e","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"10.2.3","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"20.10.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.3.2_1756057063662_0.17343569898521438","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@alltiptop/geoip-3xui-rules","version":"0.3.3","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.3.3","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"b5aae8aac1153e005d4913a545d3ffcf52085666","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.3.3.tgz","fileCount":25,"integrity":"sha512-mZZMTnItqHgJtajBXMNP1i17HM7MpTCnME0699Dr8mzBIeR4sQCf03mhIQlkwAdZ4Qt5VAycdyqD82hWDNFfVA==","signatures":[{"sig":"MEUCIB9a7P92zSFD3grSL8Qwhl63n6W6aGwck642vc/+e1FOAiEAv+//Ah2c54nCusanTEj8TNSZ9az/3YRctAMNl1Y27wQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30996},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"f4136cbe6c74aeb2bf7487852d7c0dcb2844f399","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.1.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.4.1","fastify":"^5.4.0","punycode":"^2.3.1","ip-location-api":"^3.0.3","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.3.3_1756828996620_0.8631571285184885","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@alltiptop/geoip-3xui-rules","version":"0.3.5","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.3.5","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"62d7c95479e5d947a8eeb39cd595ac10c19ddd31","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.3.5.tgz","fileCount":25,"integrity":"sha512-OV+iVmKl6C2YDgmvoav+sVuFdhJZEjLC+9C0gYJHCIq5iSl/UHMcIMTXVQj6sQchLskjN6+BrHSG2LSchdlXTA==","signatures":[{"sig":"MEUCICAUwERaSZ5V97/H6MNaxwDkZvfVwlsfunNhLZKsszrZAiEA1aYG8FHeYy6NwoUZdLo3whNgKjNr7IpvnZgeO4m8zTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31091},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"4881e88db56d9a8f3e85a3831e42ddbfdc9055e9","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.6.2","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"25.2.0","dependencies":{"3x-ui":"^2.1.1","fastify":"^5.8.5","punycode":"^2.3.1","ip-location-api":"^4.0.4","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.3.5_1777967186125_0.46950554604523753","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@alltiptop/geoip-3xui-rules","version":"0.3.6","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.3.6","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"329f7383df20ec7087037752375bd72d896bffd4","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.3.6.tgz","fileCount":25,"integrity":"sha512-iR5tC+cFTYks6xtS6z7C9IgmQ6/Ww/rfM3h6IRud1JI9JJt+Bk3t+ns/De2G0JIdGEG8f3ocj8WhtrFHc7IB3Q==","signatures":[{"sig":"MEQCICgC3YA0UwPJWuk4Mnwn62yI92nVq4iVX1MKINwONNWtAiAU3YXUqdKf/iKWYCvwYvlqugYpyjUYt8MCg93EXfOQPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31114},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"1dd95a94271a6e99e0065be7638b122546cc3870","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.6.2","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"25.2.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.6.2","fastify":"^5.8.5","punycode":"^2.3.1","ip-location-api":"^4.0.4","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.3.6_1777967376860_0.6647013201239551","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@alltiptop/geoip-3xui-rules","version":"0.3.7","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.3.7","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"d900d0b3baa010ddb6ce4fa1d7464168c5b6c532","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.3.7.tgz","fileCount":25,"integrity":"sha512-0fADOh+FNgVZHcKhZIokgMLj2TxyiUvpQ2eWxuowYZNN0FNo8TBeHxER65z0Fgs12tHzR0Q4uHsn3HQwOKHWQw==","signatures":[{"sig":"MEUCIQCi2a/3PLfHcuAnfZjnr4axMrqhJTiNghnVpM1PexLeMQIgLgzQR/fXbBrF8xhrqGTSzo4oCtkL944yaKHS89rJck0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31131},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"3f1a822b2de2a9badd83da837172810be4a1b496","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.6.2","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"25.2.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.6.2","fastify":"^5.8.5","punycode":"^2.3.1","ip-location-api":"^4.0.4","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.3.7_1777967993908_0.9931615933248941","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@alltiptop/geoip-3xui-rules","version":"0.4.0","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.4.0","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"015e1e1e635480927514abc0912df9dcc5220416","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.4.0.tgz","fileCount":25,"integrity":"sha512-BEGqKDkfGYEuvcj208Z9kcyGOZMRoZ+7qzueue5teBb2uoS9KR7NOzDARggxzAind9ByXuyHwtFTzb+HMxIlDQ==","signatures":[{"sig":"MEQCICx+jkF79DkHqC7lZAWskVrVr3SR3sUEakszbSIZ7h4oAiASaLLq2JE7pqDkcgxAJ3BdEFil6kZ9LmaJFLPKSy5uqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31665},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"f1b2a132d98ec6d413f2297528ee80ffd636dcc9","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.6.2","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"25.2.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.6.2","fastify":"^5.8.5","punycode":"^2.3.1","ip-location-api":"^4.0.4","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.4.0_1778240183912_0.944774353736652","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@alltiptop/geoip-3xui-rules","version":"0.4.1","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.4.1","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"f8352ae698f5c9b0730e86de31ce597e072e6645","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.4.1.tgz","fileCount":25,"integrity":"sha512-3XCprk02JTfl1R05ZFGPQVIDHgl2NjCFsTHTibvuCKH59ssz9VV6PU+2un31BT32Sf2RHUf+l4VB8OtSpRdmtA==","signatures":[{"sig":"MEUCICTQMbBJFUd2ukmRSyqKF1K7Rc7jkI4QT7vCF26k6KoEAiEA9H+q8+XjqM++KX0tgNkVXxGiDmo9Sm86KP+X5uxfQ8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32489},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"a196a7552146633004c2f9aeec242aac2034750b","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.6.2","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"25.2.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.6.2","fastify":"^5.8.5","punycode":"^2.3.1","ip-location-api":"^4.0.4","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.4.1_1778284068478_0.5660796246371598","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alltiptop/geoip-3xui-rules","version":"0.5.0","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.5.0","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"72461fc00b6b74465d074bd8d03e6ad602238f91","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.5.0.tgz","fileCount":25,"integrity":"sha512-8dd+IEw4eejabPMpG2c3WZiIp+pJ55dbjaglXyhqq82GkH7QVG3D0ErodqxRwSzCflaYWf9jBoUgC0AlEhaCFA==","signatures":[{"sig":"MEYCIQCTZRE0efdR8mL/B1xZpiTtr4pcaK1EJg/wQqYqU+ugegIhAJVToblPlFSu5Pc+Ig2mAPiibD2318ZyOt4KtZCvymic","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32737},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"7bd4afaf7711430c1ad5330b66a89781c98b5de9","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.14.1","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"25.2.0","dependencies":{"3x-ui":"^2.1.1","chalk":"^5.6.2","fastify":"^5.8.5","punycode":"^2.3.1","ip-location-api":"^4.0.4","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.5.0_1778516371500_0.31049570255001524","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@alltiptop/geoip-3xui-rules","version":"0.6.0","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.6.0","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"c9395489e1ef6f74a4d9d606c8be47c1f3420492","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.6.0.tgz","fileCount":25,"integrity":"sha512-tZxsiUU3St7UJjurlB+HGnPKeL0TicoFlh3x1xiW7Dj1BzN6lyq6OyZ7hRcx78RK3Ca3JCoUimsA8eNaKkankw==","signatures":[{"sig":"MEUCIQDgGuCY066CaQsRAMa8vJo4m6DT8kBk8mZwd3zFnYWURQIgItDPKiz8RmBdpDqdOYq6UFqQL/mJ8DH4/81+pmhJqRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34200},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"385b0a25634ec356454f593272987cf9e650538a","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.12.1","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.15.0","dependencies":{"chalk":"^5.6.2","fastify":"^5.8.5","punycode":"^2.3.1","ip-location-api":"^4.0.4","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.6.0_1779632450152_0.4062175871312119","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@alltiptop/geoip-3xui-rules","version":"0.6.1","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.6.1","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"6e6bcf7435d16af7bb50db5fbb4ebbe354c49d72","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.6.1.tgz","fileCount":25,"integrity":"sha512-jyjdBHFFRqK2ux3jsTudIgu8dsILlVxEIelGoh+WT6Op0kaPVwYjlv7MI3oHH1zRVhNY0NlSsNHrnrWb8tXOww==","signatures":[{"sig":"MEUCIQCwn95kH5FDbCuC1OExBTQOz0PNELV8uTizHJDOPjRawQIgdwUnZmv8c72ZtMqCvtNPgNAQYd76j1Wb3WDOyHv3BTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34395},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"3d6db14a9d1c36a7bbc5ce13a20f7a69d71407fe","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.12.1","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.15.0","dependencies":{"chalk":"^5.6.2","fastify":"^5.8.5","punycode":"^2.3.1","ip-location-api":"^4.0.4","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.6.1_1780434927775_0.7639365173160324","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alltiptop/geoip-3xui-rules","version":"0.7.0","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"author":{"name":"alltiptop"},"license":"MIT","_id":"@alltiptop/geoip-3xui-rules@0.7.0","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"dist":{"shasum":"6b401f23b95ce0a1699229fa0dda29ee2c4bef47","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.7.0.tgz","fileCount":25,"integrity":"sha512-XJCargFAOCW3DPWT2p2jneWIxJwIzRdjtgOHJFSoigTbKMDZJgj2gDYq1J/REJ9fNMkTu7QGqlc9yCWXJHjdJw==","signatures":[{"sig":"MEYCIQCuKQUSE2HlFHfuf/6Epbjo9mDIzWZpv0Yc2ocwBb0T7AIhAItDb9S+xWlByAa6rjmR++d9egvoIHOC3IZofSwfQ3kF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34704},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"dfb0cad85589510b1913a4d67389f56095bb864c","scripts":{"updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb","prepublishOnly":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git","type":"git"},"_npmVersion":"11.12.1","description":"Middleware server to set routing rules by countries for XRAY","directories":{},"_nodeVersion":"24.15.0","dependencies":{"chalk":"^5.6.2","fastify":"^5.8.5","punycode":"^2.3.1","ip-location-api":"^4.0.4","world-countries":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/geoip-3xui-rules_0.7.0_1782391360033_0.10609299138947414","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@alltiptop/geoip-3xui-rules","version":"0.7.1","description":"Middleware server to set routing rules by countries for XRAY","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"repository":{"type":"git","url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git"},"license":"MIT","author":{"name":"alltiptop"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"prepublishOnly":"tsc -p tsconfig.build.json","updatedb":"cd node_modules/ip-location-api && ILA_FIELDS=country npm run updatedb"},"dependencies":{"chalk":"^5.6.2","fastify":"^5.8.5","ip-location-api":"^5.0.2","punycode":"^2.3.1","world-countries":"^5.1.0"},"devDependencies":{"@types/node":"^24.0.13","@types/punycode":"^2.1.4"},"engines":{"node":">=24"},"prettier":{"singleQuote":true,"trailingComma":"all","tabWidth":2,"useTabs":false},"gitHead":"1a3beb0c3b06b27d89ceb24ac428c2ffd7a533fd","_id":"@alltiptop/geoip-3xui-rules@0.7.1","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-K7FGK2MYx2VvleEzW0eDfrn9YkyD+SK7P9QmXyRI6P1GNIriN4eeIdD++kR832rIoWAU3wns1bx9kNxcfInYpA==","shasum":"a6fa3a9b44f2a408b7bebc5da03822231217745b","tarball":"https://registry.npmjs.org/@alltiptop/geoip-3xui-rules/-/geoip-3xui-rules-0.7.1.tgz","fileCount":25,"unpackedSize":34843,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD2Cbeu4sjBFDcn5IbGdqvXM+EjMNiMEDeKkmPuIHLFjgIhAKoDQhmj6ICy6h2OBNf+skjQBVKLEv1/NbvLsKxDWzRZ"}]},"_npmUser":{"name":"alltiptop","email":"alltiptop1@gmail.com"},"directories":{},"maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/geoip-3xui-rules_0.7.1_1786397208955_0.7851579655469687"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-12T15:25:15.316Z","modified":"2026-08-10T21:26:49.365Z","0.1.0":"2025-07-12T15:25:15.621Z","0.1.1":"2025-07-12T15:40:00.952Z","0.1.2":"2025-07-12T15:46:20.097Z","0.1.3":"2025-07-12T16:04:48.690Z","0.1.4":"2025-07-12T16:09:47.719Z","0.1.5":"2025-07-13T10:24:32.706Z","0.1.6":"2025-07-13T18:52:14.897Z","0.1.7":"2025-07-20T14:03:51.190Z","0.1.8":"2025-07-21T21:33:41.529Z","0.1.9":"2025-07-28T21:49:20.062Z","0.1.10":"2025-07-28T23:00:02.560Z","0.1.11":"2025-07-28T23:27:34.018Z","0.2.0":"2025-07-29T17:08:10.055Z","0.2.1":"2025-08-15T23:29:53.549Z","0.2.2":"2025-08-22T20:42:14.125Z","0.2.3":"2025-08-22T20:51:31.632Z","0.2.4":"2025-08-22T23:34:27.616Z","0.2.5":"2025-08-23T18:26:55.839Z","0.3.0":"2025-08-24T12:34:32.198Z","0.3.1":"2025-08-24T12:41:27.114Z","0.3.2":"2025-08-24T17:37:43.863Z","0.3.3":"2025-09-02T16:03:16.793Z","0.3.5":"2026-05-05T07:46:26.353Z","0.3.6":"2026-05-05T07:49:37.056Z","0.3.7":"2026-05-05T07:59:54.077Z","0.4.0":"2026-05-08T11:36:24.087Z","0.4.1":"2026-05-08T23:47:48.612Z","0.5.0":"2026-05-11T16:19:31.654Z","0.6.0":"2026-05-24T14:20:50.355Z","0.6.1":"2026-06-02T21:15:28.023Z","0.7.0":"2026-06-25T12:42:40.177Z","0.7.1":"2026-08-10T21:26:49.207Z"},"bugs":{"url":"https://github.com/alltiptop/xui-client-geoip-rules/issues"},"author":{"name":"alltiptop"},"license":"MIT","homepage":"https://github.com/alltiptop/xui-client-geoip-rules#readme","keywords":["3x-ui","xray","geoip","vpn","routing","nodejs"],"repository":{"type":"git","url":"git+https://github.com/alltiptop/xui-client-geoip-rules.git"},"description":"Middleware server to set routing rules by countries for XRAY","maintainers":[{"name":"alltiptop","email":"alltiptop1@gmail.com"}],"readme":"# 3x-ui Country-Based Rules Middleware\n\nThis service fetches a JSON subscription from [3x-ui](https://github.com/MHSanaei/3x-ui) and merges it with country-specific routing rules stored in the `rules/` directory.\n\nExamples:\n* `rules/nl.json` is applied for clients detected in the **Netherlands**\n* `rules/de.json` for **Germany**\n* `rules/default.json` when no country-specific file exists\n\n---\n\n## Installation\n\n*npm*\n\n```bash\nnpm i @alltiptop/geoip-3xui-rules\n```\n\n---\n\n## Usage\n\n```typescript\nimport { createServer } from 'xui-json-client-rules';\nimport dotenv from 'dotenv';\n\ndotenv.config();\n\nconst app = await createServer({\n  upstreamUrl: process.env.UPSTREAM_URL!,     // URL of your 3x-ui instance\n  secretUrl: process.env.SECRET_URL!,         // Secret path segment to hide the endpoint\n  directSameCountry: true,                    // Direct same country as user by ip and domain\n  rulesDir: 'rules',                          // Directory containing JSON rules\n  logger: process.env.NODE_ENV !== 'production'\n  xuiOptions: {                               // Opional settings for 3x-ui panel api\n    panelAddress: process.env.XUI_PANEL_URL,  // 3x-ui panel address\n    token: process.env.XUI_PANEL_TOKEN, // 3x-ui API token\n    inboundIds: [process.env.XUI_INBOUND_ID], // inbounds list for users\n    debug: process.env.NODE_ENV !== 'production',\n  },\n  // Optional: post-process the final merged JSON before it is sent\n  transform: ({ json }) => {\n    // Example: force warning log level and annotate remarks\n    json.log = json.log || {};\n    json.log.loglevel = 'warning';\n    if (typeof json.remarks === 'string') json.remarks = `${json.remarks} [transformed]`;\n    return json;\n  },\n});\n\napp.listen({ port: 3088, host: '0.0.0.0' });\n```\n\n---\n\n## Rule Files\n\nA template is available in the `rules-template/` directory. Rule files follow the native Xray routing format: <https://xtls.github.io/en/config/routing.html>\n\n* **`base.json`** – applied first, before any country-specific rules.\n* **`default.json`** – fallback rules when no matching country file is found.\n* **`XX.json`** – any ISO-3166-1 alpha-2 country code, such as `de`, `nl`, `us`, etc.\n* **`tags/<tag>/base.json`** – mandatory file, applied first for every visitor who activates this tag.\n* **`tags/<tag>/default.json`** – fallback for the tag when there is no country-specific override.\n* **`tags/<tag>/<ISO>.json`** – tag override for a particular country (ISO-3166-1 alpha-2).  Example: `tags/streaming/US.json`.\n\n### Tag presets (optional)\n\nTags let you quickly switch additional rule-packs on/off without creating separate subscriptions.  A tag becomes **active** when it is present **either** in the request URL **or** in the user’s comment inside 3x-ui:\n\n```text\nGET /<secret>/json/<subId>?tags=gaming,streaming    ← query parameter (comma list or repeated key)\n\n// 3x-ui › User › comment field\ntags=gaming,streaming; another=data                  ← semicolon/new-line separated, case-insensitive\n```\n\nThe backend merges both sources, removes duplicates, then processes every active tag in the order they were discovered.\n\nCreate a directory per tag under `rules/tags/`.  The directory **must** contain `base.json`, and **optionally** `default.json` plus any number of country overrides:\n\n```text\nrules\n├ base.json        # Global baseline rules (applied first)\n├ default.json     # Fallback when no country match\n├ us.json          # Country preset (USA)\n├ eu.json          # Regional preset (European Union)\n├ !de.json         # Reverse preset, applies to everyone except DE\n├ !eu.json         # Reverse preset, applies to everyone NOT in the EU (isEU === false)\n└─ tags/\n   └─ streaming/\n      ├─ base.json      # always loaded first\n      ├─ default.json   # used when visitor’s country has no override\n      ├─ us.json        # overrides for United States\n      └─ de.json        # overrides for Germany\n```\n\nFile loading order **per tag** (case-insensitive file names):\n1. `base.json` – always first.\n2. `XX.json` – matching the visitor’s ISO-3166 country code (e.g. `us.json`).\n3. `default.json` – only when a country file is **not** found.\n\nThis allows you to keep shared logic in **base** while adding country-specific tweaks only where necessary.\n\n### Rule application order (updated)\n\n1. **Direct rule** – Routes requests to `publicURL` directly to avoid geo-misdetection during self-updates.\n2. **`base.json`** – Global baseline for everyone.\n3. **Tag presets** – For every active tag: `base.json` → country override (or `default.json`).\n4. **Same-country rules** – If `directSameCountry` is enabled, traffic destined to the client’s own country goes direct.\n5. **Reverse presets (exclude countries)** – Files named like `!fr.json` or `!fr,nl,de.json` (see below).\n6. **Regional preset** – `eu.json` for EU visitors.\n7. **Country preset** – Specific country file (e.g. `us.json`), or `default.json` when none exists.\n\n---\n\n## Reusable snippets with \"@include\"\n\nYou can keep common rule fragments in `rules/includes/*.json` and inline them in any rules file using a special string syntax:\n\n```jsonc\n// rules/includes/de-proxy.json\n{\n  \"outboundTag\": \"direct\",\n  \"domain\": [\"domain:de\"],\n  \"enabled\": true\n}\n```\n\nUse it from another file (note the quotes around the include token):\n\n```jsonc\n// rules/default.json\n[\n  \"@include de-proxy\",\n  {\n    \"outboundTag\": \"proxy\",\n    \"ip\": [\"geoip:fr\"],\n    \"enabled\": true,\n    \"remarks\": \"GeoIP FR\",\n    \"type\": \"field\"\n  }\n]\n```\n\nDetails:\n- Place files under `rules/includes/`.\n- Syntax: `\"@include <name>\"` or `\"@include <name>.json\"`.\n- Includes are expanded recursively; circular references are ignored.\n- Missing includes are replaced with `{}` (no-op object) to keep JSON valid.\n\n---\n\n## Reverse presets (exclude countries)\n\nSometimes you want a rule-set to apply to everyone except certain countries. Create files in `rules/` whose names start with `!`:\n\n```text\nrules/\n├ !fr.json          # applies to all visitors whose ISO ≠ FR\n├ !fr,nl,de.json    # applies to all visitors whose ISO ∉ {FR, NL, DE}\n└ !eu.json          # applies to all visitors NOT in the EU (special token 'EU')\n```\n\nEach file contains a standard array of Xray `routing.rules` items. At request time, the middleware injects these rules if the visitor’s ISO-3166 country code is not in the exclude list.\n\nApplication order: after same-country rules and before regional/country presets (see order above).\n\n---\n\n## Country overrides via query params\n\nYou can override the detected country/EU status for testing or custom routing by passing query parameters to the JSON endpoint:\n\n```text\n?country=DE&isEU=true\n```\n\n- `country` – ISO-3166 alpha-2 code (case-insensitive), e.g. `de`, `US`.\n- `isEU` – boolean accepted values: `true|false|1|0|yes|no|on|off`.\n\nWhen provided, these values override the result from IP geolocation for the current request only.\n\n---\n\n## Transform hook\n\nYou can optionally provide a `transform` function in `createServer` options to modify the final JSON right before it is returned to the client.\n\nSignature:\n\n```ts\ntransform?: ({\n  json: Record<string, unknown>,\n  iso: string,\n  subId: string,\n  isEU?: boolean,\n  query?: Record<string, string | string[] | undefined>,\n}) => Record<string, unknown> | Promise<Record<string, unknown>>\n```\n\nNotes:\n- Runs after merging upstream config, base/country/tag rules, overrides, reverse presets.\n- If it throws, the original merged JSON is returned and the error is logged.\n- Return the updated object; if you return `undefined`, the previous value is used.\n\nExample:\n\n```ts\nconst app = await createServer({\n  // ...other options\n  transform: async ({ json, iso, isEU }) => {\n    // Drop stats section and ensure warning log level\n    delete (json as any).stats;\n    json.log = json.log || {};\n    json.log.loglevel = 'warning';\n    json.remarks = `${json.remarks || ''} [iso:${iso || '??'} eu:${Boolean(isEU)}]`;\n    return json;\n  },\n});\n```\n\n---\n\n## Why?\n\n[3x-ui](https://github.com/MHSanaei/3x-ui) allows only one set of rules per subscription. This middleware automatically serves **different** rule sets based on the client’s IP country.\n","readmeFilename":"README.md"}