{"_id":"out-url","_rev":"13-4001c0366474919d036455ad6c57808c","name":"out-url","dist-tags":{"latest":"1.5.0"},"versions":{"1.0.0":{"name":"out-url","version":"1.0.0","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.0.0","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/itz-azhar/ourl#readme","bugs":{"url":"https://github.com/itz-azhar/ourl/issues"},"dist":{"shasum":"19b0b50dda8d67134fec7fc19186b57fbdf00670","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.0.0.tgz","fileCount":6,"integrity":"sha512-KCW3dL2AC6Lw7qjyn9YdFowfP1QfaA9h6KUGllgvymR6PmsAtgTEWVXR/wQThAic/cKcqldUogT6cjY9wede+w==","signatures":[{"sig":"MEYCIQDXfYjrJGh7X4UkLMSainXzXtOwlpmXlBaSmrwmBcaF/wIhAOeQxwOuKz13jCOc7xMcCVulrJ7WLDqBu7n15MUltOXz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVM1oCRA9TVsSAnZWagAAZOAP/0ywrD0f98WRsyowoiB5\nlFZ2LZSI/no9yu76QfTcuFIY6/e26Rx4OSCHwdmU9U/OW4m2n1JBcpN/MTM2\njoGpoxuKHyC0tfleO6T5Eo9MGfIU8FLuWVKBMohjzPGFP/yWwcQkRJSHvc+4\nl4JtYmvcJ/EXaglf9Nrvb2a2i0/JxFnSHzAFy7oUyKuOfNkQINaHbIFc4THl\nXI3u3y9EFs3M695sxZLKyG4N/WrEIYGonx/cGv0UVT1ciC10uZsZ2f3rlwPz\nN0CPctmfJmbahDGni0JAaTdl2QtGQ0fttRgaBi+o960DbT1N/5iv3rEamrRX\nFMYd17kNkUroAwYmLVvcsYQ+tjcTY4c8bASADHN3sO5OpVzp1bv9HcXK/xw7\n5MhJnzlKoMOEEskuclYi4V6k9EbE1LJvQ5j0QPXxbf80H+GDsna/BCRmypzh\n0Gn1e9hMcNS1PHbpkoM27oaNPgutzyNP3NwXhetA/TZXPvs5TK+rxN8f4wBI\ndYkDPIgCxVmOzJbS9fjz0BhVNnC7ZcOwFqMiXG1clWT4PTYCl2FBvR3VMafb\n5gYUIxpvUfLTDY59ZzU9iycLmjr0dqFJLr/jv8lxH51t0XpiJj2zAi7KRq41\nLNSbU+5uOmjp16Vl6t/SVAlhvlty3vLQX+52sEBaUjDsXqd5fPHG+OZFCurN\nj/uX\r\n=uvP8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"80b0a8fd22c62a6cc96ffd7c031a1c2f8ac7b353","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/itz-azhar/ourl.git","type":"git"},"_npmVersion":"5.6.0","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"8.11.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^4.19.1","eslint-plugin-import":"^2.13.0","eslint-config-airbnb-base":"^13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.0.0_1532284264270_0.041735827255614755","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"out-url","version":"1.0.1","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.0.1","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/itz-azhar/ourl#readme","bugs":{"url":"https://github.com/itz-azhar/ourl/issues"},"dist":{"shasum":"53018025124bac6ab599ef2c88ebf6e897832a2a","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.0.1.tgz","fileCount":6,"integrity":"sha512-eOOQXU+TL7CtIAUCDT/jxI/RT3ttM8AVpOBjyZX+K5zSbHKcGeC6J/6cnzYsA4hRnpl5lrEXVnQISRgujWqofw==","signatures":[{"sig":"MEQCIGNmXfzm3Ig7XcWwbspYUZL0Co7uCVquR+lNIaqDvR6gAiBO9OiPOvLn/eLKzP/IIx8COSz0xZ7bLqMq0MGHuKXKlQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVM4FCRA9TVsSAnZWagAA3FAP/2FdQ+yYounuT4uWFjM+\nHxC9iJL5AzsxyosyMBEfOoDh6G2Cj+MJT+0YUHQUKXFnq2p0PgRNZDFnl+lg\n/XNo6dEWKFyxDCTOBCQrv1/VVM+bUd0wOEtWZL4qSlTguxBfyTfBPJvbUEgZ\nxlIESYVlaaSPmfZhBnye3pXBePa6I4XAC4FPP1g1q1WjWTzwpVnn3dQuD7SD\nI6qeGUEipaPEzRBBVGF2n3+kJ7ZvAiOC1VOV2oigzwRaFbTSD1sbj7vaI38F\ngvJCxJWbP7gvZr9XPuQQXrhDBHtTifOji3y3BysDVGSVcl15l8Nof8MA1JTJ\nw7pF8rY/a1vTWNflICoIlnRqh2GhuuN1Q57T7VUSzLa6oUduKT+rearsyBJt\nBU1HzWxIxCfmXH/fec1hWF1v3lVeRXj1RehlDd1i6epAKupX6k8V81Y5kvuB\nPHdBqqs6E+gclfncEiL1r0yE+q5LGgxViTm/FMOU+WagE90vCA94EzUuiDrG\ns+M+d7hwr3zVTAJSseC42iNNlI96uLvYfcIUEzfLp13d/lVTfXROOhjJbeRF\nW5b99jSEHwRvGAL0E33zP7GK1jTBpSCMdRZU9KCGUf9/g4JsuPN9HMferNIE\nfbUHXtIWQFgXX954cPX0ieKc/gAVxxLbzg0FgfVRwg1TgYmgCOZX1dshOqlS\nksyx\r\n=8cl5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"1eb268936895d7db24fd25dcb1391f81bf2a59e8","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/itz-azhar/ourl.git","type":"git"},"_npmVersion":"5.6.0","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"8.11.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^4.19.1","eslint-plugin-import":"^2.13.0","eslint-config-airbnb-base":"^13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.0.1_1532284421628_0.8434590048442503","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"out-url","version":"1.1.0","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.1.0","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/itz-azhar/ourl#readme","bugs":{"url":"https://github.com/itz-azhar/ourl/issues"},"dist":{"shasum":"3ca605157dd61cbc733f48ce438cdd93cf881506","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.1.0.tgz","fileCount":5,"integrity":"sha512-gaWG2hfTGiIIu7b6ScKyo8rOQ8GKXCGo+ijx3ia6F8MvA45jmtNuCc4NxSCrCeQ9sggsxawZzNrRYUe5oFC2tQ==","signatures":[{"sig":"MEYCIQDwsSaI8FUEw6pFdX8kOVW4RMyUyS2/tDKmSzaidPAYmQIhAOHj6RILOPgRcDn5kz3ngKbB3K66VSJagHjDd9VR/fBI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6GHLCRA9TVsSAnZWagAAIOoP/A0bJeLcNAagX/q4CPtY\ngmEJIcFhJdfe2YthdEjPaOToE1pszSsF017qiskvtHdZcsPjcu/TL+pDi35l\nNV4BlfSicnUtKU1yeeeRcpi7IqiUdbBMyhoJNwYVpWxuA/kOa+JLXWVGUQCD\n/SVATwvUtUAYmHyQeRj3lw5biFJ1dQTJoJpvyAh/e5ng0I7c1QAnjrf8X06+\nmX04Qd9oH812Noey+pBnRjOFHCXyZ/khNKDPUwK5u4W2GlrxTFwN87mP/RuA\nelbG9IlKRbeEu4eBPqSaZSQ6AJ5yZJNcv/SmnZyvZsXeNDWO/fJDwQkFn/Cz\ntcADCUIVltfV0OvvR9iGZS/fVOjRaSiMEa0QNm42ysrLMuVfOJZXmz51htyQ\nbjx1g8jBqYzGcB3L0bjYA2xc07J9ekmVMrCdM/Go1FgfH3hDFQkDhWj2e67W\nzkz9HQTV4hnCyXZkruQ2sH5GItMRhl/3siaYrOlBvObNjCrxpKsExZHYc7bS\nZfP6nBEujh6Ho3quwMsEvxQ1rosvdO00GdH7+2ar3ghiyem6EjP4UlQf9Ktt\n03PqksXfuKMCbbf3R9Entp8MCWe9d1/UiQt5PGNCpsSYwlhaupvYQmvvnq0w\nzagKcRwkWqa05pwTIt448JtLyNy6wZGvrU7br9z2OXB9ZxPqj+JpgSLyl6pC\nn8Z/\r\n=o1KG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"b9eacfd576e26f23f6361faee574f59e3752a0a9","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/itz-azhar/ourl.git","type":"git"},"_npmVersion":"6.13.4","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"12.16.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^4.19.1","eslint-plugin-import":"^2.13.0","eslint-config-airbnb-base":"^13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.1.0_1592287690652_0.5815478085019621","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"out-url","version":"1.1.1","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.1.1","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/itz-azhar/ourl#readme","bugs":{"url":"https://github.com/itz-azhar/ourl/issues"},"dist":{"shasum":"bf81592575a82900a8293cef02acf8e2017c6f96","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.1.1.tgz","fileCount":5,"integrity":"sha512-4rxCbs51DCTrbtrKYCfQXItaA4RbeSqo4m5hg3cUphNoN+e1ddbII2l4cYRQxEvEaAWQmIBGCU8dCVVZ+0vWfA==","signatures":[{"sig":"MEYCIQDquvjm0Q6BgvGrNdJMs/1G6xaGzzfPlB4TV2wxD57jPQIhAJHvc6F5G5CmdfnOvC3p2Q5ZYnHS6drZq1x1gSRlZ/aD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6GNtCRA9TVsSAnZWagAAv2YP/jOLiBJDYjrmQpSL9L3E\nkViHryo4+WNBNWzVg8sc9wlMXnipQBnUaTHnGntNaBouZCyXDcOhRfGCicOT\nvdP0fOK2sehrSZY51Ml0ssN0K8Dv7aOHnHiMdxk1sRrkG8ljRhDsmbt82RvB\nnagnw/KQOqNe0rO73lkzZ7SztBQhgSCG05dn0TO7izW4DxMwj6ZypftVLX6F\nUKeOB2cC+LAYalWIthFlD/i8psxPrNRlFW4DmSGLLzGUjGV2LeJnoTX3aIDD\nfMWIsUDVaj2l1DVxt5mDgKTAP1Im8QopcHRf7PMmuxlBSAIjKSP8Dv710wkg\n1Bf/2JD18c99qoRkV9F5jjFbTYteSgKGw7XUoY0U+GPc1+EPfFVZ7dXp/GWG\n4AHmjBTrywMEyxiLYvvIbujhWR9wHtsA1pMQxPQYplNZJyF3kxx/oH/vvYxT\nMoxiJnvwqcqRcI3ZYI4RyYjf+SxZZpvTI+ZK0VuCgN4HSyB+aMTg1Ai/LNOp\nTZb0zleIZ5kkAYLeNxUBTzsQJRcYuqW72aNtT3j4yX6r/FPO8SdUoHiM6pGh\nsA+4jPJ7GfXtsPVhbEi2O7+0eTQunDXjJIAVbm+9SIJFJxPTsWhIzzb5womM\nv4XH4Xlat8t3+xPDqLjHlRykxWyN1BdYesC0EoyPKWJC75uPRPz4xwNPooEM\nlU3i\r\n=KSWo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"4d296620910f9bab529ee549c3b8222bd264a695","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/itz-azhar/ourl.git","type":"git"},"_npmVersion":"6.13.4","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"12.16.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^4.19.1","eslint-plugin-import":"^2.13.0","eslint-config-airbnb-base":"^13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.1.1_1592288109111_0.5232712811511948","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"out-url","version":"1.1.2","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.1.2","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/itz-azhar/ourl#readme","bugs":{"url":"https://github.com/itz-azhar/ourl/issues"},"dist":{"shasum":"a5500e999f29aa12c452940c981edc0a26648e97","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.1.2.tgz","fileCount":7,"integrity":"sha512-TRo9NFQhY2SfNUdlnXfJ3ypdaie/wJWds3GUdoGSaznrf35AcLaEO2BB/DeLKvkPyFeSVTx/srITYIhcA+PCoA==","signatures":[{"sig":"MEUCIQCIGDC1k2Qw7FHqOuSEVkz4IuseC5dFserXzfWyk/93NQIgGHcboDdnvAN5UwwV4ww2ygmr4g5YDev0l2LzBLZZMIU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmAINCRA9TVsSAnZWagAA0RkP/jFSvFndOqWUKtmn9GPf\nH1JfIYsCk2dCv6aRi3Kdy9KoMbSV1cKkdUT0VY3jLM2+u4stDWZoQ63jQJwo\nIBkUP+G37oL5SVWFl41b/afOArNXMk9a2xOel2APntExU6ikteZZkljaXPoE\n9hIF/AjyWWvvHuRW1UjFwA+SrhHNDHsnTD5FXxqSTR6McSiB1k/IqC585ixi\n/5le4EW8sm5svuxlPm20t2FhnBLryDTsi2qsJmbdTO/lyRKE8C/8A8C6ARHi\nEk5U1PcsXLiyvxDLF8QzpUcPcKoCP28cvhsLTrtgzpWI6kqCBnpKT8917ZZZ\ngBHAkWkBYQ/RhE4mjwPpuu+mKFwPKZ34Kdi6nAOFs9hU6KCD2Qx2cVb5tQb9\n2qEWPVMo2sg9Mpaluow6oRUzHS2hECHH2AKGGwVacCyFS76Dh2TwbGYRi5CQ\nzXidJZck58fSKaB0YWwCbmdpc9Zq8J+4eMwzedsw8UAsKVBzId6kIi7u0b0L\n41eb6PEpT5T81D9Pj8VzFIEiSHc7ElEzCdBSxQppIp6AfEPErH1pL72ni1zy\ni9iw+HJ306Lw9AoE2hE3XPlIQ2rP7eKERMzxofdx1hEQk3HQpLAi1W1mVsZs\nHbiiUee5NsxfIb0E8Y/b/EcXuPy3GchWwkVsWrDsA0a2oc6qGSHydj20gMOA\nKPrL\r\n=9Y8I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"2b988307c65bbbf2151dbe615323b49eff2dd004","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/itz-azhar/ourl.git","type":"git"},"_npmVersion":"5.6.0","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"10.1.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^4.19.1","eslint-plugin-import":"^2.13.0","eslint-config-airbnb-base":"^13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.1.2_1620574733230_0.7408422997703514","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"out-url","version":"1.1.3","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.1.3","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/itz-azhar/ourl#readme","bugs":{"url":"https://github.com/itz-azhar/ourl/issues"},"dist":{"shasum":"308cb937f831cffe71a0028e5c0a5cf7aea8e97e","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.1.3.tgz","fileCount":7,"integrity":"sha512-g0IEKWG44uHkSMoAHbW/97Zue0h8UvmqpB7EZ1eVcyfxG4lzoXvVhsepPkyfGmJFX7fFFA4DrymlzQKLeSZMNw==","signatures":[{"sig":"MEUCIQDSyzNpcpxblIreI74w6PYf2D3Us6IbZtZAGxkR7oj73wIgHLPC9hNLaxlIdKqHNv7rdmkuGLjAlJ6B4gbcT+5wpVs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmAXGCRA9TVsSAnZWagAAyGQQAJ1jjWml0hh8ACHfIz8k\n42SgxD1WrqQ2oCL8vVYBvuddPj7mYvo0R8sHmtkCeFpHjeuCOq3X7D1X84pq\nJpHd0u1+Y5HDJ1ssqbN9OI+5AHOARA5zaPlKEokH9wmvTK+MIj/55fCu2kbM\nKaiKCHwXGtX1ytRYKaxBwT/iGgYuVwuFFVTVFB/UFw9S7h8t5a1Zmmo9updH\nab2W3zcG5o2xJ8Ums+MyAmDmk3/J6tb/OzuguxOx2JmPWQlnJgr1DxX9ggmp\n0jmPzUv1kfzhUksE6rtPrwY3ScThr1ucZPr2tTFPva8OY1RNekd26Zunz0pp\ndUhezdscoBDHCxQWZhmLEzDaShdQdtZ3cVmuchMaEDNRXNdeeCJthG49thSZ\n+EF0OqdFcam+LQDeLdpLo/zVmTGInkl5PbLQEd5nVtQzbF8ISzCQ8g77fYcR\n9ADO/HLSyVej7XbMErQFAM8TCasGUDRLyljLaHYdfLEf7ERZ9YUuVgBWv2xZ\n+H7dIPSsvRFKpyciPCw8aO1H7OIxranQKMZis6bMoEgmxrfpriRD7uYZ6q84\nyyop85yqWylqIuGaP/litTa/ZPJo9qWZBdEPiFtPlWP9nRSsqTesl2oKdlU0\netA3FSGGpxniCmH2VJLZA9ZM2bgFjALbPYAKrHS2pQc2C7R4HrtFx5YPB+A1\nI65v\r\n=HMBR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"80a71e24961c31a45fc54c8b70055504c9d2782d","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/itz-azhar/ourl.git","type":"git"},"_npmVersion":"5.6.0","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"10.1.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^4.19.1","eslint-plugin-import":"^2.13.0","eslint-config-airbnb-base":"^13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.1.3_1620575686284_0.2269579955628349","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"out-url","version":"1.2.0","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.2.0","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/itz-azhar/ourl#readme","bugs":{"url":"https://github.com/itz-azhar/ourl/issues"},"dist":{"shasum":"edb4c868f152ee02ea301fdd7897c59bbc068196","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.2.0.tgz","fileCount":7,"integrity":"sha512-wGwXmfpMbzrmWe8/c3NUzA4SjpHFiqydOG5/NKOzUPz89MvCpICXqQZ2HhLG3rKKsP2tqwfpSIA4fmub7k1T6Q==","signatures":[{"sig":"MEUCIQDTm5xS3heV+SNmwh6QIL8cV5L6YMbevWLwkPT5o2p7TgIgYWGPYrPjRKsR5sTO3HNLsH6lh4gTw0zzjZ81ZY0Jzvg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4648},"main":"index.js","types":"./index.d.ts","gitHead":"74e62bde8ffd58a0a057f8f18538f1d03507d527","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/itz-azhar/ourl.git","type":"git"},"_npmVersion":"8.19.4","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"16.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","eslint-plugin-import":"^2.29.1","eslint-config-airbnb-base":"^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.2.0_1706349101654_0.49669181247837413","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"out-url","version":"1.2.1","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.2.1","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/azhar22k/ourl#readme","bugs":{"url":"https://github.com/azhar22k/ourl/issues"},"dist":{"shasum":"c49429f170ae2aa60b301962cab8457b7d1c0182","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.2.1.tgz","fileCount":7,"integrity":"sha512-Xu9/cs3MItfDO4VYY7pLsUym4aB47DvyhXJUe2u/GQp8lc89NG54F/BE+JyvU89KSDMtZG1qhGmyXcy57X9ckQ==","signatures":[{"sig":"MEUCIQC2ewLqmGp2d0DQ4Q+Q2v99jTp2Z0fvrYhwPkNB1SAZGwIgP9bt8HrQGzWKQSZLufIQthhX/bwck1QlfIj6nDiTAgw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4645},"main":"index.js","types":"./index.d.ts","gitHead":"96b5fc32441dc560512a9eeae86c94b83d5a0e24","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/azhar22k/ourl.git","type":"git"},"_npmVersion":"8.19.4","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"16.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","eslint-plugin-import":"^2.29.1","eslint-config-airbnb-base":"^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.2.1_1706349689540_0.7185266204468712","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"out-url","version":"1.2.2","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.2.2","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/azhar22k/ourl#readme","bugs":{"url":"https://github.com/azhar22k/ourl/issues"},"dist":{"shasum":"261422df87f7a4471525f0b6b376d9ba099a75b2","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.2.2.tgz","fileCount":6,"integrity":"sha512-9YX6NkfE8kujbeK0h1m+z8AdVYN3luHeF55ayNKks1qIfpsNInwQa4F5WAbSHhxEQvPDEB7tSnbK3RIvCxjJoA==","signatures":[{"sig":"MEYCIQC06ap/Bct/ZHbBSwFr5l+vzJOk6/5CgcouiPY9HINvUAIhANIUjD4MPjVKUWMo8Q56s5ifC/60o/8MZnQ0mT4tmzxg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3742},"main":"index.js","types":"./index.d.ts","gitHead":"39618a28c877a51b2b28a0eba5548c719c4ada95","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/azhar22k/ourl.git","type":"git"},"_npmVersion":"8.19.4","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"16.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","eslint-plugin-import":"^2.29.1","eslint-config-airbnb-base":"^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.2.2_1706350039431_0.028447049957535553","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"out-url","version":"1.3.0","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.3.0","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/azhar22k/ourl#readme","bugs":{"url":"https://github.com/azhar22k/ourl/issues"},"bin":{"ourl":"bin/cli.js","out-url":"bin/cli.js"},"dist":{"shasum":"96cd106d9cc514cf1af74796c55ecf5c6a804c82","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.3.0.tgz","fileCount":6,"integrity":"sha512-kXxAOXett4U/VVz6HtqDBpZEahh3qLofPYu1CclDRLpOVupVX+NqnkW2Moe60dVjjSrIgPJc+G86DrUVdIDlFA==","signatures":[{"sig":"MEUCIECtsGKhgi4c/CD+azPEUMu5W7FF5tuTMCrTQYLc/UpVAiEA5nQfogzKIhKWq6nNISYsXP+HQovBpbHl2i7Z6X/grMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8772},"main":"index.js","types":"index.d.ts","gitHead":"7c2e8358c800b4bd9017084de09352b4b19302f5","scripts":{"lint":"eslint .","test":"bun test","prepare":"bunx husky"},"_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/azhar22k/ourl.git","type":"git"},"_npmVersion":"11.19.0","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"24.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^8.56.0","lint-staged":"^17.5.1","eslint-plugin-import":"^2.29.1","eslint-config-airbnb-base":"^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.3.0_1789405106510_0.6712707939364069","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"out-url","version":"1.4.0","keywords":["open","url","browser","desktop","macos","android","windows","linux"],"author":{"name":"Azhar Khan"},"license":"MIT","_id":"out-url@1.4.0","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"homepage":"https://github.com/azhar22k/ourl#readme","bugs":{"url":"https://github.com/azhar22k/ourl/issues"},"bin":{"ourl":"bin/cli.js","out-url":"bin/cli.js"},"dist":{"shasum":"c9846db1b92ba8400e4d14c4e9db7e4083a567ea","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.4.0.tgz","fileCount":6,"integrity":"sha512-8YHRtLGcY/z7d5qY2q6KgRLpRFeMWM0yc4uGTAWFbXA2RYOd50SpEgMYZq3N36OJASxodiMCVOm0dT7sKR4k5A==","signatures":[{"sig":"MEQCIFaSazZ2V0/zAwdHOXNEYzqbUVj6ELrmYtOODXrhiI5wAiBcv9aOr2RjKOdQV0q+hu8bJTDZmkeaWZghLzOThws8/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB+VLxmAsW065JZbbpfQ5IahBYjEf6eJa9ZUmX3XQV+0AiEA7u8EH6jlxRGXPelGSOhvmHnvFrGpH4c42aMNM1s7Qcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15649},"main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"18a8cf2eac8561354243b6afe2b363304263b577","scripts":{"lint":"eslint .","test":"bun test","prepare":"bunx husky"},"_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"repository":{"url":"git+https://github.com/azhar22k/ourl.git","type":"git"},"_npmVersion":"11.19.0","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"_nodeVersion":"24.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^8.56.0","lint-staged":"^17.5.1","eslint-plugin-import":"^2.29.1","eslint-config-airbnb-base":"^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/out-url_1.4.0_1789847688688_0.24909284683432142","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"_id":"out-url@1.5.0","bin":{"ourl":"bin/cli.js","out-url":"bin/cli.js"},"bugs":{"url":"https://github.com/azhar22k/ourl/issues"},"dist":{"shasum":"070b347312d6ed41857e4cf6dc40e7381c664c77","tarball":"https://registry.npmjs.org/out-url/-/out-url-1.5.0.tgz","fileCount":13,"integrity":"sha512-OjEAb4P5c6adL3RaBDIQe2Hmc/SDAkPJuxsMTGHKTQENp3Ble8+/rn83JaK8dDWXHQon/ghK3pxsPWuw+vmezA==","signatures":[{"sig":"MEQCIDx4yaC8F5h1w8D2bfplsqKql9N4uvrgGJIT8mslEQqaAiAVvOuxDVokQMUrofrOLc0BfkIFI7RI1+vIk0NvTxV8Aw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCptWMv/ArKNyY+AFpqHY6j1B7IUpdEo5dICyWfeh2PXgIgBzh+d6zui8Zn0LloyqY64eguVN4qHcONVsveRlIQ+TA="}],"unpackedSize":49333},"main":"index.js","name":"out-url","types":"index.d.ts","author":{"name":"Azhar Khan"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"7f80b25cac3798e6922ffbc6ec5cb98532e2c433","license":"MIT","scripts":{"lint":"eslint .","test":"bun test","prepare":"bunx husky"},"version":"1.5.0","_npmUser":{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"},"homepage":"https://github.com/azhar22k/ourl#readme","keywords":["open","open-url","open-in-browser","url","browser","desktop","cli","terminal","cross-platform","zero-dependencies","zero-dependency","macos","windows","linux","wsl","android","termux","automation","browser-args","remote-debugging","cdp","chrome-devtools","playwright","puppeteer","dry-run","simulation","validate","validate-url","url-validation","sanitization","security","agent","agentic","ai-agent","mcp","mcp-server","model-context-protocol","claude-desktop","cursor","function-calling","tool-calling","ai-tools","llm","openai","anthropic","gemini","json"],"repository":{"url":"git+https://github.com/azhar22k/ourl.git","type":"git"},"_npmVersion":"11.19.0","description":"Cross platform Node.js Utility to open urls in browser","directories":{},"maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^8.56.0","lint-staged":"^17.5.1","eslint-plugin-import":"^2.29.1","eslint-config-airbnb-base":"^15.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/out-url_1.5.0_1789915710662_0.9098484686736916"}}},"time":{"created":"2018-07-22T18:31:04.270Z","modified":"2026-09-20T14:48:30.920Z","1.0.0":"2018-07-22T18:31:04.326Z","1.0.1":"2018-07-22T18:33:41.715Z","1.1.0":"2020-06-16T06:08:10.797Z","1.1.1":"2020-06-16T06:15:09.423Z","1.1.2":"2021-05-09T15:38:53.383Z","1.1.3":"2021-05-09T15:54:46.457Z","1.2.0":"2024-01-27T09:51:41.818Z","1.2.1":"2024-01-27T10:01:29.708Z","1.2.2":"2024-01-27T10:07:19.583Z","1.3.0":"2026-09-14T16:58:26.656Z","1.4.0":"2026-09-19T19:54:48.787Z","1.5.0":"2026-09-20T14:48:30.762Z"},"bugs":{"url":"https://github.com/azhar22k/ourl/issues"},"author":{"name":"Azhar Khan"},"license":"MIT","homepage":"https://github.com/azhar22k/ourl#readme","keywords":["open","open-url","open-in-browser","url","browser","desktop","cli","terminal","cross-platform","zero-dependencies","zero-dependency","macos","windows","linux","wsl","android","termux","automation","browser-args","remote-debugging","cdp","chrome-devtools","playwright","puppeteer","dry-run","simulation","validate","validate-url","url-validation","sanitization","security","agent","agentic","ai-agent","mcp","mcp-server","model-context-protocol","claude-desktop","cursor","function-calling","tool-calling","ai-tools","llm","openai","anthropic","gemini","json"],"repository":{"url":"git+https://github.com/azhar22k/ourl.git","type":"git"},"description":"Cross platform Node.js Utility to open urls in browser","maintainers":[{"name":"itz-azhar","email":"azhar.khan.78601@gmail.com"}],"readme":"# out-url\n\n> Lightweight, cross-platform utility to open URLs and local files in desktop browsers with **zero dependencies**. Agent-ready with native Model Context Protocol (MCP) and LLM function calling support.\n\n[![NPM](https://nodei.co/npm/out-url.svg?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/out-url/)\n\n[![CI](https://github.com/azhar22k/ourl/actions/workflows/ci.yml/badge.svg)](https://github.com/azhar22k/ourl/actions/workflows/ci.yml) [![CodeQL](https://github.com/azhar22k/ourl/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/azhar22k/ourl/actions/workflows/codeql-analysis.yml) [![Release Please](https://github.com/azhar22k/ourl/actions/workflows/release-please.yml/badge.svg)](https://github.com/azhar22k/ourl/actions/workflows/release-please.yml) [![Publish to NPM](https://github.com/azhar22k/ourl/actions/workflows/publish.yml/badge.svg)](https://github.com/azhar22k/ourl/actions/workflows/publish.yml) ![](https://img.shields.io/npm/v/out-url) ![](https://img.shields.io/bundlephobia/minzip/out-url) ![](https://img.shields.io/bundlephobia/min/out-url) ![](https://img.shields.io/npm/dt/out-url) ![](https://img.shields.io/github/issues/azhar22k/ourl) ![](https://img.shields.io/github/issues-pr/azhar22k/ourl)\n\n---\n\n## ✨ Features\n\n- 🪶 **Zero Dependencies**: Pure vanilla Node.js standard library — no bloatware, minimal footprint.\n- 🌍 **Cross-Platform**: Seamless support for macOS, Windows, Linux, WSL, and Android (Termux).\n- ⚡ **Asynchronous & Non-Blocking**: Spawns detached background processes without hanging your Node.js event loop.\n- 🤖 **AI Agent-Ready**: Native **Model Context Protocol (MCP)** server for Claude Desktop, Cursor, and Zed.\n- 🛠️ **Built-in LLM Tool Schemas**: Zero-boilerplate function calling definitions for OpenAI, Anthropic Claude, and Google Gemini.\n- 🔍 **Command Simulation (`--dry-run`)**: Preview resolved OS executable binaries and arguments before spawning.\n- 🛡️ **URL Validation & Security**: Built-in protection against malicious pseudo-protocols (`javascript:`, `vbscript:`, `data:`).\n- 💻 **Automation Friendly**: Supports custom browser arguments (e.g. `--remote-debugging-port=9222`), headless fallback, and machine-readable `--json` output.\n\n---\n\n## 📦 Installation\n\nInstall locally in your project:\n\n```bash\nnpm install out-url\n# or\nbun add out-url\n# or\nyarn add out-url\n# or\npnpm add out-url\n```\n\nOr run instantly via `npx` or `bunx` without installing:\n\n```bash\nnpx out-url https://github.com/azhar22k\n# or with the shortcut\nbunx ourl https://github.com/azhar22k\n```\n\n---\n\n## 🚀 Quick Start\n\n### From the Command Line (CLI)\n\n```bash\n# Open a URL in default browser\nnpx out-url https://github.com/azhar22k\n\n# Open in a specific browser\nnpx out-url https://github.com/azhar22k --app firefox\n\n# Open in private / incognito mode\nnpx out-url https://github.com/azhar22k -i\n```\n\n### In Node.js / TypeScript\n\n```javascript\nconst { open } = require('out-url');\n// or: import open from 'out-url';\n\n// Non-blocking: opens browser immediately and lets your process continue\nawait open('https://github.com/azhar22k');\n\n// Open local HTML reports or files\nawait open('./coverage/index.html');\n```\n\n---\n\n## 💻 CLI Reference\n\nThe CLI is available as either `out-url` or `ourl`.\n\n### 1. Basic Targets\n```bash\n# Open any web URL\nnpx out-url https://github.com/azhar22k\n\n# Open local HTML files, markdown, or generated reports\nnpx out-url ./coverage/index.html\n\n# Reveal current directory or folder\nnpx out-url .\n\n# Open the current git repository's remote URL on GitHub/GitLab\nnpx out-url --repo\n```\n\n### 2. STDIN & Piping\nPipe URLs directly into `out-url` from other CLI tools or scripts:\n\n```bash\n# Open origin remote URL\ngit remote get-url origin | npx out-url\n\n# Pipe from echo or scripts\necho \"https://github.com/azhar22k\" | bunx ourl\n```\n\n### 3. Browser Selection & Incognito\n```bash\n# Open in specific browser (chrome, firefox, edge, safari, brave)\nnpx out-url https://github.com/azhar22k --app firefox\nnpx out-url https://github.com/azhar22k --app chrome\n\n# Open in private / incognito browsing mode\nnpx out-url https://github.com/azhar22k -i\nnpx out-url https://github.com/azhar22k --app chrome -i\n```\n\n### 4. Process Control & Environments\n```bash\n# Wait for the browser window/process to exit before resolving\nnpx out-url https://github.com/azhar22k --wait\n\n# Gracefully print URL in headless CI / Docker environments without a display server\nnpx out-url https://github.com/azhar22k --fallback\n```\n\n### 5. CLI Options Summary\n\n| Flag | Shorthand | Description |\n|---|---|---|\n| `--app <name>` | | Target specific browser (`chrome`, `firefox`, `edge`, `safari`, `brave`) |\n| `--incognito` | `-i` | Launch browser in private / incognito mode |\n| `--wait` | | Wait for browser process to terminate before exiting |\n| `--repo` | | Open the current git repository's remote URL |\n| `--fallback` | | Gracefully print URL in headless CI / Docker environments |\n| `--dry-run` | | Simulate command resolution without launching browser process |\n| `--validate` | | Validate and sanitize target URL without opening |\n| `--json` | | Output result as machine-readable JSON for agents and scripts |\n| `--schema[=format]` | | Output LLM tool definition schema (`openai`, `anthropic`, `gemini`) |\n| `--mcp` | | Run as native Model Context Protocol (MCP) server over stdio |\n| `--version` | `-v` | Display version |\n| `--help` | `-h` | Display help message |\n\n---\n\n## 🛠️ Programmatic API Reference\n\n### `open(target, [options])`\n\nOpens a target URL, file, or folder. Returns a `Promise` that resolves to a Node.js `ChildProcess` object (or `null` in headless fallback mode, or `DryRunResult` in dry-run mode).\n\n```javascript\nconst { open } = require('out-url');\n\n// Basic usage\nawait open('https://github.com/azhar22k');\n```\n\n#### Options (`OpenOptions`)\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n| `app` | `string` | `null` | Target browser alias (`'chrome'`, `'firefox'`, `'edge'`, `'safari'`, `'brave'`) or executable path |\n| `incognito` | `boolean` | `false` | Launch browser in private / incognito mode |\n| `wait` | `boolean` | `false` | Block promise resolution until browser process terminates |\n| `browserArgs` | `string[] \\| string` | `[]` | Additional flags to pass to browser (e.g. `'--remote-debugging-port=9222'`) |\n| `dryRun` | `boolean` | `false` | Simulate command resolution without spawning a process |\n| `validate` | `boolean \\| ValidateUrlOptions` | `false` | Validate and sanitize URL against dangerous protocols before launching |\n| `fallback` | `boolean \\| Function` | `false` | Gracefully handle headless/CI environments. If function, called with formatted URL |\n\n#### Examples\n\n```javascript\nconst { open } = require('out-url');\n\n// 1. Non-blocking (default): exits immediately while browser stays open\nawait open('https://github.com/azhar22k');\n\n// 2. Wait for browser to close\nawait open('https://github.com/azhar22k', { wait: true });\n\n// 3. Open in a specific browser\nawait open('https://github.com/azhar22k', { app: 'firefox' });\n\n// 4. Open in private/incognito mode\nawait open('https://github.com/azhar22k', { incognito: true });\n\n// 5. Pass custom browser flags (e.g. CDP remote debugging)\nawait open('https://github.com/azhar22k', {\n  app: 'chrome',\n  browserArgs: '--remote-debugging-port=9222',\n});\n\n// 6. Safe opening: automatically reject invalid or dangerous targets\nawait open('https://github.com/azhar22k', { validate: true });\n\n// 7. Dry-run simulation (preview command without spawning process)\nconst preview = await open('https://github.com/azhar22k', { dryRun: true });\nconsole.log(preview.command); // e.g. 'open' on macOS, 'cmd.exe' on Windows\n\n// 8. Headless CI / Docker fallback\nawait open('https://github.com/azhar22k', { fallback: true });\n```\n\n#### Error Handling\n\n```javascript\nconst { open } = require('out-url');\n\nopen('https://github.com/azhar22k')\n  .then((childProcess) => {\n    if (childProcess) {\n      console.log('Browser launched with PID:', childProcess.pid);\n    }\n  })\n  .catch((err) => {\n    console.error('Failed to open:', err.message);\n  });\n```\n\n---\n\n## ⚙️ Advanced & Automation Features\n\n### 1. Command Preview & Simulation (`--dry-run` / `dryRun: true`)\n\nBefore executing operating system commands, AI agents and security-hardened wrappers often need to preview or inspect the resolved binary and arguments without launching a process:\n\n```bash\n# Preview via CLI\nnpx out-url https://github.com/azhar22k --app chrome --browser-args=\"--remote-debugging-port=9222\" --dry-run\n# Output: [out-url dry-run] Would execute: open -a Google Chrome -n --args --remote-debugging-port=9222 https://github.com/azhar22k\n\n# Machine-readable JSON output\nnpx out-url https://github.com/azhar22k --app chrome --browser-args=\"--remote-debugging-port=9222\" --dry-run --json\n```\n\nOutput:\n```json\n{\n  \"status\": \"dry_run\",\n  \"command\": \"open\",\n  \"args\": [\n    \"-a\",\n    \"Google Chrome\",\n    \"-n\",\n    \"--args\",\n    \"--remote-debugging-port=9222\",\n    \"https://github.com/azhar22k\"\n  ],\n  \"target\": \"https://github.com/azhar22k\",\n  \"resolvedTarget\": \"https://github.com/azhar22k\",\n  \"formattedUrl\": \"https://github.com/azhar22k\",\n  \"platform\": \"darwin\"\n}\n```\n\nIn Node.js:\n```javascript\nconst { open } = require('out-url');\n\nconst preview = await open('https://github.com/azhar22k', {\n  app: 'chrome',\n  browserArgs: '--remote-debugging-port=9222',\n  dryRun: true,\n});\n\nconsole.log(preview.command); // 'open' (or 'cmd.exe', 'xdg-open')\nconsole.log(preview.args);    // ['-a', 'Google Chrome', ...]\n```\n\n---\n\n### 2. Custom Browser Flags & Remote Debugging (`--browser-args`)\n\nWhen building browser automation pipelines, test runners, or attaching automated tools (Playwright, Puppeteer, Chrome DevTools Protocol), you can launch the real browser with custom flags:\n\n```bash\nnpx out-url https://github.com/azhar22k --app chrome --browser-args=\"--remote-debugging-port=9222 --disable-gpu\"\n```\n\nIn Node.js:\n```javascript\nconst { open } = require('out-url');\n\nawait open('https://github.com/azhar22k', {\n  app: 'chrome',\n  browserArgs: [\n    '--remote-debugging-port=9222',\n    '--disable-gpu',\n    '--user-data-dir=/tmp/agent-chrome-profile',\n  ],\n});\n```\n\n---\n\n### 3. URL Validation & Security Sanitization (`open.validateUrl()` / `--validate`)\n\nAutonomous agents frequently parse URLs from untrusted model outputs, prompt injections, or scraped web pages. Malicious pseudo-protocols (`javascript:`, `vbscript:`, `data:`, `about:`, `blob:`) can trigger severe security vulnerabilities or shell execution exploits.\n\n`out-url` provides zero-dependency URL validation and security sanitization:\n\n#### CLI URL Validation\n```bash\n# Validate URL without opening (exits 0 if valid)\nnpx out-url https://github.com/azhar22k --validate\n# [out-url] Valid target: https://github.com/azhar22k (https:)\n\n# Machine-readable JSON output for agent pipelines\nnpx out-url https://github.com/azhar22k --validate --json\n# {\"status\":\"valid\",\"valid\":true,\"target\":\"https://github.com/azhar22k\",\"url\":\"https://github.com/azhar22k\",\"protocol\":\"https:\",\"isLocal\":false}\n\n# Rejects dangerous pseudo-protocols (exits 1)\nnpx out-url \"javascript:alert(1)\" --validate --json\n# {\"status\":\"invalid\",\"valid\":false,\"target\":\"javascript:alert(1)\",\"protocol\":\"javascript:\",\"error\":\"Dangerous or unsupported protocol: javascript:\"}\n```\n\n#### In Node.js / TypeScript\n```javascript\nconst { open, validateUrl } = require('out-url');\n\n// 1. Standalone URL validation\nconst check = validateUrl('https://github.com/azhar22k');\nconsole.log(check.valid);    // true\nconsole.log(check.protocol); // 'https:'\n\nconst dangerous = validateUrl('javascript:alert(1)');\nconsole.log(dangerous.valid); // false\nconsole.log(dangerous.error); // 'Dangerous or unsupported protocol: javascript:'\n\n// 2. Safe opening: automatically reject invalid or dangerous targets\nawait open(untrustedInput, { validate: true });\n```\n\n---\n\n## 🤖 AI Agents & Model Context Protocol (MCP)\n\n`out-url` is designed to be agent-ready for AI coding assistants (Claude Desktop, Cursor, Zed, Antigravity, Copilot), LLM frameworks, and automated scripts.\n\n### 1. Native Model Context Protocol (MCP) Server (`--mcp`)\n\n`out-url` includes a native, zero-dependency **Model Context Protocol (MCP)** server over standard I/O (stdio). This connects **Claude Desktop**, **Cursor**, **Zed**, and other MCP-compatible assistants directly to your desktop browser with zero extra configuration or heavy dependencies.\n\n#### Claude Desktop Configuration\nAdd to your `claude_desktop_config.json`:\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"out-url\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"out-url\", \"--mcp\"]\n    }\n  }\n}\n```\n\n#### Cursor Configuration\nAdd to `.cursor/mcp.json` in your workspace or global settings:\n\n```json\n{\n  \"mcpServers\": {\n    \"out-url\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"out-url\", \"--mcp\"]\n    }\n  }\n}\n```\n\n#### Exposed MCP Tool\n- **`open_in_browser`**: Opens a URL, local file, or directory in the desktop browser.\n  - `url` *(string, required)*: Target URL or path (e.g. `https://github.com/azhar22k`, `./coverage/index.html`).\n  - `app` *(string, optional)*: Target browser alias (`chrome`, `firefox`, `edge`, `safari`, `brave`).\n  - `incognito` *(boolean, optional)*: Private browsing mode.\n  - `browserArgs` *(string, optional)*: Custom flags (e.g. `--remote-debugging-port=9222`).\n  - `validate` *(boolean, optional)*: Automatically sanitize against dangerous protocols before launching.\n\n---\n\n### 2. Built-in LLM Function Calling Schemas (`--schema`)\n\nDrop pre-configured tool schemas into **OpenAI**, **Anthropic Claude**, **Google Gemini**, and **Vercel AI SDK** with zero boilerplate:\n\n#### CLI Schema Inspection\n```bash\n# OpenAI / standard JSON Schema format\nnpx out-url --schema\n\n# Anthropic Claude format\nnpx out-url --schema=anthropic\n\n# Google Gemini format\nnpx out-url --schema=gemini\n```\n\n#### In Node.js / TypeScript Agents\n```javascript\nconst { open, toolDefinition, getToolDefinition } = require('out-url');\n\n// 1. OpenAI Function Calling\nconst completion = await openai.chat.completions.create({\n  model: 'gpt-4o',\n  messages: [{ role: 'user', content: 'Open https://github.com/azhar22k in Chrome' }],\n  tools: [toolDefinition],\n});\n\n// 2. Anthropic Claude Tools\nconst claudeMsg = await anthropic.messages.create({\n  model: 'claude-3-5-sonnet-20241022',\n  messages: [{ role: 'user', content: 'Open https://github.com/azhar22k' }],\n  tools: [getToolDefinition({ format: 'anthropic' })],\n});\n\n// 3. Google Gemini Function Declarations\nconst geminiModel = genAI.getGenerativeModel({\n  model: 'gemini-1.5-pro',\n  tools: [{ functionDeclarations: [getToolDefinition({ format: 'gemini' })] }],\n});\n```\n\n---\n\n### 3. Machine-Readable JSON Output (`--json`)\n\nAgents and scripts can execute `out-url` and inspect process IDs and execution status directly:\n\n```bash\nnpx out-url https://github.com/azhar22k --json\n```\n\nOutput:\n```json\n{\n  \"status\": \"success\",\n  \"target\": \"https://github.com/azhar22k\",\n  \"resolvedTarget\": \"https://github.com/azhar22k\",\n  \"pid\": 58312,\n  \"platform\": \"darwin\"\n}\n```\n\n---\n\n## 🌐 Supported Platforms\n\n`out-url` seamlessly bridges operating system differences under the hood:\n\n| Platform | Underlying Mechanism | Special Features |\n|---|---|---|\n| **macOS** | `open` | Supports browser aliases, incognito, `-W` wait, and `-n` flag injection |\n| **Windows** | `cmd.exe /c start \"\"` | Sanitizes special `&`, `^`, `%` characters, window title handling |\n| **WSL (Windows Subsystem for Linux)** | Windows host bridge (`cmd.exe`) | Automatically detected; opens URLs in the Windows desktop browser |\n| **Linux** | `xdg-open` / browser binary | Desktop environment detection; headless fallback |\n| **Android (Termux)** | `termux-open-url` | Native Termux intent launcher |\n\n---\n\n## 🔄 Releases & Versioning\n\nThis repository follows [Conventional Commits](https://www.conventionalcommits.org/) and uses [Google Release Please](https://github.com/googleapis/release-please) for automated semantic versioning and package publishing.\n\n- **Commit Types**:\n  - `fix:` bumps the **patch** version (e.g. `1.2.2` &rarr; `1.2.3`).\n  - `feat:` bumps the **minor** version (e.g. `1.2.2` &rarr; `1.3.0`).\n  - `BREAKING CHANGE:` or `!` (e.g. `feat!:`) bumps the **major** version (e.g. `1.2.2` &rarr; `2.0.0`).\n- **Automated Flow**:\n  1. Merging conventional commits to `main` creates or updates a Release PR with version bumps and changelog updates.\n  2. Merging the Release PR tags the commit and publishes a GitHub Release.\n  3. The GitHub Release triggers the automated NPM workflow to publish the new package version to NPM.\n\n---\n\n## 📄 License\n\nMIT © [Azhar Khan](https://github.com/azhar22k)\n","readmeFilename":"README.md"}