{"_id":"xlabrouter","_rev":"47-ceacf999c84c842f8d55d49c66d37dca","name":"xlabrouter","dist-tags":{"latest":"1.0.47"},"versions":{"1.0.0":{"name":"xlabrouter","version":"1.0.0","license":"ISC","_id":"xlabrouter@1.0.0","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"623aa460243fec38c8228b63c9c58dfa4fe8646a","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.0.tgz","fileCount":508,"integrity":"sha512-Wmtzjlg4BjEebla2LUbz5WuFHYwJa50OY7WoTxigaSPy9clowxOCDGypdV3CcDnv7koEAPzcE1pc69DBPTbTPA==","signatures":[{"sig":"MEUCIHOuLFliI5aXzYGvH2JMsab/NhiXGhDfNOolu4OzTdTMAiEA0s2VZ786/jRqUHuF+6DvOD3QOSMn4im31Gfd+6NCZ+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4411007},"gitHead":"f8d27a68c715fa6f00a3173e04ce44a3e23a19a8","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6","@tailwindcss/postcss":"^4.2.2"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.0_1776526351598_0.06740153698345064","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"xlabrouter","version":"1.0.1","license":"ISC","_id":"xlabrouter@1.0.1","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"9dcea9174c898292e26d586ba60a3226565432ba","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.1.tgz","fileCount":509,"integrity":"sha512-p+1SC/prVhKqy86ffqMlCsn1HhFvN6+cUrzcaBpF/yq6JHwLLH0GPC4nAnyKZTJuubDS47jzua+pfwt/IwjZWA==","signatures":[{"sig":"MEUCIEEyoMf9Sr22nJEYO1++KIoBQKG6pe090kQvTl3Q2BwiAiEAkVghrVsQGprnmKzL5Mjug0TTJA3SFCBtTQAVO0rTvoM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4423588},"gitHead":"b4d6a4877d7c2608a81395fd18e6afd7ef458f0b","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6","@tailwindcss/postcss":"^4.2.2"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.1_1776600307570_0.19176757346906914","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"xlabrouter","version":"1.0.2","license":"ISC","_id":"xlabrouter@1.0.2","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"8ad4f4499706e2d0d4cd3f6e4ce866db507c596a","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.2.tgz","fileCount":509,"integrity":"sha512-XaJP4wVNK3Z3W9v5wvlZJ/63dC/RUFB8X3B7iqR+/Prp42f55yHx7cviWgcF+9mOTsj7seg+cQrOoCLb/252DA==","signatures":[{"sig":"MEYCIQC1EqCCq869zM+bV7wnykzdik3kWFecMKQCMGWiKLCfEAIhAKUI4NojTDIZUTiTXeTszkJpI6nIX8B8aCgAvR6P/klo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4423776},"gitHead":"8dcf1143c877643593202016cb7aac1ac2e12cae","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.2_1776611189459_0.5932131387064696","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"xlabrouter","version":"1.0.3","license":"ISC","_id":"xlabrouter@1.0.3","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"e57a762e22b47ea708eb207d07af7ed7fbf34e80","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.3.tgz","fileCount":509,"integrity":"sha512-fg557McZjY5WjxB1woR+tYAF7oWopynRaQ455RTfvTLAPSFW/ucgaxiDkYoa4NhKdhDio2LO+cbqtTyIBxyf2g==","signatures":[{"sig":"MEUCIQDxomRnoiWixC10STI+gL5TqcbIPmoXKdwHThMicDs6cQIgbpjzN6uy+KpKU4nvPZi4HoI8E0wGSFXnHpYcqdn4D1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4422840},"gitHead":"1e1923923dc016f52547cf6efc3a6563788942ce","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.3_1776620068180_0.5815236527065122","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"xlabrouter","version":"1.0.4","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.4","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_9router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_9router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"d015810f4f442c3cd13ee7bb098acb5b118797d7","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.4.tgz","fileCount":508,"integrity":"sha512-NtCRG+v8IiO7EFF9oGkj+rspdiiguarP2h6P4Zl/Wa3ktUumQgYw6sT1ninZTjlCrFtwGjT9O7VBA3RWi28DvA==","signatures":[{"sig":"MEUCIQDUabsKEhCm7OSfKqjpLXrS495iH1JA6f8RQm4ph/A5/wIgRMNEF+QhiDiL34e8rdxdtuAnXc1Z5OX+R1vZodRJJT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4425640},"main":"index.js","gitHead":"b1e2ff010102225a17236a42a6548efa7ae9ac20","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_9router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.4_1776653218382_0.1355315233313643","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"xlabrouter","version":"1.0.5","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.5","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_9router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_9router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"f88b37939827077cba0f3b92c9ae9f909ff76a50","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.5.tgz","fileCount":508,"integrity":"sha512-SSePyV/rSp4a6bK2Ui+8Nie8rzypKUdtTaMTZgNuLNvuji/AZzT7pI9l1xyjkVa/c4EIX/tOsPwnZXjBNnpfGA==","signatures":[{"sig":"MEUCIAY9rkBdzj9LOkKlEExxgDDXcUqV9k428zRejZYLOAUgAiEA3thzWltkic1DV8pzTSKlLhFFQP3I6qW22nGHgJgXzuU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4425761},"main":"index.js","gitHead":"e1dffa562d252e6d2436845958bf73721511b34c","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_9router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.5_1776657077615_0.008651716787837493","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"xlabrouter","version":"1.0.6","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.6","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_9router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_9router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"e94b173cf88d1f33835e0a6bb8806c251bb68f37","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.6.tgz","fileCount":508,"integrity":"sha512-gikmY2cw97k+01wYHpJjeN1VfOK//dFLQ5FIGwHMbQovM3f2jWgaxuwwELphcp6V7ZIg3ZJhvaA0BVHQ0RlC/w==","signatures":[{"sig":"MEUCIHS3cOirGNe5kQIdSgt+u5yTO9SqjSphE5uCxEPMCZkwAiEA4e12y+DXxV+dd64N2M7T2YSU77X2ju/fsN+sT9yWd5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4425487},"main":"index.js","gitHead":"90251110809eeab9212bbc101d21d8507c48f578","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_9router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.6_1776660457541_0.1689142457630728","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"xlabrouter","version":"1.0.7","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.7","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_9router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_9router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"3db391635ffabf736e5f4b0f128b59909bf1fae2","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.7.tgz","fileCount":508,"integrity":"sha512-AhTg8PBPIwoEyyrj9r+aSAdIULesLgXasFgNhBQm5iZ4jR7GR3kIQwGYrsI1PCCpAi6z4GJb2R/DWXAkcsq/7g==","signatures":[{"sig":"MEQCIFCFr9F0FhAmzy9ezn/TOsieCB6tOPTygTALIFuTzVJZAiAPYlJUbzRqDpJUg+DZZLE3N7AwHle/W4PFmC92IQRK6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4426442},"main":"index.js","gitHead":"b77c5add38729307252ab32bf19fdd4c935b8a01","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_9router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.7_1776661446000_0.8606394724120174","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"xlabrouter","version":"1.0.8","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.8","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_9router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_9router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"216b1a074dd0af3764d95a0595d25e853766903c","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.8.tgz","fileCount":508,"integrity":"sha512-Br2q34iKmI95hwpECyQCD0BQ6PptvyD0zX9Z47mTdZS7CNa+DZHCC3ASwZZY2XIrEwflDEMIjBVpV3lcBvys8Q==","signatures":[{"sig":"MEUCIDYp4IXDwpRieDwKYThwz6k5+sqiDPxRR2vZdifp+VsSAiEAmgR16IUlK0PRP8J6031x6fM3ueCYRdNNazlEPkxVFHo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4423599},"main":"index.js","gitHead":"81ea9549d477a09c56d1c201bbf98fad6e9c2407","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_9router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.8_1776662425353_0.8734343600542076","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"xlabrouter","version":"1.0.9","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.9","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"23ac0b7e1c6dc435ab78f536916e154630c8f579","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.9.tgz","fileCount":508,"integrity":"sha512-zPKSBO+y3cr04N8AXTULcJpcB8tP1gYWhV+J8gqCh8Uc/hWDVhsXoExY9ZL9rCwzc8TU1KcyyEUs73Mt7eDvgg==","signatures":[{"sig":"MEQCHwdZTjxFpph3THhA9pvRCkahNeYCHi8F/Add5WFIMI0CIQCwYlHKyXLNM1MutQhCb2HNdZpNOiNsst51jOTD7PPCqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4425062},"main":"index.js","gitHead":"25e6690c9e9843fa835466dcd8c72e9af4baff19","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.9_1776668509549_0.6991857565264752","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"xlabrouter","version":"1.0.10","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.10","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"60845779ccc56f4b15cd9d0d2868b1888461b262","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.10.tgz","fileCount":508,"integrity":"sha512-xWpi31XJEApXa2iezm+p/pJnevTl7WWivb4koMLQbv2/KaZkn+aa7GewnhacAUXY8NkSvgbpgzv0oKPaCultvw==","signatures":[{"sig":"MEYCIQDOgly5qAtvQwKB6tMCFb9xH7ma96JS6TCJE2m07n78ewIhAO+bT7TIbU0ETTxGrzO6iIe/XILmeL1X0aP55bTo+g2B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4427311},"main":"index.js","gitHead":"278df40cdfab944eb3798a5c21daeab54072668b","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.10_1776679371780_0.9760692308412611","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"xlabrouter","version":"1.0.11","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.11","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"71b76beff8bb4c400318b192aa0cc535e6046461","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.11.tgz","fileCount":507,"integrity":"sha512-ipRYmt79G0KCPSDevNTD8tjWHKdFP44Qw3MlnG0/s0TX8gCzu2oWQxyWY6CLUh5dlXPaHtbpPA4nyAtd8RfZQA==","signatures":[{"sig":"MEQCIGDE0EUwIx0Me/i99L+Bumw23DpiWpvXXtyPSnzu2ud6AiAf16rDrvsAwBIPY7xMY+4kJOj2LShHHxS/FE5FcYv9pQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4401186},"main":"index.js","gitHead":"730ef0e272472b9fc008db34015bd0e6c7ba3c79","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.11_1776680289295_0.6949678472439915","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"xlabrouter","version":"1.0.12","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.12","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"51075e6baadf1346fa7ff054e0d2458410ba58f9","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.12.tgz","fileCount":507,"integrity":"sha512-DZ+KjuZ99Ddr3dL7z0jqJ6L5ELB8DqrndgWLIVS85LonLJd9jaEntXywlo7HPPA2tFK7Tk0qpgaqNfNbqm8vKQ==","signatures":[{"sig":"MEQCIAhigpVUQAlXHXHJLKb0SfCJUgQ3u89b66DBL0ftS0r7AiAFni1Z7crmiScbzIdcdfs890hlom6eVRpmMdRV2JmdeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4401193},"main":"index.js","gitHead":"3023dd00a2ff47967a3fbfd33890df5803cd4397","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.12_1776680455530_0.8557381960716279","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"xlabrouter","version":"1.0.13","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.13","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"633f380e8a2ba74487b1fcd0501c921dfafae974","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.13.tgz","fileCount":507,"integrity":"sha512-g/uxsRfMDjCnmKF2qHRI9GG0oZuijKQwkr2Mxj7ivQ5+Xtl9KJ5on7S9uGT0T0afTDL36wUQ5MpaPDnhSm0DyQ==","signatures":[{"sig":"MEYCIQDVxx1q69lLzH007V4ib81N+GyK6+Io7lvZYbFeemPEmQIhAPzj06jt9Tu9/CZf5wDp14WlUJdgwg3zgoZzfo6plXi8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4371413},"main":"index.js","gitHead":"b47aa97aeee560a6224a62ede6f1d9d319e40ce2","private":false,"scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.13_1776681980009_0.6016231526836213","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"xlabrouter","version":"1.0.14","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.14","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"e9192efb1f54b218d9fae9499dc1e1b6f031e510","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.14.tgz","fileCount":508,"integrity":"sha512-40H5XvkP3uj8saoHYdWCTLQmuJfCX8pLNOJTENfVHc66DhLeRowgkntfeAHPzS8T+hA6hWdfEXYN6auYxridOA==","signatures":[{"sig":"MEUCICSpM2hZH9SH4g+hf7077ELaik/c40xBY6PVZxiNuEozAiEA9k+dmU+U4JiK3SCGiequOpnDN3WB9Z2dswxak4jIqwU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4375014},"main":"index.js","gitHead":"0c62edc22b8464370b22e32cc22a54eab510c5c1","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.14_1776747211843_0.4171367703386766","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"xlabrouter","version":"1.0.15","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.15","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"9ab6bbb51526de3223b59e901b91cdc9bb40c9cf","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.15.tgz","fileCount":509,"integrity":"sha512-zfNiuinV+Cx7dL2x5ul318Bq3jveNmmgWl6zk9y0bRqXWUWX5hqxRRwX3+aQ3BdurUXWDflQNXCCqceI6/Kjtw==","signatures":[{"sig":"MEQCIEYUlqX+FlxleFw5OBQigLs3FQZ+pr5yeP+GhKEwOeSjAiAtCXm3ZusPde5apq0jvpgb0eIXq7hZGy6N7BkuMAvzhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4377141},"main":"index.js","gitHead":"c933a8daaf6845ae0a5ede7f04d089037b63b38e","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build --webpack","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.15_1776751949985_0.071044222521508","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"xlabrouter","version":"1.0.16","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.16","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"41b30ac3e7c89b053ac6d50633bc8e62e519b6c7","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.16.tgz","fileCount":567,"integrity":"sha512-8XHvpFBevKFGfsU445ZXTskwfbJxoIVWh9Pv2+tDm9gY/sR41ZwaeR48Goeinli0GnVzg30GSbSONKTQ0RKh9w==","signatures":[{"sig":"MEQCID/VJJhQC+LtXcPERgaXqWNFN5Sk+M50Ajbs51exKUPVAiBmLd3RLWfoPpSzjXIrIoA9KMagjaWHqyLSBRiDjjBJ+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6697964},"main":"index.js","gitHead":"c4837af6ec446a064d71509415d37083b6975ccd","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.16_1776934963938_0.5764960878090455","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"xlabrouter","version":"1.0.17","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.17","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"7a79494777790e037faba6043d8035bb162db88e","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.17.tgz","fileCount":578,"integrity":"sha512-LDXx44RMZcQrsAEdits8lwPfmVg6XWshytzPM0nlU8tyqr6tnSeZB3w1TYgcwbx+0weAoxJsvCQ2C8OjT2+RWQ==","signatures":[{"sig":"MEQCIA0/dh74MfaBq2QucHPwz8IHo+6eqDwEQ7rAfqCtMBksAiBSf0bAvbWhgpEufsp2p7onwNojuFX6DpTV2sfF8y7KVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6879197},"main":"index.js","gitHead":"c4be9fdb63a0630dd433f33013de9dede20d2433","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.17_1777061858011_0.3177750495413003","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"xlabrouter","version":"1.0.18","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.18","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"811ebeb3f228e88f73a413c6da8aad56e2f66a0c","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.18.tgz","fileCount":578,"integrity":"sha512-VqpLugQWAdveACDAlod3q/BN1QYXa8moVItvGFDEOmgB8AISxdBOZOZg1e2hfx9otQditDSOddLueYGpaaQ72g==","signatures":[{"sig":"MEUCIEAwAWm40Ba5qB5J7QS6hwjjlaX5YY2Z6CW7yi0/Ap+nAiEAi1eN3Zg2DMhZZbvEjlz8CvuRzUH7RAHWKe73QjdHMfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6879752},"main":"index.js","gitHead":"8f217852bd564c29a0b645e4511365a83f6199cb","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.18_1777062893815_0.7355661201129309","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"xlabrouter","version":"1.0.19","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.19","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"22f4d231526d30832aee2dc2857c5cad5eb83790","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.19.tgz","fileCount":591,"integrity":"sha512-McXZR0N9npEvAH3GdQ4KkMCdkWDf9eSQWf/KRm0oe5OFKeVn9dD83T992zeN3JqH9DBcvyQdsSwDxwpHg4xEzw==","signatures":[{"sig":"MEUCIQCkBMfyCcrDw6iKkFoxSE4T8euAJnSVHBFFD95+hw8wNwIgTWChCiwXhLmKUUpZXHaas4H5ahymVmcjJGReznH74l8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7006197},"main":"index.js","gitHead":"fdfbfd1c8bfca26fc9c108fe7d26e3a64c1067a8","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.19_1777225268272_0.17824375238325496","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"xlabrouter","version":"1.0.20","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.20","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"8b33034a7d831aeca1138fc21662afc754788e7a","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.20.tgz","fileCount":591,"integrity":"sha512-nrzE9Wnd00/6M/FfMPnN89RszcAlYFOeFGhtoujtdjzwCEDLXA3JskBa0OdGFkS7rDgt8kn7rMaisp6xLekSQA==","signatures":[{"sig":"MEUCIFeKAU13eDp376kmseWV3oTpOIoMordVrnBVzkx78FTAAiEAoLsjmrzkBHZBiq8RkhQkqYFjpwT7DRa+7CEYc37g6hs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7006703},"main":"index.js","gitHead":"6ac54edf90df392b8c80c6aa108d0461d9018acd","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.20_1777227793898_0.6054308484139408","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"xlabrouter","version":"1.0.21","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.21","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"12f9368a78da2f44deb9a78a92b4653b7ef5bf66","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.21.tgz","fileCount":592,"integrity":"sha512-tEm30Qt7KliLAVGuXcVgVHbxrzRaOmLjs3Htip5qO3IcpfcVHonqXla6rO8vlOKY2X4OCpfDCPtppvsrkFvE8g==","signatures":[{"sig":"MEYCIQC8PJSltUDOjkJ0Ijqha4kDzzRVrMBw2UY8x4pS+ToHGAIhAKHiskgpnQMkj0veGib13RtV2mNwt1inafC6ZSVib3LB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7029952},"main":"index.js","gitHead":"1d08feac55746c3810effba692702e2d6d862b16","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.21_1777230284748_0.48852138869276684","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"xlabrouter","version":"1.0.22","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.22","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"c0c5733212c008edeca37177c5fe0e956dc11ef3","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.22.tgz","fileCount":765,"integrity":"sha512-s16JPrWr7e13DrU6nRJyLTHGwjHoEP3ASg7CSl/HNZRYIP8ROwM9Qi4PzU1cEVB1BKR40qFsZbeejrCchuC4Yg==","signatures":[{"sig":"MEUCIQDoc5WXyahLutUQvYwbm/zKxZN0J0Sh6/1+v5jBFIowlgIgCYgWsVk+l81PlYKqOuIYgJSECI2RihX0OkDgbWNB31A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12286346},"main":"index.js","gitHead":"500694ab4043122292b19e9522b39cc6b26168b5","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.22_1777297095755_0.6561385895137508","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"xlabrouter","version":"1.0.23","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.23","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"9943280e2af35216c2de4de514ded9d2539868ff","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.23.tgz","fileCount":765,"integrity":"sha512-MpH+aOhmBLkfjdZ8ijNs0Ojz46aQD4q9c4EvtHJ+EW2TDwBft9L7XWkZ3sUV6WAVApzqx1cEPgEDAAZ8AVtPEA==","signatures":[{"sig":"MEUCIHwKXdT6Lyxveg1O8hiU2Y5LYzcHmGM3TysPNPpUe7xOAiEAi+Kg56AhvpKvlcJQqkhuanIfQ9Zqhr020i/uhBvkI9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12309081},"main":"index.js","gitHead":"69960f5524714fae1d01c12ca60a69bd5445523e","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"xlabrouter web dashboard","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.23_1777313094313_0.15836969740587303","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"xlabrouter","version":"1.0.24","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.24","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"dfd385d284107b13c310e14dbd21f2b45f939bdd","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.24.tgz","fileCount":765,"integrity":"sha512-ogh3lqwfjOgKs7I/tuNyQS/IEFtZDm955wYCPwzUvQVkeyOYpvgplGf1XR7ihjDkJjthDKycoDQd6sQL+PxBtg==","signatures":[{"sig":"MEUCIQDLtkkOSE54JFfx88ghqREtTNiR92L2mmJ8zYHuGhqWmgIgcIyg5jJHrASdnIxaJGtSLY41qZzoddwym7/4f01MFFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12309128},"main":"index.js","gitHead":"81477876d81a81a1d36b68af00fa855f23cdaf0a","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.24_1777313601257_0.8795201281736493","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"xlabrouter","version":"1.0.26","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.26","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"bcd5981299d4066b497b3ca379e67f04b5ba43f5","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.26.tgz","fileCount":783,"integrity":"sha512-S9cQeMDMv+jlLBw41Qai3edE+gIqlpaWTqx+WGfsPIagOVhbMe3It3WSguy2dOlSL6sEtiRKXKKj26J9TvEhhg==","signatures":[{"sig":"MEUCIBAGRrib0AFggokCNLhayq7ZORJb4M8m21Qh8BG0Do0fAiEA9SVpFhIa6RyL7Z8R9sICdjUwp2KSpX6m3X41MqnhgwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12361792},"main":"index.js","gitHead":"1d2ae73b6978be42c90c1d55ea77629784346196","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.26_1777366365919_0.3281949302516973","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"xlabrouter","version":"1.0.27","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.27","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"6c593f5c9edd8f467431e5bdba9e69aab11d6628","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.27.tgz","fileCount":783,"integrity":"sha512-6SqCquQvP/dPg+jcujLDrKFp7AKSQ6haq62JJ92EkKE1WLBZcBt/+Rj670DitEBN6ac5dzEK1FBEP9mwDvMb9g==","signatures":[{"sig":"MEUCIQDQflCAqQQtc35npce6GBGMRkv1q5XPSOAd/ldQOk0qkQIgXoK+PhdSVRvYZGVFcVCA2vV6NqEuuhPeHzeL0/DSO9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12363816},"main":"index.js","gitHead":"ddfe3fbf9892cde2eaff8994b355bed67c4462ec","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.27_1777369092453_0.3999729081062855","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"xlabrouter","version":"1.0.28","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.28","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"8dfebf371eced1188332aae409b671f6d57a76af","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.28.tgz","fileCount":783,"integrity":"sha512-3uD2n72eXTU1H/eEAXQgaQkZ1FnBEdEw1wFDmNlDWDjdkmfoNbgSFB+89gOGNhZOBqnWJkMZUb5g1JG39EIV8A==","signatures":[{"sig":"MEUCIQD0aJaFefNIbtjWL8DD5a7CgekU0FKiwEUr3lQINLCxZQIgG8g8UwCVXqvE8kamCVWrxqpWdbUK+4EOIXanNcJRUv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12364176},"main":"index.js","gitHead":"864f99c31e0f718ba6944daa1ea6a7ff7fa77db8","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.28_1777369331282_0.633441194514798","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"xlabrouter","version":"1.0.29","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.29","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"f2cc550ab54ff20e8d214ee8e29210dac99fae39","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.29.tgz","fileCount":783,"integrity":"sha512-4k6oj/78mRo0QQUHJsWHlizbzO2UMjQhM1p2jfK8+Hl7Ir/q+LhY7ZFX+PwYrXsXJ5N5oaBmarxCOk1Z4jdGaA==","signatures":[{"sig":"MEUCIGbwDMXf1Wvs6kdEP1x+nJUptSLg2Za7Lj8jlhNHbyVGAiEA+NrRIZ6bVWEdPEyEG/z0jcoUw5xgUsDQIg4nSDZyL5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12363138},"main":"index.js","gitHead":"e4c4b49c5f9a03fe62f0ec21201f2b002500843e","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.29_1777372157839_0.6373820019823895","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"xlabrouter","version":"1.0.30","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.30","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"4f1a9cd39a7cec0536fb3cc0a57f5ceb99711a8f","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.30.tgz","fileCount":824,"integrity":"sha512-KeiP4HYtEmuuyt95dAAgU0rS383fgbulfPeHfVn/9gJ6y4FEaZqkM4+2HmYcqfC+G7TCPK+6DnHXj/89aAY66A==","signatures":[{"sig":"MEUCIDNuorj//dJljTSxbIROICIQeqdMuxoosrFzzBNR8qryAiEAkjBMoe7xw3ry/fMvDwD9ibpdtCqkA1OPvG7jQ+dzRaU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12544632},"main":"index.js","gitHead":"a44769039f8fd76f1dbf9161e6d160910ffb8ff0","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.30_1777428912204_0.14115498854952646","host":"s3://npm-registry-packages-npm-production"}},"1.0.31":{"name":"xlabrouter","version":"1.0.31","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.31","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"02acc6328e769762bee2a3f3d415e84fd2ace1b7","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.31.tgz","fileCount":827,"integrity":"sha512-ydr/n3IWHACXZLZiXotNNyqEgXT0OMX2btS4JCVibmxjhXJyak+T8Hp7m/1h/9TV2FeH4ds3sUf89CpyeyEtNQ==","signatures":[{"sig":"MEUCIQCBAxBZIsGQocAgGwQSwVc9OieZ7C10IrUPydtdESli9QIgcVh32zi+72fRwsChgM3cpqTtJQHfCxgzsUhkMwgfdjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12573419},"main":"index.js","gitHead":"0c4a56d26a05b08aaea99c81907ca7947f891b40","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.31_1777452330342_0.5468143125101299","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"name":"xlabrouter","version":"1.0.32","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.32","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"5a69dbec1c9bcbeba75141147dc6732d89b7b9f3","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.32.tgz","fileCount":827,"integrity":"sha512-7slmwRY50xC04oSaAsCo8+gNGkfim2yw+Mi/JXwENAIhY9ddoKvljj3KX51NUMQDKjgstmuETZE4i/DGykp+Wg==","signatures":[{"sig":"MEUCIQC8Jx4OWF2t50W2df82r8nHGF8mRSpESjvwYldcUaoPeQIgE7i/n+QCdLHdlWATfKgKcWUpBbH4sqdUG+xjqOtqqJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12575992},"main":"index.js","gitHead":"1c84fd62482cbb9d7bab28b1f8e1233e529d66a6","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.32_1777454100522_0.6779723167478975","host":"s3://npm-registry-packages-npm-production"}},"1.0.33":{"name":"xlabrouter","version":"1.0.33","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.33","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"c19529d450114da20e58c6a666329eb216123394","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.33.tgz","fileCount":827,"integrity":"sha512-PWXrflrzjX1Vaa52UpLu2OfHHw44H0UVyt+L4vNYo41iRfdo3u9dfGnvtK92E+Q7pMYsaq2+fywjwmLKN4iwMQ==","signatures":[{"sig":"MEYCIQDP/gDomvX8/n/gx4/dNuOVZgG6H7TYa/jvWmbA9/nymgIhAKt8g3r8ku5/1wHbBZ6CGKqr6uxWZDjWqMfn3wlC2xsj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12576139},"main":"index.js","gitHead":"359d1b9a9063a87e4a32373601a29bc1905e5517","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.33_1777455487214_0.9458753863155576","host":"s3://npm-registry-packages-npm-production"}},"1.0.34":{"name":"xlabrouter","version":"1.0.34","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.34","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"fc23914d2d29873bbff3345b4629419e85769d8b","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.34.tgz","fileCount":754,"integrity":"sha512-XxoA/3qUNbEtxIhhXf/DJXdh+nig4ZIViG83+ysmE/xD5t0jKEalGFZmMSydjngpsY2Ss2exy9ZlB5H8QVwbVQ==","signatures":[{"sig":"MEUCID/Gy1Iw5ct0mJHP8A5izKrMsEnTvzHIat9ElETI3fVNAiEAjraosNq8L9vZpu1cfSPLSahoCjnNjC8XqfWpHznQ96Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12323561},"main":"index.js","gitHead":"f7cfc867600d85639a661cce5428981b39fab0a4","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.34_1777484450629_0.1079945639571378","host":"s3://npm-registry-packages-npm-production"}},"1.0.35":{"name":"xlabrouter","version":"1.0.35","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.35","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"429e9e1707eb769bf7b5ab4e256669d40b5897b0","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.35.tgz","fileCount":754,"integrity":"sha512-PBgTXy7CXqBRokRY15CoZ4c5x5Pl8el5hyIBsWjjx3w1B6DOsLIuBUfI3cbmEDjFmoG7cJC4IEnWMNiNtTXQvg==","signatures":[{"sig":"MEUCIQDNRTlajRl7L86PfoiFOD/RDzsxG774VybYY0W+HZiIUwIgWQCP7BhZhtblI6aW1IZGVBmGWrXbAEXgtt+Z7U8f+EE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12326068},"main":"index.js","gitHead":"d6e14c3971b0d914c547a65ee60c95657081ac57","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.35_1777516643052_0.927348159873717","host":"s3://npm-registry-packages-npm-production"}},"1.0.36":{"name":"xlabrouter","version":"1.0.36","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.36","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"c786724811ab5bc46a99f206af5b669cc46000c9","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.36.tgz","fileCount":754,"integrity":"sha512-8O8WE1eoLRMtspC8H8e/AxXENu4zorvgAPbvNLRDQlMueEDda2uPNSATxZeJajBQBsei9O5tcgXONf1BrSHTOA==","signatures":[{"sig":"MEQCIG41B1Lal/6o5lbYtoedo1TXU6CGky07YZhCjVdDMRPNAiA9cE4/3kNvoDoo/FJplcgBqqUGmZr8Sy9D9lssfkAEAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12326591},"main":"index.js","gitHead":"8daab903e733b380b26148fd83254f25dc7f8472","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.36_1777518727733_0.7618432067364851","host":"s3://npm-registry-packages-npm-production"}},"1.0.37":{"name":"xlabrouter","version":"1.0.37","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.37","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"6d2f234d902d1d29594719867868620200597da5","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.37.tgz","fileCount":754,"integrity":"sha512-E0I8Ct67kIfwwROBv/QSiuNECxJ72U1Wdrop5TsG1kqwXEOiZ7cMnLIiEL/Fdo6yjEG5PHLMiarDUIEWJBhrvQ==","signatures":[{"sig":"MEYCIQD7CaqZIFzl5SDwv38SQzg1FBTfoq23Z/0u7/xQpcKQrQIhAMKxoCZbYrC9iIcXzNk/hCMLCrHPWnqCVzb5o5rEhbsR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12328731},"main":"index.js","gitHead":"293556fc56796b049d5f7c18941b1b9d4b62280c","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.37_1777519565261_0.8667053996395422","host":"s3://npm-registry-packages-npm-production"}},"1.0.38":{"name":"xlabrouter","version":"1.0.38","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.38","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"c035eebefdd8ad926c9393330c835cc02bf33bd3","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.38.tgz","fileCount":754,"integrity":"sha512-P/J+k29bQF8N7jarCyxPwZHGFoDXYdeAMREP1X6e6jBZP9Hu3S5vA0bXCltbXFrb8pK9E05JxhoGdbZl4C3qeg==","signatures":[{"sig":"MEQCIHJpCURzGiw7FfXio+BXvZ4vcDSaEzfw/4wKDMcAzwtMAiACh/guhT96QxftbM2G3hkDmPJ8yoc5scFYmzZd7F6ShQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12328788},"main":"index.js","gitHead":"1626f6aa38fd56f690bc6bc5c4c575c51924d985","private":false,"scripts":{"dev":"next dev --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.38_1777523255626_0.4231068517671801","host":"s3://npm-registry-packages-npm-production"}},"1.0.39":{"name":"xlabrouter","version":"1.0.39","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.39","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"a3e844e35940598c9a4037d75e23dc4b6452c745","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.39.tgz","fileCount":805,"integrity":"sha512-xcquhyaR7Suo34x0TgbNWXhLxaOe0rnhzpgCsygmWR9Nx5qogq+d/erJMRWmiP34WEYOmW4cf9XPl3H1Ld6f4g==","signatures":[{"sig":"MEUCIC7kFTTMziRhq7asb05gUB/62UGQGd7E2RFpNvoTWXj1AiEAsgfHUPiEhK4zZmUmFAttWD/BXWeDBjsXP/xM2JvOtaM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12877355},"main":"index.js","gitHead":"34a9fd4b5d14981e11d4570acc3fd9cfed7dd561","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build","dev:turbo":"next dev --turbo --port 1212","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","dev:bun:turbo":"bun --bun next dev --turbo --port 1212","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.39_1777900265335_0.43814941740855495","host":"s3://npm-registry-packages-npm-production"}},"1.0.40":{"name":"xlabrouter","version":"1.0.40","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.40","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"f0f97da67fadb26327ae24941cf8984391a4a79f","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.40.tgz","fileCount":805,"integrity":"sha512-YTyLwKWfjHJiTOsQmxRYefId9bdMhX2d90XxDyufiJ0wXok/6RRsw6iPIKYzAxyR1sKF0NoKOPP/6EYIchILvA==","signatures":[{"sig":"MEYCIQCWDkQDe2DoKxgQ5ueyQX9v5EpaCZTw65BFLk0+66+7OwIhANE5HaNqemOJxHmvike1YihwDQcSvaaq9yXOQP11OOcD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12876213},"main":"index.js","gitHead":"b1c8bd1868ef5aca018db26fafe73fe7153354f8","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build","dev:turbo":"next dev --turbo --port 1212","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","dev:bun:turbo":"bun --bun next dev --turbo --port 1212","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.40_1777900954448_0.9519244327448553","host":"s3://npm-registry-packages-npm-production"}},"1.0.41":{"name":"xlabrouter","version":"1.0.41","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.41","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"6dc1e5e58a2449243b21c88aa7ccfd28bffdbbe6","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.41.tgz","fileCount":805,"integrity":"sha512-aRk20saTu2akQ0e323Xrn7QE9VjYJUsK5SW/oxCZtFN/+g8bnR3rBqz5l2Kat4lL8kbEuqmzZQ5WsKuoLuWMAg==","signatures":[{"sig":"MEUCICzr72v3uTn3tGhMZgY41ZpdqfeVTdby+tMLPVJVHa4aAiEA9fJLAgI3/N/4iBi8wQHVbH2amQNgu8R7QKNa3ilee00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12878076},"main":"index.js","gitHead":"189ef08a311e24665d6b60cd54276a20c97c63bb","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build","dev:turbo":"next dev --turbo --port 1212","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","dev:bun:turbo":"bun --bun next dev --turbo --port 1212","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.41_1777901158172_0.9029967108833674","host":"s3://npm-registry-packages-npm-production"}},"1.0.42":{"name":"xlabrouter","version":"1.0.42","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.42","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"6ff1a058d527e0defda5f610b278b5bd9cb090d4","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.42.tgz","fileCount":805,"integrity":"sha512-20FdkbjVlbz3Nqo76KQSSD61EHIVbTrMd9JVLBB57kNOxn+602aAqknUkd8Q2mCe6PhLm5M7GWQOcvhuiykVvA==","signatures":[{"sig":"MEYCIQDX88X1nOtMkE+e2gvfdR4MqVH+Q9LLv64uvjpD3xjQ6gIhANxDsJ7z2zSF4Kji7JxvXhkbIgyQ1To/CEIaR0ZjCQw0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12878064},"main":"index.js","gitHead":"9a86a52a63951ec7ef93a28dc8b94e6c4f93a5bf","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build","dev:turbo":"next dev --turbo --port 1212","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","dev:bun:turbo":"bun --bun next dev --turbo --port 1212","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","bcryptjs":"^3.0.3","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.42_1777902163110_0.28596447372092415","host":"s3://npm-registry-packages-npm-production"}},"1.0.43":{"name":"xlabrouter","version":"1.0.43","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.43","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"08fe299dc7fd20f4c7e71f5573f649b27a836e4c","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.43.tgz","fileCount":811,"integrity":"sha512-zjU3BBY/LMXuT+bLHvEkXu2LSEL+GoVq+exkl6gHWtzZlUduBdG98KCOp9+kO/rwmCpoL0MjO/24rM0A7mGlHA==","signatures":[{"sig":"MEQCIGVFYJtuQagUQD4t48cHZlHBKSrFHnKTIksdErwF2ghkAiAQH8UZG9cdnuHIyNa/VLe/rqhZ7Gqy3dXiDHlZeXfwIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12925249},"main":"index.js","gitHead":"e6fbe6ba8b5604accab52d314d70215d9ee357c9","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build","dev:turbo":"next dev --turbo --port 1212","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","dev:bun:turbo":"bun --bun next dev --turbo --port 1212","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","qrcode":"^1.5.4","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.43_1777993766405_0.12189194710556195","host":"s3://npm-registry-packages-npm-production"}},"1.0.44":{"name":"xlabrouter","version":"1.0.44","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.44","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"0b9dcc7e10582a011c67a4e2b28203cddc99bb5d","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.44.tgz","fileCount":813,"integrity":"sha512-98DpgQw6ta9GV2o7IMycc+5dol3RV1cr0/iQN1Qos3yyWkNnxOuV2W/F5Xt47pM9JJWDePmpYOAOoaEP4sRYBw==","signatures":[{"sig":"MEUCIFtacUgbWwx0N/+pT5ZzzXhsgRH6QxBJyzHrW5PoJpFBAiEA5S2FeUOtI2qQxxDs07lSuzZP4dteh6vf32b1mykjc/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12937253},"main":"index.js","gitHead":"de72c26cf4823590f36d68b643da30e3cc42803d","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build","dev:turbo":"next dev --turbo --port 1212","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","dev:bun:turbo":"bun --bun next dev --turbo --port 1212","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","qrcode":"^1.5.4","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.44_1778005995500_0.5276655979183027","host":"s3://npm-registry-packages-npm-production"}},"1.0.45":{"name":"xlabrouter","version":"1.0.45","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.45","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"adbd81e6b96a890b71ff06cd93752059e5b4c8f4","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.45.tgz","fileCount":813,"integrity":"sha512-1MwEZO8pNNQ1kZvjnt3OFZSH3i4gqaP2rwq/tfa3+c5lgiqlzAfJ9bl1MKyGlZc/mdlJMFekTlCOKc174lulAg==","signatures":[{"sig":"MEUCIQCnUkmGJ40Dsb34XM2w4avA1sXxwEnTRdRkPfzxTb7PRwIgVVRN8H+AzGJVFURje8/XP96eTtN8ng5gFt8+ag74Jwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12938202},"main":"index.js","gitHead":"20540dedd7babb86171651853c35f620f74390d0","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build","dev:turbo":"next dev --turbo --port 1212","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","dev:bun:turbo":"bun --bun next dev --turbo --port 1212","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","qrcode":"^1.5.4","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.45_1778049233633_0.6252959916326766","host":"s3://npm-registry-packages-npm-production"}},"1.0.46":{"name":"xlabrouter","version":"1.0.46","keywords":[],"author":"","license":"ISC","_id":"xlabrouter@1.0.46","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"homepage":"https://github.com/quangminh1212/XLab_Router#readme","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"bin":{"xrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xlabrouter":"bin/xlab_router.js"},"dist":{"shasum":"acb6e8eaa546e2e904d75183d4d3ec4ce200a970","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.46.tgz","fileCount":812,"integrity":"sha512-z1SsdIpD9Aq+pSZ7wSX0qXPEZjG6Hi/42UB8iZamat73rsE+O0tqRSTiQxqOIYfzNRSE5177X5POh2nI605z7Q==","signatures":[{"sig":"MEUCIEnmmQumV0vOfnFiJhOsxincayPctfqMthACFi/n/q/UAiEAy1b5PvPVlnfIDho/vO9onTXhIcfFtuwbrlPpvnQEvxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12931144},"main":"index.js","gitHead":"c450ff403977545602f5a41afad623d515e81d10","private":false,"scripts":{"dev":"next dev --webpack --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","dev:bun":"bun --bun next dev --webpack --port 1212","build:bun":"bun --bun next build","dev:turbo":"next dev --turbo --port 1212","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js","dev:bun:turbo":"bun --bun next dev --turbo --port 1212","ddns:cloudflare":"node scripts/cloudflare-ddns.js"},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"repository":{"url":"git+https://github.com/quangminh1212/XLab_Router.git","type":"git"},"_npmVersion":"10.9.3","description":"Global CLI and web dashboard for XLab Router","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.3.0","jose":"^6.2.2","next":"^16.2.4","open":"^11.0.0","uuid":"^13.0.0","lowdb":"^7.0.1","react":"19.2.4","marked":"^18.0.1","qrcode":"^1.5.4","sql.js":"^1.14.1","undici":"^7.25.0","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.12","inquirer":"^9.3.8","react-is":"^16.13.1","recharts":"^3.8.1","systray2":"^2.1.4","react-dom":"19.2.4","node-forge":"^1.4.0","prop-types":"^15.8.1","selfsigned":"^5.5.0","@xyflow/react":"^12.10.2","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","proper-lockfile":"^4.1.2","socks-proxy-agent":"^8.0.5","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","http-proxy-middleware":"^3.0.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","postcss":"^8.5.10","tailwindcss":"^4","eslint-config-next":"16.1.6"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"_npmOperationalInternal":{"tmp":"tmp/xlabrouter_1.0.46_1778071701049_0.5389188247103978","host":"s3://npm-registry-packages-npm-production"}},"1.0.47":{"name":"xlabrouter","version":"1.0.47","description":"Global CLI and web dashboard for XLab Router","private":false,"preferGlobal":true,"license":"ISC","bin":{"xlabrouter":"bin/xlab_router.js","xlabuter":"bin/xlab_router.js","xrouter":"bin/xlab_router.js"},"scripts":{"dev":"next dev --webpack --port 1212","dev:turbo":"next dev --turbo --port 1212","build":"next build","start":"node ./bin/xlab_router.js --web","ddns:cloudflare":"node scripts/cloudflare-ddns.js","dev:bun":"bun --bun next dev --webpack --port 1212","dev:bun:turbo":"bun --bun next dev --turbo --port 1212","build:bun":"bun --bun next build","start:bun":"bun ./.next/standalone/server.js","postinstall":"node scripts/check-tailscale.js"},"dependencies":{"@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.2.2","@xyflow/react":"^12.10.2","confbox":"^0.2.4","express":"^5.2.1","fs":"^0.0.1-security","http-proxy-middleware":"^3.0.5","inquirer":"^9.3.8","jose":"^6.2.2","lowdb":"^7.0.1","monaco-editor":"^0.55.1","next":"^16.2.4","node-forge":"^1.4.0","node-machine-id":"^1.1.12","open":"^11.0.0","ora":"^9.3.0","prop-types":"^15.8.1","proper-lockfile":"^4.1.2","qrcode":"^1.5.4","react":"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1","recharts":"^3.8.1","selfsigned":"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1","systray2":"^2.1.4","undici":"^7.25.0","uuid":"^13.0.1","zustand":"^5.0.12"},"optionalDependencies":{"better-sqlite3":"^12.9.0"},"devDependencies":{"eslint":"^9.39.4","eslint-config-next":"16.1.6","postcss":"^8.5.10","tailwindcss":"^4"},"main":"index.js","directories":{"doc":"docs","test":"tests"},"repository":{"type":"git","url":"git+https://github.com/quangminh1212/XLab_Router.git"},"keywords":[],"author":"","bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"homepage":"https://github.com/quangminh1212/XLab_Router#readme","overrides":{"dompurify":"^3.4.2","postcss":"^8.5.10"},"_id":"xlabrouter@1.0.47","gitHead":"4a6de911554bf652e2fb41a3c84fa57777d02b5e","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-0KGF0chgxliFzKDcLL9ipoZcIoinsDBX3nfGs5dXsfUmSZHs03ZtZHekX3sWH8eddkoKdDA+nraMgMhmwtMyTQ==","shasum":"060582b16bf9995792f5e23e513a6805e5605e92","tarball":"https://registry.npmjs.org/xlabrouter/-/xlabrouter-1.0.47.tgz","fileCount":814,"unpackedSize":12966987,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDYQPczbt5HZ8xAuC2grwqevctll/RdYTPLVa0+wdlN/AIgbf4hMCP5sFvVvMxaSsURJrGClasWyyXoS7vhuXGVR2c="}]},"_npmUser":{"name":"xlabglobal","email":"xlab.rnd@gmail.com"},"maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/xlabrouter_1.0.47_1778126064627_0.29138736329141923"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-18T15:32:31.199Z","modified":"2026-05-07T03:54:25.120Z","1.0.0":"2026-04-18T15:32:31.838Z","1.0.1":"2026-04-19T12:05:07.835Z","1.0.2":"2026-04-19T15:06:29.748Z","1.0.3":"2026-04-19T17:34:28.409Z","1.0.4":"2026-04-20T02:46:58.619Z","1.0.5":"2026-04-20T03:51:17.822Z","1.0.6":"2026-04-20T04:47:37.781Z","1.0.7":"2026-04-20T05:04:06.240Z","1.0.8":"2026-04-20T05:20:25.571Z","1.0.9":"2026-04-20T07:01:49.789Z","1.0.10":"2026-04-20T10:02:52.005Z","1.0.11":"2026-04-20T10:18:09.577Z","1.0.12":"2026-04-20T10:20:55.744Z","1.0.13":"2026-04-20T10:46:20.238Z","1.0.14":"2026-04-21T04:53:32.113Z","1.0.15":"2026-04-21T06:12:30.198Z","1.0.16":"2026-04-23T09:02:44.249Z","1.0.17":"2026-04-24T20:17:38.415Z","1.0.18":"2026-04-24T20:34:54.099Z","1.0.19":"2026-04-26T17:41:08.569Z","1.0.20":"2026-04-26T18:23:14.160Z","1.0.21":"2026-04-26T19:04:45.093Z","1.0.22":"2026-04-27T13:38:16.291Z","1.0.23":"2026-04-27T18:04:54.739Z","1.0.24":"2026-04-27T18:13:21.644Z","1.0.26":"2026-04-28T08:52:46.319Z","1.0.27":"2026-04-28T09:38:12.846Z","1.0.28":"2026-04-28T09:42:11.721Z","1.0.29":"2026-04-28T10:29:18.603Z","1.0.30":"2026-04-29T02:15:12.652Z","1.0.31":"2026-04-29T08:45:30.743Z","1.0.32":"2026-04-29T09:15:00.965Z","1.0.33":"2026-04-29T09:38:07.641Z","1.0.34":"2026-04-29T17:40:51.059Z","1.0.35":"2026-04-30T02:37:23.512Z","1.0.36":"2026-04-30T03:12:08.216Z","1.0.37":"2026-04-30T03:26:05.695Z","1.0.38":"2026-04-30T04:27:36.030Z","1.0.39":"2026-05-04T13:11:05.910Z","1.0.40":"2026-05-04T13:22:34.876Z","1.0.41":"2026-05-04T13:25:58.669Z","1.0.42":"2026-05-04T13:42:43.491Z","1.0.43":"2026-05-05T15:09:26.968Z","1.0.44":"2026-05-05T18:33:16.090Z","1.0.45":"2026-05-06T06:33:54.140Z","1.0.46":"2026-05-06T12:48:21.647Z","1.0.47":"2026-05-07T03:54:25.015Z"},"bugs":{"url":"https://github.com/quangminh1212/XLab_Router/issues"},"license":"ISC","homepage":"https://github.com/quangminh1212/XLab_Router#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/quangminh1212/XLab_Router.git"},"description":"Global CLI and web dashboard for XLab Router","maintainers":[{"name":"xlabglobal","email":"xlab.rnd@gmail.com"}],"readme":"<div align=\"center\">\n  \n  # XLab Router - Free AI Router\n  \n  **Never stop coding. Auto-route to FREE & cheap AI models with smart fallback.**\n  \n  **Connect All AI Code Tools (Claude Code, Cursor, Antigravity, Copilot, Codex, Gemini, OpenCode, Cline, OpenClaw...) to 40+ AI Providers & 100+ Models.**\n  \n\n  [🚀 Quick Start](#quick-start) • [💡 Features](#key-features) • [📖 Setup](#setup-guide) • [🌐 Website](https://xlabrouter.com)\n\n  [🇻🇳 Tiếng Việt](./i18n/README.vi.md) • [🇨🇳 中文](./i18n/README.zh-CN.md) • [🇯🇵 日本語](./i18n/README.ja-JP.md)\n</div>\n\n---\n\n## 🤔 Why XLab Router?\n\n**Stop wasting money and hitting limits:**\n\n- ❌ Subscription quota expires unused every month\n- ❌ Rate limits stop you mid-coding\n- ❌ Expensive APIs ($20-50/month per provider)\n- ❌ Manual switching between providers\n\n**XLab Router solves this:**\n\n- ✅ **Maximize subscriptions** - Track quota, use every bit before reset\n- ✅ **Auto fallback** - Subscription → Cheap → Free, zero downtime\n- ✅ **Multi-account** - Round-robin between accounts per provider\n- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, any CLI tool\n\n---\n\n## 🔄 How It Works\n\n```\n┌─────────────┐\n│  Your CLI   │  (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)\n│   Tool      │\n└──────┬──────┘\n       │ http://localhost:1212/v1\n       ↓\n┌─────────────────────────────────────────┐\n│           XLab Router (Smart Router)        │\n│  • Format translation (OpenAI ↔ Claude) │\n│  • Quota tracking                       │\n│  • Auto token refresh                   │\n└──────┬──────────────────────────────────┘\n       │\n       ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI\n       │   ↓ quota exhausted\n       ├─→ [Tier 2: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)\n       │   ↓ budget limit\n       └─→ [Tier 3: FREE] iFlow, Qwen, Kiro (unlimited)\n\nResult: Never stop coding, minimal cost\n```\n\n---\n\n## 🚀 Quick Start\n\n**1. Install and run:**\n\nGlobal install (recommended if you want the `xlabrouter` command everywhere):\n\n```bash\nnpm install -g xlabrouter\nxlabrouter\n# optional alias:\n# xrouter\n```\n\nRun without global install:\n\n```bash\nnpx xlabrouter\n# optional alias:\n# npx xrouter\n```\n\nLocal project install:\n\n```bash\nnpm install xlabrouter\nnpx xlabrouter\n# or: npx xrouter\n# or: ./node_modules/.bin/xlabrouter\n```\n\nXLab Router starts the Web UI in the current terminal by default.\nOpen the dashboard at `http://localhost:1212`.\nUse `xlabrouter --tray` if you want the background/system tray mode.\nYou can also use the shorter alias `xrouter` if you prefer.\n\n**2. Connect a FREE provider (no signup needed):**\n\nDashboard → Providers → Connect **Claude Code** or **Antigravity** → OAuth login → Done!\n\n**3. Use in your CLI tool:**\n\n```\nClaude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:\n  Endpoint: http://localhost:1212/v1\n  API Key: [copy from dashboard]\n  Model: if/kimi-k2-thinking\n```\n\n**That's it!** Start coding with FREE AI models.\n\n---\n\n## 📖 Full Documentation\n\nVisit [xlabrouter.com](https://xlabrouter.com) for complete setup guides, provider configuration, and advanced features.\n\n---\n\n## 🛠️ Support\n\n- **Website**: [xlabrouter.com](https://xlabrouter.com)\n- **GitHub**: [github.com/quangminh1212/XLab_Router](https://github.com/quangminh1212/XLab_Router)\n- **Issues**: [github.com/quangminh1212/XLab_Router/issues](https://github.com/quangminh1212/XLab_Router/issues)\n\n---\n\n## 📄 License\n\nISC License - see [LICENSE](LICENSE) for details.\n","readmeFilename":"README.md"}