{"_id":"@cypress/unique-selector","_rev":"30-c627d04499c2526b18e88caba7dfcb96","name":"@cypress/unique-selector","dist-tags":{"latest":"2.2.0"},"versions":{"0.3.7":{"name":"@cypress/unique-selector","version":"0.3.7","keywords":["dom","html","css","selector","event"],"author":{"name":"Eric Clemmons","email":"eric@smarterspam.com"},"license":"MIT","_id":"@cypress/unique-selector@0.3.7","maintainers":[{"name":"chrisbreiding","email":"chris@chrisbreiding.com"}],"contributors":[{"name":"Avraam Mavridis","email":"avr.mav@gmail.com"}],"homepage":"https://github.com/ericclemmons/unique-selector#readme","bugs":{"url":"https://github.com/ericclemmons/unique-selector/issues"},"dist":{"shasum":"564f3caea4889f0eb1f793db4c92003009b088c6","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-0.3.7.tgz","integrity":"sha512-JYTvZMwCE1MJaI0T8a2cdQ9gtgqibU21JAlw0u4VptwHY8bG2ZhdTkoTv/4yKuCxDxRHDTMLkiSBMP5WsJFyKQ==","signatures":[{"sig":"MEUCIQDw1OOEqK/aaTRikqMavfC9/xrEmb19PYttLMnsHhlhawIgeSpb7ra7LPyCOPnRz7Xr8afceVbecp2nw80WBYBo/50=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/index.js","_from":".","watch":{"src/**/*.js":["compile"]},"_shasum":"564f3caea4889f0eb1f793db4c92003009b088c6","gitHead":"8b783c616bd817b8a102be255ffa9830133e46ac","scripts":{"test":"npm run compile && mocha --ignore-leaks --compilers js:babel-register","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublish":"npm run compile"},"_npmUser":{"name":"chrisbreiding","email":"chris@chrisbreiding.com"},"repository":{"url":"git://github.com/ericclemmons/unique-selector.git","type":"git"},"_npmVersion":"3.10.3","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"6.5.0","dependencies":{"css.escape":"^1.5.1"},"devDependencies":{"chai":"^3.5.0","jsdom":"^8.3.0","mocha":"~1.7.4","eslint":"^2.6.0","jquery":"^2.2.3","babel-cli":"^6.1.18","component":"~0.10.1","babel-core":"^6.1.18","mocha-jsdom":"^1.1.0","babel-register":"^6.3.13","mocha-phantomjs":"~1.1.1","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^4.2.3","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^6.2.0","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector-0.3.7.tgz_1513200138084_0.09017619886435568","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@cypress/unique-selector","version":"0.4.0","keywords":["dom","html","css","selector","event"],"author":{"name":"Eric Clemmons","email":"eric@smarterspam.com"},"license":"MIT","_id":"@cypress/unique-selector@0.4.0","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},{"name":"brian-mann","email":"brian.mann86@gmail.com"},{"name":"chrisbreiding","email":"chris@chrisbreiding.com"},{"name":"jennifer-shehane","email":"shehane.jennifer@gmail.com"}],"contributors":[{"name":"Avraam Mavridis","email":"avr.mav@gmail.com"}],"homepage":"https://github.com/ericclemmons/unique-selector#readme","bugs":{"url":"https://github.com/ericclemmons/unique-selector/issues"},"dist":{"shasum":"e236c8e3b02c4946ded4a0cb99def791765f7d4b","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-0.4.0.tgz","fileCount":31,"integrity":"sha512-hMiMSFJnI0tn/+gQJ5IFFgKOyAesylY+IiYQPqJED5sTNAvZFIsCSkBhF7EFL3G4hUdisuT/FioA+8sgb+Symw==","signatures":[{"sig":"MEYCIQCjWj7TwPSwELIBviwLIbpVDg+9qZaaDCx+6HySieZ/IwIhALLZ65QMkpAE3ziNOMs3waapT3cE4vLVEYcFwYQ725dR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":193797},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"0d6f27b334363582746740c3d4e41cc4936c1a02","scripts":{"test":"npm run compile && mocha --ignore-leaks --compilers js:babel-register","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublish":"npm run compile"},"_npmUser":{"name":"chrisbreiding","email":"chris@chrisbreiding.com"},"repository":{"url":"git://github.com/ericclemmons/unique-selector.git","type":"git"},"_npmVersion":"5.6.0","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"8.2.1","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","jsdom":"^8.3.0","mocha":"~1.7.4","eslint":"^2.6.0","jquery":"^2.2.3","babel-cli":"^6.1.18","component":"~0.10.1","babel-core":"^6.1.18","mocha-jsdom":"^1.1.0","babel-register":"^6.3.13","mocha-phantomjs":"~1.1.1","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^4.2.3","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^6.2.0","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_0.4.0_1519325416479_0.5279063812550926","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@cypress/unique-selector","version":"0.4.1","keywords":["dom","html","css","selector","event"],"author":{"name":"Eric Clemmons","email":"eric@smarterspam.com"},"license":"MIT","_id":"@cypress/unique-selector@0.4.1","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},{"name":"brian-mann","email":"brian.mann86@gmail.com"},{"name":"chrisbreiding","email":"chris@chrisbreiding.com"},{"name":"jennifer-shehane","email":"shehane.jennifer@gmail.com"}],"contributors":[{"name":"Avraam Mavridis","email":"avr.mav@gmail.com"}],"homepage":"https://github.com/ericclemmons/unique-selector#readme","bugs":{"url":"https://github.com/ericclemmons/unique-selector/issues"},"dist":{"shasum":"7c3c993bd3fd663a43329b78e0f587ded670ece8","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-0.4.1.tgz","fileCount":32,"integrity":"sha512-l2aYwyIvqB2wm9GbvPot7+7vPo6CZ7YAM+wjSLnQRRt+m8VDYiLlDRONpXK48akWViaHSCGQ/Ge9ZHHatb+u1g==","signatures":[{"sig":"MEQCIBdnuASpiSW1Azwppcpnr0GckZxvKjwo0RAiAwXbW1qGAiBzHjYiKKauPLkpJyG5zfn9LUeteA1g50uPPZlDxqahcw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192287},"main":"./lib/index.js","_from":".","watch":{"src/**/*.js":["compile"]},"_shasum":"7c3c993bd3fd663a43329b78e0f587ded670ece8","gitHead":"16714df99bcc9595b9c0a50216d61a5d39e24738","scripts":{"test":"npm run compile && mocha --ignore-leaks --compilers js:babel-register","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublish":"npm run compile"},"_npmUser":{"name":"chrisbreiding","email":"chris@chrisbreiding.com"},"repository":{"url":"git://github.com/ericclemmons/unique-selector.git","type":"git"},"_npmVersion":"3.10.3","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"6.5.0","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","jsdom":"^8.3.0","mocha":"~1.7.4","eslint":"^2.6.0","jquery":"^2.2.3","babel-cli":"^6.1.18","component":"~0.10.1","babel-core":"^6.1.18","mocha-jsdom":"^1.1.0","babel-register":"^6.3.13","mocha-phantomjs":"~1.1.1","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^4.2.3","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^6.2.0","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_0.4.1_1519658807448_0.4460661843107985","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"@cypress/unique-selector","version":"0.4.2","keywords":["dom","html","css","selector","event"],"author":{"name":"Eric Clemmons","email":"eric@smarterspam.com"},"license":"MIT","_id":"@cypress/unique-selector@0.4.2","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},{"name":"brian-mann","email":"brian.mann86@gmail.com"},{"name":"chrisbreiding","email":"chris@chrisbreiding.com"},{"name":"jennifer-shehane","email":"shehane.jennifer@gmail.com"}],"contributors":[{"name":"Avraam Mavridis","email":"avr.mav@gmail.com"}],"homepage":"https://github.com/ericclemmons/unique-selector#readme","bugs":{"url":"https://github.com/ericclemmons/unique-selector/issues"},"dist":{"shasum":"ac4f12d2a0306e9d8ac1d49a12ad40dfbf2f1aeb","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-0.4.2.tgz","fileCount":29,"integrity":"sha512-eTzoodaUESR8lAJkgvTVnF9bs7M1P4aiDsH4jbywcszb3IjJRLLvrMRZp7VDWID33to79EiqyfOudOzXXpuJjQ==","signatures":[{"sig":"MEYCIQCtpAkB6DAur1lOTfEPG4TqfNWAoM7yawEsEy0YvCisaQIhAJs8RIvaibrXNnhyfYdDMUznx+MmFq7KmJm+HblHBfYF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189042},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"227a544ab92ca3ef646e0c3cad8c8cf66b59cf3f","scripts":{"test":"npm run compile && mocha --ignore-leaks --compilers js:babel-register","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublish":"npm run compile"},"_npmUser":{"name":"brian-mann","email":"brian.mann86@gmail.com"},"repository":{"url":"git://github.com/ericclemmons/unique-selector.git","type":"git"},"_npmVersion":"5.4.0","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"8.2.1","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","jsdom":"^8.3.0","mocha":"~1.7.4","eslint":"^2.6.0","jquery":"^2.2.3","babel-cli":"^6.1.18","component":"~0.10.1","babel-core":"^6.1.18","mocha-jsdom":"^1.1.0","babel-register":"^6.3.13","mocha-phantomjs":"~1.1.1","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^4.2.3","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^6.2.0","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_0.4.2_1519887210017_0.6807961592923206","host":"s3://npm-registry-packages"}},"0.4.3":{"name":"@cypress/unique-selector","version":"0.4.3","keywords":["dom","html","css","selector","event"],"author":{"name":"Eric Clemmons","email":"eric@smarterspam.com"},"license":"MIT","_id":"@cypress/unique-selector@0.4.3","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"contributors":[{"name":"Avraam Mavridis","email":"avr.mav@gmail.com"}],"homepage":"https://github.com/ericclemmons/unique-selector#readme","bugs":{"url":"https://github.com/ericclemmons/unique-selector/issues"},"dist":{"shasum":"ec568a7095e5bdd05ee48a238c7e44dcd118aa2f","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-0.4.3.tgz","fileCount":53,"integrity":"sha512-pniFEbXB+Pesyc5e0r0jfgrLpbSNNmmXmo3XLibdcQBKWcXM5eUEkF45AlDlBQTRmxPOxHvm+D4CxW82wrXlmw==","signatures":[{"sig":"MEYCIQCNkOZJcGK1ZydtKPTldFLCQ71lmUjVKxAmrkdzvx7LJwIhAO1uEuD50M45xvLBoZAKEHSyCyiw195ZwysTyxVZ7Ev1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":816328,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhk8yxCRA9TVsSAnZWagAAp1MQAJoGuolVyQpYYXEGtuK/\nt+EikrXLDb0pUowM+AxQ9r0jNWd8m9Tv22fw2wgaxmBQEjdwUG2kYpMLoR70\ntrd3++lqdfC33c8rCTFoigcEd8EKi3xz9HvvxfVsMLc68pBe0QpdA9NRY8nM\nnnKXN4SPRm7a6MeRH95eG1aR1jlM5zjrOhh5CEsK4pRm2OjJ3dJOR7AC3VO5\nZV0Fgzv/gRMxfAUQx1vwCiLfpccnv0NBOoo7daLOfO2fERZ7e5uhqN/i2PzY\nSI5l9On1SRgih+WD/9GrI2CouzABjpXej06ESN9q6dwKRXYiFBKXrhkxbrbB\nHEt7bekSdi+atWSLzHToVvjhquqbUW3pb76W16EoXOVG2PXhGbSCtVlLqr44\n7fSQ611AbiNQZHKjlhT+v4c1Fs8WFfTVyoYfF6nWg8YRY+NFvuGJmSLY8NCm\nttY0KZVEEUg7BgX/68Xf4ptQtByJ8ox9QM8J47B8/8khT19CTH/SI4ew+FYX\na57BmC5q/9ZE1RS8gC3XjEAhDNBJdONTHrG8zMjPeNVHsgwVuuYUkJ4DmrQo\nALykn4b4VivLXmqO5nIJmz/sseYiX4GCPSTAa4qhbX4PRdAvwXGUNX2YqJEN\noy7DMTIIezaqM4n/D6qmMFotlaC6w1TTaLH2RYTLN8BXtzsyv9m+m3iEC3eo\n2d6S\r\n=Wqx0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"5b3ab78c87fceac10fb66a4222e2d98894283137","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublish":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/ericclemmons/unique-selector.git","type":"git"},"_npmVersion":"8.1.0","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"16.13.0","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_0.4.3_1637076145616_0.3666550837549625","host":"s3://npm-registry-packages"}},"0.4.4":{"name":"@cypress/unique-selector","version":"0.4.4","keywords":["dom","html","css","selector","event"],"author":{"name":"Eric Clemmons","email":"eric@smarterspam.com"},"license":"MIT","_id":"@cypress/unique-selector@0.4.4","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"contributors":[{"name":"Avraam Mavridis","email":"avr.mav@gmail.com"}],"homepage":"https://github.com/ericclemmons/unique-selector#readme","bugs":{"url":"https://github.com/ericclemmons/unique-selector/issues"},"dist":{"shasum":"5e14be46ba5d7a4dad8eda07c0fd431a99227d83","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-0.4.4.tgz","fileCount":13,"integrity":"sha512-hAvSShXUzIRpYDJNIC/OoQA/8stGcYGG2surkY/pMVElqWmAcfccjOWYbuii/ktP8zqUcPzxWKWCuFauJYWEfQ==","signatures":[{"sig":"MEQCIEioEjttuZhGoTVPcOHpOzNvYq8GdxFe5zQjwA5CFpUjAiB9UuZS39iONRa0xIKks+2HTIxcXDSHZotS5+DhDQTd1w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlSVsCRA9TVsSAnZWagAA3SsQAJkPlq1cU279tsWqI+wu\nYTWETJu0JGaygk095r9sTYxPjNNuragvjVwAxwRaEzaPjPniRwwbYkrXTD0x\nCqr5w60SlX+/8o6r++FdcWEGuKV9jNDLcO4CLeQy/YYMBSn9V1nhMa9N966s\nL7yNv6acRqumTousVi5TTE6qygrxuxCjtsLrw9ME5oRjBeTJySZE4Q4GkSKO\nEtIoL2AM7BayxKHsgS5mbVDK8a9OBwg4D+CsddfkYE9n04yYnLbC+F1dJfga\neoKVGlKHDnlKecmH5LUKQsMx+z25P/fNOIwk6ByVjCzVZDrQpZCERcmpcTYd\nCtx9IykuaHuYGBDptchpTbSSrrHXU/rTIgmDAlJF+qqGnbzPT50GLQ+PpPSW\nBfVGWYsdNaEg0epVjiXdGeq8NRnyMTf0qiNjgwPDK7PrhOp/bLGNVpy7ULMi\n8M2O/h5Jhk3oT1NBpRkyb78bCmPSYioobGXz/V51hhD9J4h0fplUvE0IGmiO\n9crEENsLdMWddGjt265SZ4J6xvVO946Pevgk3TJbyKQM+CACEU0T0jkxzCKV\nRJGYObPARnaqS/lNyiSpmXYtZAwYqHS5ajS5YiHBtDfeScNak0xiiYlum1wS\nWUAVtJg+BgvYRTgZrFZDyd1i+Jxbpon4QIQnNrO/LRsoDgB3eavt76Wt84w3\nwRNI\r\n=SJ3I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"f1c8c1e2d0e7c2e75dda8114bb8ec1a427ddf474","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/ericclemmons/unique-selector.git","type":"git"},"_npmVersion":"6.14.11","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"12.18.3","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_0.4.4_1637164396653_0.17766571488540883","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@cypress/unique-selector","version":"0.0.5","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@0.0.5","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"1ce7889dd9ffe47e8b39d31da3a6b7e9a0c9c93d","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-0.0.5.tgz","fileCount":13,"integrity":"sha512-WS1M1arFAcl2v+A4OHT4ZPAXQgoQuVwM4quyZZQUmJsshXZqbTFyT918WQujC6yikOddZgiVGk46CIBGoCMnow==","signatures":[{"sig":"MEUCIQDuZ1hTiDQQkBzYa288Q2eXazwbPzTPGt0bhGuahOjRmQIgGU0jjcSbHmo9N9fEf9cAutD9nwnjWKRYRgJb7aLq7U0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17814},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"fade65d56b2cfa1721b094b940f16326eb5d030d","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.2.3","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.10.0","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_0.0.5_1703094817270_0.5059325635336709","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@cypress/unique-selector","version":"1.0.0","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@1.0.0","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"3d28d3a1973c244cbbf18889bcb661e361e89cf8","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-1.0.0.tgz","fileCount":14,"integrity":"sha512-ZWg9L8vHOGWWEXr/XyLRUuu+fG3oic3sMQ6667ohl25GOM8gr5Ervl+SiquPwIqned/iSZ9APARfvbpobD5FyQ==","signatures":[{"sig":"MEUCIHgTpgitLGWn4fIxZJoSqMfp50YHy0wabcsPioNOkJjpAiEAn3ebNrGlUxUJrS0G6Fz9k+My3gQufg1dT+iELloJvfw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18297},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"cdf11163b8b5263502e19865a10e603b22e31bec","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.2.3","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.10.0","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_1.0.0_1705512419532_0.8128908331934876","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@cypress/unique-selector","version":"1.1.0","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@1.1.0","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"3bed284cd5cd58827516c4360f45b513fc167f1f","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-1.1.0.tgz","fileCount":14,"integrity":"sha512-tC6prMm6/alxoZLwjgyr2M1/QnuleWYvJkd9tml47QjLQgVoF5fLygeupmGv1p1vU0N42XGFM4lzpZqG0EbOHw==","signatures":[{"sig":"MEUCIC5wGO552pgXgl5VYeVwG2oHXySBLUtIOPA/EcBgpOcEAiEApzKsM3FDkRUVrQCTb0X7uSz6o49apWCjV58piQcBg64=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18711},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"993a2b984844d5e952de61cf5d4f684884149bff","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.2.4","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.11.0","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_1.1.0_1707168613243_0.20428486392274436","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@cypress/unique-selector","version":"1.2.0","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@1.2.0","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"e2721f81c27bf8bd0c448f9073b11bd0b9e104a2","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-1.2.0.tgz","fileCount":14,"integrity":"sha512-rDRzcN/5xYdWWBGY4A3krEpkrpdMB5AZCKHNiVNO6upqB8QtRInPo1MGLTf3+uWIO3JEBO7rES+G/bb84uO6Sw==","signatures":[{"sig":"MEYCIQD8Zdi+Vr/W0jI5OXLjq8bcHvSVGqK0/9/NoYYJ5N2uaAIhAMZFv6XRiegdGEaXlG5oPs2CYUKSxFm7rYnwjTOXAgdH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22314},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"74c90367ddbe55a02bffa9955e17bcab09a13616","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.5.0","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.12.0","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_1.2.0_1712345473004_0.5488359599220229","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@cypress/unique-selector","version":"2.0.0","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@2.0.0","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"e29f61fa1682c6717c77b3e5ebd36619cf062e70","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-2.0.0.tgz","fileCount":14,"integrity":"sha512-Q2txcQHL5zfjP3/5Ws/PQ51et0RHQ/GjTY3P7SRViI8H8kW+yY5flDOIUJi2Vja8qMuM371u9SMmP1+dU81d1A==","signatures":[{"sig":"MEUCIB4dFRI9mT37dfzjEr7E0pyfMyntcX5NPngmwTYaTmOkAiEA5qPwYgOKCBW7y4jXE1aPufCLKvP8FppG3ms9ualLKTs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22526},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"5b5afe4d094e8b51ce86539a44e7a63565e7da86","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.5.0","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.12.2","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_2.0.0_1714484452161_0.13114934162262748","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@cypress/unique-selector","version":"2.0.1","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@2.0.1","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"7e890a18b71e71840933ecdeab6a03b12d0ddc2d","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-2.0.1.tgz","fileCount":14,"integrity":"sha512-AaB6evqqq8TuhKgkMg4H0vMcsRXANSKlY91O7eHdHx642dHVAjMwA9c9ctvajhgGmy66cCwqCD7ZF68PsVYWIw==","signatures":[{"sig":"MEYCIQDZffcZymPZnEGGN7Al0abZbQsuDLh3H53DzhdPhemxQwIhAJfv4/nA3OmQPJf4Q7UA4GkvMnCmWIwt85X+p8d01MI8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22642},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"1111cc6680392a700ff23cbda35852b40f9e2ff7","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.8.2","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.16.0","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_2.0.1_1722866774745_0.8605268409708433","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@cypress/unique-selector","version":"2.1.0","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@2.1.0","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"6823dd568a9c740afbc473a77427af6afdc3c7ec","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-2.1.0.tgz","fileCount":14,"integrity":"sha512-Y95b/y5hPTEuROR9LhHP+HN2pVSgSC/Z9sUlAy5HWdDYvFE8kLl7YM44nseaBPpwR1CxUWYV74PEH/ptrNoTig==","signatures":[{"sig":"MEUCICBN5Xxpj4f+uQat3Aey/lXzAKI1nyYPexxp99DT5gF0AiEA+xYQ7TxPpr0XWFRyHU15cES28uUeag8i1tSIcm6PVTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23776},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"2d5844ceba72d15a0354dbf7a9f67e1d096c583e","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.9.2","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.19.0","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_2.1.0_1743703496322_0.5366795877963053","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@cypress/unique-selector","version":"2.1.1","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@2.1.1","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"e5afa80705eb48735f0ecbb5d148cded071d27bf","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-2.1.1.tgz","fileCount":14,"integrity":"sha512-uMUiPfwWv/eG/ubSzvIdc/7C+RKG+r0QH7/qot61oEdYvBEabaZEQuugxXGzU5t2tbjpepU+FNWXBreTRo5MBQ==","signatures":[{"sig":"MEQCIGji/OEEAcAgsXcicxp7u9/OuIyWuHfcBCb70/EVZSaIAiBpoNW0e1ydCg8OgNNxQPsaOYzw1bFvTUx3B4CWQAQQzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24416},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"b970b33e053e64c214046a1247b2f5a6d0be9f29","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.9.2","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.19.1","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^18.0.0","mocha":"~9.1.3","eslint":"^8.0.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.26.1","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^18.2.1","eslint-config-airbnb-lite":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_2.1.1_1747673781405_0.001314749173029206","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@cypress/unique-selector","version":"2.1.2","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@2.1.2","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"f5327186dba19d2118238b0b7734484b4a4f8a93","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-2.1.2.tgz","fileCount":15,"integrity":"sha512-2u75SHGbgFiMpNnp3bLntc1sNSILPUywK1Xh3JKFqL2skCT8BgwiVddh0FJ6yAstbFM927FbnmdXvqrL1wiYtw==","signatures":[{"sig":"MEUCIEsiD1CACWTU9lw93GdSescjzoVOQVUpvyAQeg+maPlkAiEA9FrhKPf8DuX5zBPkVmf4foSj6LzVrhUXcy2ETNlo+uc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28743},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"0d8edc73411d97b81275f873c0e775cad450fc2a","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.9.4","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.19.6","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^27.4.0","mocha":"~9.1.3","eslint":"^8.57.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.37.5","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_2.1.2_1769027866825_0.6131485103856726","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@cypress/unique-selector","version":"2.1.3","keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","_id":"@cypress/unique-selector@2.1.3","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"homepage":"https://github.com/cypress-io/unique-selector#readme","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"dist":{"shasum":"4a8bd9352408a774d12c5424492895b01b7efdd1","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-2.1.3.tgz","fileCount":15,"integrity":"sha512-skhPh75MmVsN0fe3kPYlEHvLwrWHy9rTn/CDsPqpUe+RMW8Ncwtxrf/Pn5N7d4EmfiqdM/qRl4ttUU4T0V5CNw==","signatures":[{"sig":"MEYCIQDtjM9BjEQCbT9GZaLJGPxEL0zIps/jjnd5/FqlnVGnngIhAJBNuSU2nskMlRPqQyMFWOUgfGHTaEX9JLxa8V6XMKT6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28760},"main":"./lib/index.js","watch":{"src/**/*.js":["compile"]},"gitHead":"98fbb845c3313d0ffa00cd2254b7c278329c215a","scripts":{"test":"npm run compile && mocha --ignore-leaks","build":"npm run compile","watch":"npm-scripts-watcher","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile"},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"repository":{"url":"git://github.com/cypress-io/unique-selector.git","type":"git"},"_npmVersion":"10.9.4","description":"Given a DOM node, return a unique CSS selector matching only that element","directories":{"test":"test"},"jsnext:main":"./src/index.js","_nodeVersion":"20.19.6","dependencies":{"css.escape":"^1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","jsdom":"^27.4.0","mocha":"~9.1.3","eslint":"^8.57.1","jquery":"^3.6.0","babel-cli":"^6.26.0","component":"~1.1.0","babel-core":"^6.26.3","mocha-jsdom":"^2.0.0","babel-register":"^6.26.0","mocha-phantomjs":"~4.1.0","babel-preset-latest":"^6.24.1","eslint-plugin-react":"^7.37.5","npm-scripts-watcher":"^1.0.2","eslint-config-airbnb":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/unique-selector_2.1.3_1769103233950_0.12150583156438355","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@cypress/unique-selector","version":"2.2.0","description":"Given a DOM node, return a unique CSS selector matching only that element","main":"./lib/index.js","jsnext:main":"./src/index.js","directories":{"test":"test"},"scripts":{"build":"npm run compile","test":"npm run compile && mocha --ignore-leaks","compile":"babel -d lib/ src/","prepublishOnly":"npm run compile","watch":"npm-scripts-watcher"},"watch":{"src/**/*.js":["compile"]},"repository":{"type":"git","url":"git://github.com/cypress-io/unique-selector.git"},"keywords":["dom","html","css","selector","event"],"author":{"name":"Cypress"},"license":"MIT","devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-preset-latest":"^6.24.1","babel-register":"^6.26.0","chai":"^4.3.4","component":"~1.1.0","eslint":"^8.57.1","eslint-config-airbnb":"^19.0.0","eslint-plugin-react":"^7.37.5","jquery":"^3.6.0","jsdom":"^27.4.0","mocha":"~9.1.3","mocha-jsdom":"^2.0.0","mocha-phantomjs":"~4.1.0","npm-scripts-watcher":"^1.0.2"},"dependencies":{"css.escape":"^1.5.1"},"_id":"@cypress/unique-selector@2.2.0","gitHead":"3fcc7ceeb6f41b4efb4dcc32584bbdb8e129c7a4","bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"homepage":"https://github.com/cypress-io/unique-selector#readme","_nodeVersion":"20.20.1","_npmVersion":"10.9.7","dist":{"integrity":"sha512-IBTKpr0mByPiIpAhFjcrJnizN1binyO9DM+w9gXgWCMRMs/josLCCoTeWrJ6sH6c3txezYJDXYkCEIxglCKSvw==","shasum":"be3df48c6ae9c92fc0289123a5e073246fac56a8","tarball":"https://registry.npmjs.org/@cypress/unique-selector/-/unique-selector-2.2.0.tgz","fileCount":16,"unpackedSize":40268,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQClLY7pBks8S3T2XA2QGxvAeL7npFcJdRbllKMujENcFwIgM6ZeYu4N2TiT6aCsts26DCUk4olNMARJTixChTlXwUQ="}]},"_npmUser":{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"},"maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/unique-selector_2.2.0_1774621127079_0.6218447553150248"},"_hasShrinkwrap":false}},"time":{"created":"2017-12-13T21:22:19.368Z","modified":"2026-03-27T14:18:47.387Z","0.3.7":"2017-12-13T21:22:19.368Z","0.4.0":"2018-02-22T18:50:16.631Z","0.4.1":"2018-02-26T15:26:47.791Z","0.4.2":"2018-03-01T06:53:30.219Z","0.4.3":"2021-11-16T15:22:25.742Z","0.4.4":"2021-11-17T15:53:16.849Z","0.0.5":"2023-12-20T17:53:37.502Z","1.0.0":"2024-01-17T17:26:59.694Z","1.1.0":"2024-02-05T21:30:13.437Z","1.2.0":"2024-04-05T19:31:13.139Z","2.0.0":"2024-04-30T13:40:52.335Z","2.0.1":"2024-08-05T14:06:14.893Z","2.1.0":"2025-04-03T18:04:56.538Z","2.1.1":"2025-05-19T16:56:21.595Z","2.1.2":"2026-01-21T20:37:46.976Z","2.1.3":"2026-01-22T17:33:54.098Z","2.2.0":"2026-03-27T14:18:47.237Z"},"bugs":{"url":"https://github.com/cypress-io/unique-selector/issues"},"author":{"name":"Cypress"},"license":"MIT","homepage":"https://github.com/cypress-io/unique-selector#readme","keywords":["dom","html","css","selector","event"],"repository":{"type":"git","url":"git://github.com/cypress-io/unique-selector.git"},"description":"Given a DOM node, return a unique CSS selector matching only that element","maintainers":[{"name":"cypress-npm-publisher","email":"cypress-npm-publisher@cypress.io"}],"readme":"# unique-selector\n\nGiven a DOM node, return a unique CSS selector matching only that element.\n\nSelector uniqueness is determined based on the given element's root node. Elements rendered within Shadow DOM will derive a selector unique within the associated ShadowRoot context. Otherwise, a selector unique within an element's owning document will be derived.\n\n## Installation\n\n![NPM Version](https://img.shields.io/npm/v/%40cypress%2Funique-selector)\n\n```bash\nnpm install @cypress/unique-selector\n```\n\n## API\n\n### `unique(element, options)`\n\nGenerates a unique CSS selector for the given DOM element.\n\n#### Parameters\n\n- **`element`** (Element) - The DOM element for which to generate a unique selector\n- **`options`** (Object, optional) - Configuration options for selector generation\n\n#### Options\n\n- **`selectorTypes`** (String[], optional) - Array of selector types to use in order of preference. Default: `['id', 'name', 'class', 'tag', 'nth-child']`\n  \n  Available selector types:\n  - `'id'` - Uses element's ID attribute (e.g., `#myId`)\n  - `'name'` - Uses element's name attribute (e.g., `[name=\"myName\"]`)\n  - `'class'` - Uses element's class attributes (e.g., `.myClass`)\n  - `'tag'` - Uses element's tag name (e.g., `div`, `span`)\n  - `'nth-child'` - Uses nth-child position (e.g., `:nth-child(1)`)\n  - `'attributes'` - Uses all attributes except those in `attributesToIgnore`\n  - `'data-*'` - Uses specific data attributes (e.g., `data-foo`, `data-test-id`)\n  - `'attribute:*'` - Uses specific attributes (e.g., `attribute:role`, `attribute:aria-label`)\n\n- **`attributesToIgnore`** (String[], optional) - Array of attribute names to ignore when generating selectors. Default: `['id', 'class', 'length']`\n\n- **`filter`** (Function, optional) - A filter function to conditionally reject various traits when building selectors.\n  \n  ```javascript\n  function filter(type, key, value) {\n    // type: 'attribute', 'class', 'tag', 'nth-child'\n    // key: attribute name (for attributes), class name (for classes), etc.\n    // value: attribute value, class name, tag name, nth-child position\n    \n    // Return true to allow this trait, false to reject it\n    return true;\n  }\n  ```\n\n- **`selectorCache`** (Map<Element, String>, optional) - Cache to improve performance of repeated selector generation. The caller is responsible for cache invalidation.\n\n- **`isUniqueCache`** (Map<String, Boolean>, optional) - Cache to improve performance of repeated uniqueness checks. The caller is responsible for cache invalidation.\n\n- **`requiredAttributes`** (Object, optional) - Specifies attributes that must appear in the generated selector regardless of whether they are needed for uniqueness. When provided, matching attribute selectors are woven into every element's segment of the `>` chain, and ancestors above the unique chain are prepended using descendant combinators.\n\n  This option takes precedence over `selectorTypes` and `filter` for the attributes it names — if an element has a required attribute, its `[attr=\"value\"]` selector will appear in the output even if `filter` would reject that attribute for uniqueness purposes, and even if the attribute is not listed in `selectorTypes`.\n\n  The `requiredAttributes` object has the following shape:\n\n  - **`attributeNames`** (String[]) - The attribute names to inject into the selector (e.g., `['data-component', 'data-cy']`). Exact attribute names only — not patterns or regexes. Names are used as-provided in the generated selector with no internal normalization, so the casing you supply is the casing that appears in the output. When an attribute in `attributeNames` is already present in the base selector (from `selectorTypes`), dedup detection is case-insensitive, so duplicate injection is correctly suppressed regardless of case differences.\n  - **`filter`** (Function, optional) - A filter function with the same signature as the top-level `filter` option, applied independently to control which attribute _values_ are allowed to be injected. Return `false` to skip injection for a given element. This filter is separate from the top-level `filter` and serves a different purpose: the top-level `filter` controls which traits are eligible for building a _unique_ selector, while `requiredAttributes.filter` controls which attribute values are eligible for _injection_. The `key` argument passed to this function will match the casing of the name as provided in `attributeNames`.\n  - **`elementCache`** (Map<Element, (string|null)[]>, optional) - Cache for per-element required attribute selectors. Each cached entry is an array of individual selector strings parallel to `attributeNames` (null for attributes not present or filtered out). The caller is responsible for cache invalidation.\n\n  ```javascript\n  unique(element, {\n    requiredAttributes: {\n      attributeNames: ['data-component', 'data-cy'],\n      filter: (type, key, value) => {\n        // Exclude auto-generated component names from injection\n        if (type === 'attribute' && key === 'data-component') {\n          return !value.startsWith('jss-');\n        }\n        return true;\n      },\n      elementCache: new Map(),\n    }\n  });\n  ```\n\n#### Returns\n\n- **String** - A unique CSS selector for the element, or `null` if no unique selector can be generated\n\n## Usage Examples\n\n### Basic Usage\n\n```javascript\nimport unique from '@cypress/unique-selector';\n\n// Get a unique selector for an element\nconst element = document.querySelector('.my-button');\nconst selector = unique(element);\n// Returns: '#my-button' or '.my-button' or 'button' etc.\n```\n\n### Custom Selector Types\n\n```javascript\n// Use only ID and class selectors\nconst selector = unique(element, {\n    selectorTypes: ['id', 'class']\n});\n\n// Use only data attributes\nconst selector = unique(element, {\n    selectorTypes: ['data-test-id', 'data-cy']\n});\n\n// Use specific attributes\nconst selector = unique(element, {\n    selectorTypes: ['attribute:role', 'attribute:aria-label']\n});\n```\n\n### Filtering Selectors\n\n```javascript\n// Filter out certain IDs\nconst selector = unique(element, {\n    filter: (type, key, value) => {\n        if (type === 'attribute' && key === 'id') {\n            // Only allow IDs that contain 'test'\n            return value.includes('test');\n        }\n        return true;\n    }\n});\n\n// Filter out certain classes\nconst selector = unique(element, {\n    filter: (type, key, value) => {\n        if (type === 'class') {\n            // Only allow classes that start with 'btn-'\n            return value.startsWith('btn-');\n        }\n        return true;\n    }\n});\n```\n\n### Required Attributes\n\nUse `requiredAttributes` when you want specific attributes to always appear in the generated selector, regardless of whether they contribute to uniqueness. This is useful when your application uses semantic component attributes (e.g., `data-component`, `data-cy`) that you want reflected in every selector for readability or stability.\n\n```javascript\n// Always include data-component in the selector, even when an ID alone would be unique\nconst selector = unique(element, {\n    requiredAttributes: {\n        attributeNames: ['data-component']\n    }\n});\n// '#submit-button' becomes '#submit-button[data-component=\"PrimaryButton\"]'\n// Ancestors with data-component are prepended with descendant combinators:\n// '[data-component=\"Form\"] #submit-button[data-component=\"PrimaryButton\"]'\n```\n\nRequired attributes take precedence over `selectorTypes` and `filter`. If an element has a required attribute, it will be injected into the selector even if:\n- The attribute is not listed in `selectorTypes`\n- The top-level `filter` would reject that attribute for uniqueness purposes\n\n```javascript\n// The top-level filter rejects data-component for uniqueness building,\n// but requiredAttributes.filter allows it to still be injected.\nconst selector = unique(element, {\n    filter: (type, key) => key !== 'data-component',\n    requiredAttributes: {\n        attributeNames: ['data-component'],\n        // No requiredAttributes.filter — all values are injected\n    }\n});\n// data-component still appears in the output\n```\n\nUse `requiredAttributes.filter` independently to control which attribute _values_ get injected, without affecting how uniqueness is determined:\n\n```javascript\n// Inject data-component only when the value doesn't look auto-generated\nconst selector = unique(element, {\n    requiredAttributes: {\n        attributeNames: ['data-component'],\n        filter: (type, key, value) => {\n            if (type === 'attribute' && key === 'data-component') {\n                return !value.startsWith('jss-');\n            }\n            return true;\n        },\n        elementCache: new Map(), // reuse across calls for performance\n    }\n});\n```\n\nWhen multiple `attributeNames` are specified, each is matched independently on every element:\n\n```javascript\nconst selector = unique(element, {\n    requiredAttributes: {\n        attributeNames: ['data-cy', 'data-region']\n    }\n});\n// '[data-region=\"main\"] [data-cy=\"dashboard\"] .widget[data-cy=\"widget-a\"]'\n```\n\n### Performance Optimization with Caching\n\n```javascript\nconst selectorCache = new Map();\nconst isUniqueCache = new Map();\n\nconst selector = unique(element, {\n    selectorCache,\n    isUniqueCache\n});\n\n// Reuse the same caches for multiple calls\nconst selector2 = unique(anotherElement, {\n    selectorCache,\n    isUniqueCache\n});\n```\n\n### Shadow DOM Support\n\n```javascript\n// Works with Shadow DOM elements\nconst shadowHost = document.querySelector('#shadow-host');\nconst shadowRoot = shadowHost.attachShadow({ mode: 'open' });\nconst shadowElement = shadowRoot.querySelector('.shadow-button');\n\nconst selector = unique(shadowElement);\n// Returns a selector unique within the shadow root context\n```\n\n## Selector Generation Strategy\n\nThe library follows this strategy to generate unique selectors:\n\n1. **Element-level uniqueness**: First tries to find a selector that uniquely identifies the element within its parent\n2. **Parent traversal**: If element-level uniqueness fails, traverses up the DOM tree, building a path of selectors\n3. **Selector type precedence**: Uses the `selectorTypes` array to determine which selector types to try first\n4. **Combination fallback**: For classes and attributes, tries combinations of multiple selectors if single selectors aren't unique\n5. **Nth-child fallback**: Uses nth-child positioning as a last resort\n6. **Required attribute injection**: After the unique `>` chain is determined, any `requiredAttributes` are woven into each element's segment of the chain. Ancestors above the chain that carry a required attribute are prepended as descendant combinators. Required attributes are injected even when they are not needed for uniqueness and even when the top-level `filter` would exclude them from consideration.\n\n## Examples of Generated Selectors\n\n```html\n<!-- Element with ID -->\n<div id=\"header\">Header</div>\n<!-- Selector: #header -->\n\n<!-- Element with unique class -->\n<button class=\"submit-btn\">Submit</button>\n<!-- Selector: .submit-btn -->\n\n<!-- Element with multiple classes -->\n<div class=\"card primary large\">Card</div>\n<!-- Selector: .card.primary.large -->\n\n<!-- Element with data attributes -->\n<div data-test-id=\"user-profile\">Profile</div>\n<!-- Selector: [data-test-id=\"user-profile\"] -->\n\n<!-- Element with custom attributes -->\n<button role=\"button\" aria-label=\"Close\">×</button>\n<!-- Selector: [role=\"button\"] or [aria-label=\"Close\"] -->\n\n<!-- Element requiring nth-child -->\n<div class=\"item\">Item 1</div>\n<div class=\"item\">Item 2</div>\n<!-- Selector: :nth-child(1) or :nth-child(2) -->\n\n<!-- Complex nested element -->\n<div class=\"container\">\n  <div class=\"wrapper\">\n    <span class=\"text\">Hello</span>\n  </div>\n</div>\n<!-- Selector: .container > .wrapper > .text -->\n```\n","readmeFilename":"README.md"}