{"_id":"@aipexstudio/dom-snapshot","_rev":"11-6f7d96df393d93e59c8d22a217410c6e","name":"@aipexstudio/dom-snapshot","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.7":{"name":"@aipexstudio/dom-snapshot","version":"0.0.7","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.7","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"f9b81c09cd9a5ccd131a6350a71a495042945cb9","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.7.tgz","fileCount":15,"integrity":"sha512-zs1GRz1DMOwN75oZqS9vGITVZh4bFJyGq1b5/aiLG1zdatWfERknJKHrgHSc5Fy0VfAQ02RsiS2G2+7Ec4PhBA==","signatures":[{"sig":"MEQCIDcuAeyw5y1jrNDYbzFqTZyKlJcJwPhAbLrz6PMkSHWAAiBZKtWXrcY9Hm4qVOFmm9GJWXLwk3fZMyhydvOtYbDa5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":44837},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.7.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/ddda9828223a0a1bb375471221510ef9/aipexstudio-dom-snapshot-0.0.7.tgz","_integrity":"sha512-zs1GRz1DMOwN75oZqS9vGITVZh4bFJyGq1b5/aiLG1zdatWfERknJKHrgHSc5Fy0VfAQ02RsiS2G2+7Ec4PhBA==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.7_1767797124062_0.3619148973386517","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@aipexstudio/dom-snapshot","version":"0.0.8","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.8","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"06e03fc05fc4c1a5ae8ed76f9776785884ef2d38","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.8.tgz","fileCount":15,"integrity":"sha512-TKS64L65ghMOImI5o1Cx1EGn0FE/viChwxctJGY/oo+pU0NotP1aNcF5emE1RAM2rRw2bD6sNg3c0PLQo2FCaw==","signatures":[{"sig":"MEYCIQCikg2fyZn322Sx3DehucUjGjuvKVjyGefTBMoY+Yq5EQIhAPLgmAbgAas+ZpUROwwX2hv7bRxj3clBDha8AdC6LQEm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":44876},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.8.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/d1b93ead5fe53a7adc11275f1e70094f/aipexstudio-dom-snapshot-0.0.8.tgz","_integrity":"sha512-TKS64L65ghMOImI5o1Cx1EGn0FE/viChwxctJGY/oo+pU0NotP1aNcF5emE1RAM2rRw2bD6sNg3c0PLQo2FCaw==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.8_1767846527026_0.2062342143686493","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@aipexstudio/dom-snapshot","version":"0.0.9","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.9","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"1ddf9142f79604fb684e92abf92de7e101256b33","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.9.tgz","fileCount":15,"integrity":"sha512-iH61JGgEY04l3cths1nCLmp2A5uMNSXU3JBflxyZq0SHySnmY66aC81vDGek5dfWxaASQPhOgg4Q2TkavF9HLQ==","signatures":[{"sig":"MEYCIQDxGPz6K1U1nC3CNl2pTu9he+Xz1q5VK4MTarjD/J4oCwIhANlHRSpqip8SGu3h33dua9cXBaue7daPbpwH9NCu45oQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48743},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.9.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/b0e4d2c4e2ede638c79c7f2f0ab5f1b2/aipexstudio-dom-snapshot-0.0.9.tgz","_integrity":"sha512-iH61JGgEY04l3cths1nCLmp2A5uMNSXU3JBflxyZq0SHySnmY66aC81vDGek5dfWxaASQPhOgg4Q2TkavF9HLQ==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.9_1767851846538_0.17573723856137202","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@aipexstudio/dom-snapshot","version":"0.0.10","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.10","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"b2c5c1abf36a3285d509258b29e10ffbd47b472f","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.10.tgz","fileCount":15,"integrity":"sha512-1d4tIsm/TQ+ZNRySKjhOWK1WDWB9NSiVyZwrAB6lb3UHIlO+qLaYgVupLAf+eb2rYiB3gysW3nUWDpgYXGDk9Q==","signatures":[{"sig":"MEUCIHqOEs9FeNBdsSfkTSdlFNZ3sfPFRd0rD0pAbsyUozRWAiEAhCmZ7wMk3mnU414sa9itDFHO+kxhDPLCxub2sRx7+iU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48729},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.10.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/c2adb9d8c059bc3acb750e5ce0cb160a/aipexstudio-dom-snapshot-0.0.10.tgz","_integrity":"sha512-1d4tIsm/TQ+ZNRySKjhOWK1WDWB9NSiVyZwrAB6lb3UHIlO+qLaYgVupLAf+eb2rYiB3gysW3nUWDpgYXGDk9Q==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.10_1767852807324_0.9151127724277648","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@aipexstudio/dom-snapshot","version":"0.0.11","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.11","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"2690d9813646d8588c63bbeb2d8d859ae6f86e4a","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.11.tgz","fileCount":15,"integrity":"sha512-XCBJfTVv45z8t77wa1GVBbNJcTKPtMb0d1HEfhUzMQNdLHr7uHLf6N6+pabqVLv/ZhVi0aqaYJmhe4koRrTLYg==","signatures":[{"sig":"MEYCIQDSlqNNYgqpIkDFCg+1Qd4c8MltZTtoCC8/gO0XC00RPQIhAOhV4P1W2ibeZwYVuQ/oD6TVOLIkhUZlCdSWhbaVJqj9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50313},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.11.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/83ee6d612b6634fa88e08509dca66b44/aipexstudio-dom-snapshot-0.0.11.tgz","_integrity":"sha512-XCBJfTVv45z8t77wa1GVBbNJcTKPtMb0d1HEfhUzMQNdLHr7uHLf6N6+pabqVLv/ZhVi0aqaYJmhe4koRrTLYg==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.11_1767856872733_0.02001028808368499","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@aipexstudio/dom-snapshot","version":"0.0.12","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.12","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"220592d48898f6363dc9f453aaad157ca762cd97","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.12.tgz","fileCount":15,"integrity":"sha512-yewK0DuC1G14vJdRP1OvXJBfSvqR9gqF4OzpkuQkLNs8TZogPaX6V4mX12fFKrM6Vgx1bY70kR/QNq5RZ8cOVQ==","signatures":[{"sig":"MEUCIG1k8btl034Eo0FYcm9Vz2AA+t7k0GHbPZ88gZxDuraOAiEAuIe4Ec2prdosRBdrI1vl702OXL8z/U+BkuWB7YGYRuw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50644},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.12.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/c779b4d884847f7290767980273784ab/aipexstudio-dom-snapshot-0.0.12.tgz","_integrity":"sha512-yewK0DuC1G14vJdRP1OvXJBfSvqR9gqF4OzpkuQkLNs8TZogPaX6V4mX12fFKrM6Vgx1bY70kR/QNq5RZ8cOVQ==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.12_1767860270329_0.3223689905657414","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@aipexstudio/dom-snapshot","version":"0.0.13","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.13","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"31e6d563ed1a82d3a364b6cef568f07ddb2ac49c","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.13.tgz","fileCount":15,"integrity":"sha512-i2QL9An/AL679yGnOzxLA2xzpnvNXnuvHpUkuvTjANxhuqICcup/4xCzN3y+GdsP7aSP7oiWAVCarIbY4s5ZCQ==","signatures":[{"sig":"MEYCIQCcBXuYm7YsI3EKyu0EsWv0qmSbVzirAtOINEpyMYLk9wIhAPVwfHe9PnOkzXo0P8c1oRJNK7LDAA7X16Mb0hBZjfdh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51541},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.13.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/0e6973b55aac1067f942062e18221c5d/aipexstudio-dom-snapshot-0.0.13.tgz","_integrity":"sha512-i2QL9An/AL679yGnOzxLA2xzpnvNXnuvHpUkuvTjANxhuqICcup/4xCzN3y+GdsP7aSP7oiWAVCarIbY4s5ZCQ==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.13_1767862467497_0.8235657472731004","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@aipexstudio/dom-snapshot","version":"0.0.14","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.14","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"e39011fff94aa0c2be3eab2581622b2104115b0b","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.14.tgz","fileCount":15,"integrity":"sha512-FA1d6lMoHt54AUBK7abljaX0b+0BuIqhVapsiW5QdWj1lNRHVs1+ciU5FLPu+RClYKgGMEY7bZkIgYnW9UmYvg==","signatures":[{"sig":"MEQCIHlQfziS5A3YsNBCz1NK9qh2CGrVuPURL6f1ob1j0ZjeAiAPBmQJy9tmcpHTe+uIgPdLdO9eGGkJqlDhhSKy/j06HQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52145},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.14.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/8c44d15fe4e1f0a2853a8dffd0337304/aipexstudio-dom-snapshot-0.0.14.tgz","_integrity":"sha512-FA1d6lMoHt54AUBK7abljaX0b+0BuIqhVapsiW5QdWj1lNRHVs1+ciU5FLPu+RClYKgGMEY7bZkIgYnW9UmYvg==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.14_1767873351501_0.16249208114139901","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@aipexstudio/dom-snapshot","version":"0.0.15","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.15","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"4fd2925205123bc40c46f007d2996c026fc24db7","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.15.tgz","fileCount":15,"integrity":"sha512-vnh3WXHokUifis7RBCpvKUwgnQbJpmA/6g8lAtjDU2gpAc6jtnhZ3qBjZ7d3AdXWxYa4oxWJAES3Imtg4Cbb/Q==","signatures":[{"sig":"MEUCIQCsQQO5IvgjUcOpiOVf1qRo2/UV3sun2cbTJjwXgLsKgQIgeBq6Ia2duxwliWV+jA0KJcuxP0ub61sPKPegagpQin0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53383},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.15.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/e58d12975ad50000c96e4a260c2e7293/aipexstudio-dom-snapshot-0.0.15.tgz","_integrity":"sha512-vnh3WXHokUifis7RBCpvKUwgnQbJpmA/6g8lAtjDU2gpAc6jtnhZ3qBjZ7d3AdXWxYa4oxWJAES3Imtg4Cbb/Q==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.15_1768239352161_0.3891021141632196","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@aipexstudio/dom-snapshot","version":"0.0.16","keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","_id":"@aipexstudio/dom-snapshot@0.0.16","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"homepage":"https://github.com/AIPexStudio/AIPex#readme","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"dist":{"shasum":"a99080102476a9eba1ac0cab89cfbbbe08724824","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.0.16.tgz","fileCount":15,"integrity":"sha512-N4NnvwljQhW7I2nnZMJtm1Im5bPogAOftzSlrihBunnwmD73iIwoMHm8UhPTUwAEt345WaaBccRxOv+AcJ1T6g==","signatures":[{"sig":"MEQCICcmbGtNeUkYatda+V1PUk6aoGy3nYn6ZrKMqHCGaVf2AiA6cwgHsrC1mhK2vIRusg3nedLGImi6ssJwoDuh3I0dKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.0.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53383},"main":"./dist/src/index.js","type":"module","_from":"file:aipexstudio-dom-snapshot-0.0.16.tgz","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --project tsconfig.json"},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"_resolved":"/tmp/15b1ecd5eea5b466ed5bb5c075a2f339/aipexstudio-dom-snapshot-0.0.16.tgz","_integrity":"sha512-N4NnvwljQhW7I2nnZMJtm1Im5bPogAOftzSlrihBunnwmD73iIwoMHm8UhPTUwAEt345WaaBccRxOv+AcJ1T6g==","repository":{"url":"git+https://github.com/AIPexStudio/AIPex.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM snapshot utility for capturing and serializing web page state","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dom-snapshot_0.0.16_1768404863876_0.8986522859328301","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@aipexstudio/dom-snapshot","version":"0.1.0","description":"DOM snapshot utility for capturing and serializing web page state","main":"./dist/src/index.js","types":"./dist/src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/AIPexStudio/AIPex.git"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"keywords":["dom","snapshot","serialize","web","browser"],"author":{"name":"AIPex Studio"},"license":"MIT","type":"module","devDependencies":{"@types/node":"^25.2.3"},"scripts":{"build":"tsc","test":"vitest run","typecheck":"tsc --project tsconfig.json"},"_id":"@aipexstudio/dom-snapshot@0.1.0","bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"homepage":"https://github.com/AIPexStudio/AIPex#readme","_integrity":"sha512-Wf3NHulpDc1YnXvpXFjTcrKf3/982qkuti639Jd7oTTSPim5y7SoIpYS/jrOfLur2X8+nYB9wFLpVg/0oiDLGw==","_resolved":"/tmp/3117ae124f1412ad929071baffa7fe0b/aipexstudio-dom-snapshot-0.1.0.tgz","_from":"file:aipexstudio-dom-snapshot-0.1.0.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-Wf3NHulpDc1YnXvpXFjTcrKf3/982qkuti639Jd7oTTSPim5y7SoIpYS/jrOfLur2X8+nYB9wFLpVg/0oiDLGw==","shasum":"8f0f1b7687a82021ca466c2c301d125d2c75c03e","tarball":"https://registry.npmjs.org/@aipexstudio/dom-snapshot/-/dom-snapshot-0.1.0.tgz","fileCount":15,"unpackedSize":56796,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aipexstudio%2fdom-snapshot@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAXmtSW3VAFG1oppzg0VPJ1dE1dnGCdeuulc4rEXkGNGAiEA3Fmg9CnpAh8Jvc37Z+BA2mO/wORSNlhK3wRYG9IIKpY="}]},"_npmUser":{"name":"ropzislaw","email":"buttercanbentley@gmail.com"},"directories":{},"maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dom-snapshot_0.1.0_1773226213072_0.5638421825245206"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-07T14:45:23.939Z","modified":"2026-03-11T10:50:13.595Z","0.0.7":"2026-01-07T14:45:24.201Z","0.0.8":"2026-01-08T04:28:47.171Z","0.0.9":"2026-01-08T05:57:26.677Z","0.0.10":"2026-01-08T06:13:27.482Z","0.0.11":"2026-01-08T07:21:12.884Z","0.0.12":"2026-01-08T08:17:50.487Z","0.0.13":"2026-01-08T08:54:27.642Z","0.0.14":"2026-01-08T11:55:51.636Z","0.0.15":"2026-01-12T17:35:52.363Z","0.0.16":"2026-01-14T15:34:24.042Z","0.1.0":"2026-03-11T10:50:13.271Z"},"bugs":{"url":"https://github.com/AIPexStudio/AIPex/issues"},"author":{"name":"AIPex Studio"},"license":"MIT","homepage":"https://github.com/AIPexStudio/AIPex#readme","keywords":["dom","snapshot","serialize","web","browser"],"repository":{"type":"git","url":"git+https://github.com/AIPexStudio/AIPex.git"},"description":"DOM snapshot utility for capturing and serializing web page state","maintainers":[{"name":"ropzislaw","email":"buttercanbentley@gmail.com"}],"readme":"# @aipexstudio/dom-snapshot\n\nA lightweight library for capturing DOM snapshots without relying on Chrome DevTools Protocol (CDP) Accessibility Tree (AXTree). This library provides a pure JavaScript/TypeScript solution for creating structured page snapshots that can be used for web automation, testing, and AI-powered browser agents.\n\n## Why Not CDP AXTree?\n\nTraditional approaches to capturing page structure often rely on CDP's Accessibility Tree, which has several limitations:\n\n- **Browser dependency**: Requires Chrome/Chromium with DevTools Protocol\n- **Performance overhead**: CDP communication adds latency\n- **Complex setup**: Needs browser debugging port configuration\n- **Limited portability**: Doesn't work in all browser contexts\n\nThis library takes a different approach by directly traversing the DOM and building a semantic snapshot that mimics accessibility tree structure, but works in any browser environment with just JavaScript.\n\n## Features\n\n- **Pure DOM-based**: No CDP or browser extensions required\n- **Accessibility-aware**: Captures semantic roles, names, and states following ARIA patterns\n- **Interactive element focus**: Prioritizes buttons, links, inputs, and other actionable elements\n- **Hidden element filtering**: Automatically skips `aria-hidden`, `display:none`, `visibility:hidden`, and `inert` elements\n- **Stable node IDs**: Assigns persistent `data-aipex-nodeid` attributes for reliable element targeting\n- **Text content extraction**: Captures static text nodes for full page context\n- **Configurable options**: Control text length limits, hidden element inclusion, and text node capture\n- **Search functionality**: Built-in glob pattern search across snapshot text\n- **Same-origin iframe support**: Automatically traverses and captures content from same-origin iframes and nested iframes\n\n## Installation\n\n```bash\nnpm install @aipexstudio/dom-snapshot\n# or\npnpm add @aipexstudio/dom-snapshot\n```\n\n## Usage\n\n### Basic Snapshot Collection\n\n```typescript\nimport { collectDomSnapshot, collectDomSnapshotInPage } from '@aipexstudio/dom-snapshot';\n\n// Collect snapshot from current page\nconst snapshot = collectDomSnapshotInPage();\n\n// Or specify a custom document\nconst snapshot = collectDomSnapshot(document, {\n  maxTextLength: 160,      // Max characters for element text (default: 160, does not affect StaticText)\n  includeHidden: false,    // Include hidden elements (default: false)\n  captureTextNodes: true,  // Capture StaticText nodes (default: true)\n});\n\nconsole.log(snapshot.totalNodes);        // Total nodes captured\nconsole.log(snapshot.root);              // Root node of the tree\nconsole.log(snapshot.idToNode);          // Flat map of id -> node\nconsole.log(snapshot.metadata.url);      // Page URL\n```\n\n### Converting to Text Format\n\n```typescript\nimport { collectDomSnapshot, buildTextSnapshot, formatSnapshot } from '@aipexstudio/dom-snapshot';\n\n// Collect raw snapshot\nconst serialized = collectDomSnapshot(document);\n\n// Convert to TextSnapshot format\nconst textSnapshot = buildTextSnapshot(serialized);\n\n// Format as readable text representation\nconst formatted = formatSnapshot(textSnapshot);\nconsole.log(formatted);\n```\n\nOutput example:\n```\n→uid=dom_abc123 RootWebArea \"My Page\" <body>\n  uid=dom_def456 button \"Submit\" <button>\n  uid=dom_ghi789 textbox \"Email\" <input> desc=\"Enter your email\"\n   StaticText \"Welcome to our site\"\n  *uid=dom_jkl012 link \"Learn More\" <a>\n```\n\nMarkers:\n- `*` - Currently focused element\n- `→` - Ancestor of focused element\n- ` ` (space) - Regular element\n\n### Searching Snapshots\n\n```typescript\nimport { searchSnapshotText, searchAndFormat, buildTextSnapshot, formatSnapshot } from '@aipexstudio/dom-snapshot';\n\nconst textSnapshot = buildTextSnapshot(serialized);\nconst formatted = formatSnapshot(textSnapshot);\n\n// Simple text search\nconst result = searchSnapshotText(formatted, 'Submit');\n\n// Multiple terms with | separator\nconst result = searchSnapshotText(formatted, '登录 | Login | Sign In');\n\n// Glob pattern search\nconst result = searchSnapshotText(formatted, 'button* | *submit*', {\n  useGlob: true,\n  contextLevels: 2,      // Lines of context around matches\n  caseSensitive: false,\n});\n\nconsole.log(result.matchedLines);   // Line numbers of matches\nconsole.log(result.contextLines);   // All lines to display (with context)\nconsole.log(result.totalMatches);   // Total match count\n\n// Or use searchAndFormat for a convenient one-step search with formatted output\nconst formattedResults = await searchAndFormat(serialized, 'Submit', 2);\nconsole.log(formattedResults);      // Formatted search results with context\n```\n\n## API Reference\n\n### `collectDomSnapshot(document, options?)`\n\nCollects a DOM snapshot from the specified document.\n\n**Parameters:**\n- `document` - The Document to snapshot\n- `options` - Optional configuration:\n  - `maxTextLength` (number, default: 160) - Maximum text length for element nodes (does not affect StaticText nodes which preserve full content)\n  - `includeHidden` (boolean, default: false) - Include hidden elements\n  - `captureTextNodes` (boolean, default: true) - Capture text nodes as StaticText\n\n**Returns:** `SerializedDomSnapshot`\n\n### `collectDomSnapshotInPage(options?)`\n\nConvenience function that calls `collectDomSnapshot` with the current `document`.\n\n### `buildTextSnapshot(source)`\n\nConverts a serialized DOM snapshot to TextSnapshot format.\n\n**Parameters:**\n- `source` - The SerializedDomSnapshot to convert\n\n**Returns:** `TextSnapshot`\n\n### `formatSnapshot(snapshot)`\n\nFormats a TextSnapshot as readable text representation.\n\n**Parameters:**\n- `snapshot` - The TextSnapshot to format\n\n**Returns:** `string`\n\n### `searchSnapshotText(text, query, options?)`\n\nSearch snapshot text with optional glob patterns.\n\n**Parameters:**\n- `text` - The formatted snapshot text\n- `query` - Search query (use `|` to separate multiple terms)\n- `options`:\n  - `contextLevels` (number, default: 1) - Lines of context around matches\n  - `caseSensitive` (boolean, default: false) - Case-sensitive search\n  - `useGlob` (boolean, auto-detect) - Enable glob pattern matching\n\n**Returns:** `SearchResult`\n\n### `searchAndFormat(snapshot, query, contextLevels?, options?)`\n\nConvenience function that searches a snapshot and returns formatted results with context.\n\n**Parameters:**\n- `snapshot` - The SerializedDomSnapshot to search\n- `query` - Search query (use `|` to separate multiple terms)\n- `contextLevels` (number, default: 1) - Lines of context around matches\n- `options` - Optional SearchOptions\n\n**Returns:** `Promise<string | null>` - Formatted search results or null if no snapshot\n\n## Node Structure\n\nEach captured node includes:\n\n```typescript\ninterface DomSnapshotNode {\n  id: string;                    // Unique node identifier\n  role: string;                  // Semantic role (button, link, textbox, etc.)\n  name?: string;                 // Accessible name\n  value?: string;                // Current value (for inputs)\n  description?: string;          // Additional description\n  children: DomSnapshotNode[];   // Child nodes\n  tagName?: string;              // HTML tag name\n\n  // State properties\n  checked?: boolean | 'mixed';   // Checkbox/radio state\n  pressed?: boolean | 'mixed';   // Toggle button state\n  disabled?: boolean;            // Disabled state\n  focused?: boolean;             // Focus state\n  selected?: boolean;            // Selection state\n  expanded?: boolean;            // Expanded state\n\n  // Additional properties\n  placeholder?: string;          // Input placeholder\n  href?: string;                 // Link URL\n  title?: string;                // Element title\n  textContent?: string;          // Text content\n  inputType?: string;            // Input type attribute\n}\n```\n\n## Role Mapping\n\nThe library maps HTML elements to semantic roles:\n\n| HTML Element | Role |\n|-------------|------|\n| `<button>` | button |\n| `<a href=\"...\">` | link |\n| `<input type=\"text\">` | textbox |\n| `<input type=\"checkbox\">` | checkbox |\n| `<input type=\"radio\">` | radio |\n| `<input type=\"range\">` | slider |\n| `<select>` | combobox |\n| `<textarea>` | textbox |\n| `<img>` | image |\n| Elements with `contenteditable` | textbox |\n\nExplicit `role` attributes are respected and take precedence.\n\n## Skipped Elements\n\nThe following are automatically excluded from snapshots:\n\n- `<script>`, `<style>`, `<noscript>`, `<template>`, `<svg>`, `<head>`, `<meta>`, `<link>`\n- Elements with `aria-hidden=\"true\"`\n- Elements with `hidden` attribute\n- Elements with `inert` attribute\n- Elements with `display: none`\n- Elements with `visibility: hidden`\n\n## Iframe Handling\n\nThe library automatically handles same-origin iframes:\n\n- **Same-origin iframes**: Content is fully traversed and included in the snapshot tree\n- **Nested iframes**: Supports recursive traversal of nested same-origin iframes (up to 10 levels deep)\n- **Cross-origin iframes**: Skipped due to browser security restrictions (SecurityError)\n- **Coordinate tracking**: Element bounding boxes account for iframe offsets for accurate positioning\n\n```typescript\n// Iframe content is automatically included in the snapshot\nconst snapshot = collectDomSnapshot(document);\n\n// Elements inside iframes are accessible via their unique IDs\nconst iframeElement = snapshot.idToNode['dom_iframe_element_123'];\n```\n\n## Use Cases\n\n- **Web Automation**: Provide page context to AI agents for browser automation\n- **Testing**: Capture page state for snapshot testing\n- **Accessibility Auditing**: Analyze semantic structure of pages\n- **Content Extraction**: Extract meaningful content from web pages\n- **Browser Extensions**: Build tools that need page structure without CDP\n\n## License\n\nMIT\n","readmeFilename":"README.md"}