{"_id":"@elliemae/encw-leak-runner","_rev":"15-56183c7913b83b28279c8e26493e9de3","name":"@elliemae/encw-leak-runner","dist-tags":{"latest":"1.0.16"},"versions":{"1.0.2":{"name":"@elliemae/encw-leak-runner","version":"1.0.2","_id":"@elliemae/encw-leak-runner@1.0.2","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"53de1f03b50945b57cf755bc7f2c4f0f0f0ad106","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.2.tgz","fileCount":261,"integrity":"sha512-xrQbLYyKAFCSvsxjqFa1rivwRt6BEfcsDcYv7eh4SomP8Zys1AL69GPgCxQFTao1XhwEMGIjZ4u1tcfQzDLjGA==","signatures":[{"sig":"MEQCIDQtoaRry4b16wYcXWEPgU3oUFTgv6kQb/uG6DsynihXAiBCHO+joepOMa6D48cLHmr6rBrKG9HggYrdvT1Ngu+K0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":991384},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.2.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/cead671b7fd5c59c5c790a32250eab0e/elliemae-encw-leak-runner-1.0.2.tgz","_integrity":"sha512-xrQbLYyKAFCSvsxjqFa1rivwRt6BEfcsDcYv7eh4SomP8Zys1AL69GPgCxQFTao1XhwEMGIjZ4u1tcfQzDLjGA==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.26","@elliemae/encw-heap-doctor":"26.2.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.2_1778263654696_0.9915628157108847","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@elliemae/encw-leak-runner","version":"1.0.3","_id":"@elliemae/encw-leak-runner@1.0.3","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"1ce6bde24657d59fe6c3d1749e3691c47c1d649f","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.3.tgz","fileCount":261,"integrity":"sha512-LPq5YbcryFmaga1jm/G1CCz2sWeH+2StMq6j6EyzkVmcs8XZsz/Sco5RodifVOuL8RQ4poCuQGhw7EDm/iH/oQ==","signatures":[{"sig":"MEUCIQCAU1oEBqdZ0D1bums8Rk+Vbku5j7mgi0gUGPosbelxwQIgAslPGu7B5AL7X/qKVSD8Q2CTi02speupvyDgTpwnzyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":991610},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.3.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/67077c26d69c6e533d4b3ca90110ffeb/elliemae-encw-leak-runner-1.0.3.tgz","_integrity":"sha512-LPq5YbcryFmaga1jm/G1CCz2sWeH+2StMq6j6EyzkVmcs8XZsz/Sco5RodifVOuL8RQ4poCuQGhw7EDm/iH/oQ==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.27","@elliemae/encw-heap-doctor":"26.2.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.3_1778577284259_0.9638067407737598","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@elliemae/encw-leak-runner","version":"1.0.4","_id":"@elliemae/encw-leak-runner@1.0.4","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"3eb5bdef86ab4ba2f273eed9729c0eddc4ca5b44","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.4.tgz","fileCount":273,"integrity":"sha512-2imtBDNbWudpxBJJY7ho34Lmy/zTc314ynfCiBAhY4p2Ky5JbnIS9YI6UTIjsUn9mUo1Vs3N74e8FdTjdVxrxw==","signatures":[{"sig":"MEQCIGPOrPe0qyG8E5SuxCpZAJsUz8scvlSOJKD2RAgfMp/OAiB7kpzojWpvb0MUZvcFeLAUIgHuyDQAaLrzisAYrwwUSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1059862},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.4.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/076e8a865e844e5e950710d8afff5beb/elliemae-encw-leak-runner-1.0.4.tgz","_integrity":"sha512-2imtBDNbWudpxBJJY7ho34Lmy/zTc314ynfCiBAhY4p2Ky5JbnIS9YI6UTIjsUn9mUo1Vs3N74e8FdTjdVxrxw==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.28","@elliemae/encw-heap-doctor":"26.2.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.4_1778692312335_0.2776332007746871","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@elliemae/encw-leak-runner","version":"1.0.5","_id":"@elliemae/encw-leak-runner@1.0.5","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"ec968ff1457d3020d849f33ec83698ab29a19256","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.5.tgz","fileCount":273,"integrity":"sha512-H8GQDW/QJe6QbhpBGH129QdMQ66ry0w8OUUg5tzO+NEEzmUnWyN9EBIXSS+ZybCSK5DNJyWMdgJxyqkNogIlow==","signatures":[{"sig":"MEYCIQCJYxdUxcwRriKh6u8IntcDwjr/BE2GAAsIbCJIYPIJCgIhALOzKrFZdhDu/YVvF2OuXNgcz+P8l7+dtA5Jcl+g0o3I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1057764},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.5.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/93a2422948fc0143ced7a936c820c58a/elliemae-encw-leak-runner-1.0.5.tgz","_integrity":"sha512-H8GQDW/QJe6QbhpBGH129QdMQ66ry0w8OUUg5tzO+NEEzmUnWyN9EBIXSS+ZybCSK5DNJyWMdgJxyqkNogIlow==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.29","@elliemae/encw-heap-doctor":"26.2.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.5_1778736482784_0.12386185320818832","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@elliemae/encw-leak-runner","version":"1.0.6","_id":"@elliemae/encw-leak-runner@1.0.6","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"d2407b4b714da326e17c2d246da4102b5d169a43","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.6.tgz","fileCount":273,"integrity":"sha512-+Bq2HsRGwpEbkOWDd4/ETJvzjXiaFXbIBRDl5awZmMoolfyjvvuBkAoHJysweEPPcsdiUsGRXM+MoOPpv57G2g==","signatures":[{"sig":"MEQCIBZm5U2QlyHH8MKy9RiQ3NGfMC03nnKv3uQjrzxNvlS+AiAmJnixNdSViDvA9MbY3E8mWOkX2ngUQVEAwVIptq20dQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1057992},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.6.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/ebfed7e08df416359a9dabb1fbfecd59/elliemae-encw-leak-runner-1.0.6.tgz","_integrity":"sha512-+Bq2HsRGwpEbkOWDd4/ETJvzjXiaFXbIBRDl5awZmMoolfyjvvuBkAoHJysweEPPcsdiUsGRXM+MoOPpv57G2g==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.30","@elliemae/encw-heap-doctor":"26.2.19"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.6_1778741091480_0.3725713633667411","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@elliemae/encw-leak-runner","version":"1.0.7","_id":"@elliemae/encw-leak-runner@1.0.7","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"fb80887731256554b8fea85c0be0b68138e15933","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.7.tgz","fileCount":273,"integrity":"sha512-9TjyzadUo1YwlDeTSu0WtwnSUKqYnP8+ydVj1ostR00p9hi2hh0TbX3DgbC6OEEE2L2Jg3Z9OkoSyoT1CiJekw==","signatures":[{"sig":"MEUCIQCiPnth7S8p1nsP5eGxq1lDQbyaH4togKts/OCA2tWO5gIgaVqcQ3DNB9dT9jCWcvxIDqtJiYR4wwPqIyaze9ikal0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1058217},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.7.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/e186ffea0cf94ac24add29e4149ef12f/elliemae-encw-leak-runner-1.0.7.tgz","_integrity":"sha512-9TjyzadUo1YwlDeTSu0WtwnSUKqYnP8+ydVj1ostR00p9hi2hh0TbX3DgbC6OEEE2L2Jg3Z9OkoSyoT1CiJekw==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.31","@elliemae/encw-heap-doctor":"26.2.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.7_1778744740584_0.7319334351441749","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@elliemae/encw-leak-runner","version":"1.0.8","_id":"@elliemae/encw-leak-runner@1.0.8","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"32dbb0ff7bedf0db67c39311ed61de6963c1b80b","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.8.tgz","fileCount":273,"integrity":"sha512-QIWHXnE2aiViC+GfLXQyDCBzd4jKp2I7Jrb+fhYsrHimbrnRlSlgR6nGJn+LCy9eiIXpBNPC6jOSX2OuU1LK8Q==","signatures":[{"sig":"MEUCIQDMe/aadIDtJovSl3sHsDfPOf4QrWhQrtIhh12Sgc3zCgIgQ48Vhq2MtpPr+h8U5S1g1iSMCf3w57koVEfXieKPvNk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1058992},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.8.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/52f3cf720f1940f64bc5073d8dd97012/elliemae-encw-leak-runner-1.0.8.tgz","_integrity":"sha512-QIWHXnE2aiViC+GfLXQyDCBzd4jKp2I7Jrb+fhYsrHimbrnRlSlgR6nGJn+LCy9eiIXpBNPC6jOSX2OuU1LK8Q==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.32","@elliemae/encw-heap-doctor":"26.2.21"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.8_1778775290330_0.1161205546115669","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@elliemae/encw-leak-runner","version":"1.0.9","_id":"@elliemae/encw-leak-runner@1.0.9","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"40ef23aa85e10f49ae01a2c26ef0a058b57f672f","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.9.tgz","fileCount":273,"integrity":"sha512-Ny9mIZHjcjbKvNDB9zIwqonmVvJ2CytyqRoKgtSnM/ir01vapn+ieTQkYex0jKH7VDewWuqTNvZZKHgcqQ9C9w==","signatures":[{"sig":"MEYCIQCIoaD5CvBuin3qOHvaez/6Mh+1d0LDbwIiVdlretVFBQIhAJ6xOc9LykN1nWgYCRdDVQhYw6wwCLV7tnQ/00MCD4/2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1061540},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.9.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/dfd34ea157f174d07bebd6ed3f65bbb4/elliemae-encw-leak-runner-1.0.9.tgz","_integrity":"sha512-Ny9mIZHjcjbKvNDB9zIwqonmVvJ2CytyqRoKgtSnM/ir01vapn+ieTQkYex0jKH7VDewWuqTNvZZKHgcqQ9C9w==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.33","@elliemae/encw-heap-doctor":"26.2.22"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.9_1778818917112_0.5762286370770444","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@elliemae/encw-leak-runner","version":"1.0.10","_id":"@elliemae/encw-leak-runner@1.0.10","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"81b81128dd7f69e1146b4e1102d8c33377418053","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.10.tgz","fileCount":273,"integrity":"sha512-66BiP7F6QBFHH545SE2Fglea5evF1JiCPRm1b0gNgY9HFMWnGo9YUoQxP7DCi/pRzF3uBe9xWMbbQhkK6va1jA==","signatures":[{"sig":"MEYCIQDz0bF8yg3wcbtL5jJOKUPrXBIod39QZME8K4z04/12xQIhAIUoWwoIx/CcPoMJ5S6mNsK7MjZlkIXlng81Ra4VX4k3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1061450},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.10.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/2c4854cfaec3446952cb986b6f80b1ce/elliemae-encw-leak-runner-1.0.10.tgz","_integrity":"sha512-66BiP7F6QBFHH545SE2Fglea5evF1JiCPRm1b0gNgY9HFMWnGo9YUoQxP7DCi/pRzF3uBe9xWMbbQhkK6va1jA==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.34","@elliemae/encw-heap-doctor":"26.2.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.10_1778822592126_0.10170364747692884","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@elliemae/encw-leak-runner","version":"1.0.11","_id":"@elliemae/encw-leak-runner@1.0.11","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"bc5b8a5778f5e989edba325c9cd097325d981e46","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.11.tgz","fileCount":273,"integrity":"sha512-794zCjehJNfXyru9RBpEqBWMK9eXtgj1us/UunYg4akDjXv9Fpn58oB6fIhZ81OPnzl3W7I+xljnFlphKziSXw==","signatures":[{"sig":"MEUCIHobYg5En/Oov0PoKAMI9vB/sgTiDUCiKVA3GpxaSVttAiEAyY+ybYBAGl8yZGTveeVgKu9f+flxOdTteaGvuwg0Zh8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1061677},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.11.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/e35833402e13819c5675f25524f2d24f/elliemae-encw-leak-runner-1.0.11.tgz","_integrity":"sha512-794zCjehJNfXyru9RBpEqBWMK9eXtgj1us/UunYg4akDjXv9Fpn58oB6fIhZ81OPnzl3W7I+xljnFlphKziSXw==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.35","@elliemae/encw-heap-doctor":"26.2.24"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.11_1778825013283_0.6149646137641198","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@elliemae/encw-leak-runner","version":"1.0.12","_id":"@elliemae/encw-leak-runner@1.0.12","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"dd04d7927ab722abd1656f02d7d493c6f9e5e10c","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.12.tgz","fileCount":273,"integrity":"sha512-ZhC9nrE6Nsfh4lCR84SZh1wqqJltEX+meb8BFI9Nxtpz1bIMmsc6+ysukFfLi4D1Xc2nxGbbgpzjFWsMz4Q82A==","signatures":[{"sig":"MEYCIQClEGr7erRRsSqCFK5s8PIN23TV3HNtP3u3QQohGDOFfwIhAKgCDeOcN+8C55b0SlMI1qhHxkWUcB8Pm1kGKouVtP+w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1061907},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.12.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/b8dd47cc173958c9d7b1f8a59b2689f4/elliemae-encw-leak-runner-1.0.12.tgz","_integrity":"sha512-ZhC9nrE6Nsfh4lCR84SZh1wqqJltEX+meb8BFI9Nxtpz1bIMmsc6+ysukFfLi4D1Xc2nxGbbgpzjFWsMz4Q82A==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.36","@elliemae/encw-heap-doctor":"26.2.25"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.12_1778828548650_0.764677594397654","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@elliemae/encw-leak-runner","version":"1.0.13","_id":"@elliemae/encw-leak-runner@1.0.13","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"d8a2a7b22855531045e94b72e97377703f3ac693","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.13.tgz","fileCount":273,"integrity":"sha512-1Lj3C0eMiIJthf/2LCnSxg9R43Ldapzf+otuJ26XqdtRrngnG/DO8ClWniErLoJSW3Opf1+fpG1LYvJViJRXQw==","signatures":[{"sig":"MEUCIGOcr9gjBx/QDg/YJzgI/lm9xX4Y9VXOzsgzBehofEVaAiEAjJYZ9FXDQJ8/CPDDUFkit7PASDbMnoQBsPN8oAThfR4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062137},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.13.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/11be741b64b75ec387720f4ebfabdb43/elliemae-encw-leak-runner-1.0.13.tgz","_integrity":"sha512-1Lj3C0eMiIJthf/2LCnSxg9R43Ldapzf+otuJ26XqdtRrngnG/DO8ClWniErLoJSW3Opf1+fpG1LYvJViJRXQw==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.37","@elliemae/encw-heap-doctor":"26.2.26"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.13_1778830095500_0.6908328563974442","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@elliemae/encw-leak-runner","version":"1.0.14","_id":"@elliemae/encw-leak-runner@1.0.14","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"499c7ddd89c66e7bdb32df983c4d42f24e07949b","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.14.tgz","fileCount":307,"integrity":"sha512-XzsDzbhYUEHU4v8HLxS7BbfpVGoInkXeFI9WpS4mko1lgWRZUk72/VuRFvQys1YezBIf4IY7pkOPedJlp1KbAQ==","signatures":[{"sig":"MEUCIAFAh4R1IA8O5YrmDch+P59b1pruoNCZY7PZ+Lkr8nENAiEA3fAQvPNfrBCbvsHJkb2c7AnGDmWNiDyo/5/fYLQIQ5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1288932},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.14.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","codegen":"playwright codegen","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/2ba738abbb16b039459c9de0268f949e/elliemae-encw-leak-runner-1.0.14.tgz","_integrity":"sha512-XzsDzbhYUEHU4v8HLxS7BbfpVGoInkXeFI9WpS4mko1lgWRZUk72/VuRFvQys1YezBIf4IY7pkOPedJlp1KbAQ==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.2.38","@elliemae/encw-heap-doctor":"26.2.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.14_1779376775869_0.876329074284357","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@elliemae/encw-leak-runner","version":"1.0.15","_id":"@elliemae/encw-leak-runner@1.0.15","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"bin":{"leak-runner":"dist/bin/leak-runner.js"},"dist":{"shasum":"1511bfa91b3799b279d8c74031320a46db7511c3","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.15.tgz","fileCount":307,"integrity":"sha512-ILRsaQNmHFB8q2DYJ5FYtDTU5D5sa+rlBDObuOyKqa0ieQEPEy5p2q4SOrH7WFyfYhAvvM9xQGXAH12G3Yi+Fw==","signatures":[{"sig":"MEUCIQDqrjawMMmBKmCUL+d+gYNRHvIq//eHbX9k38C8oWI7ggIgIni3DmpW9u/bvcKYjGLMiO9GKeQejWBlsV/qPSzwdvw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1289159},"main":"./dist/cjs/index.js","type":"module","_from":"file:elliemae-encw-leak-runner-1.0.15.tgz","types":"./dist/types/lib/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","lint":"pui-cli lint","test":"pui-cli test -p","build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","codegen":"playwright codegen","tscheck":"pui-cli tscheck --files","lint:fix":"pui-cli lint --fix","test-watch":"jest --watch"},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"_resolved":"/tmp/bfdbf56c350f5992c832bd24eee161d2/elliemae-encw-leak-runner-1.0.15.tgz","_integrity":"sha512-ILRsaQNmHFB8q2DYJ5FYtDTU5D5sa+rlBDObuOyKqa0ieQEPEy5p2q4SOrH7WFyfYhAvvM9xQGXAH12G3Yi+Fw==","_npmVersion":"10.8.2","description":"Playwright orchestration framework for microapp memory leak detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","commander":"^12.1.0","@elliemae/smoked-suite":"26.3.1","@elliemae/encw-heap-doctor":"26.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@playwright/test":"~1.58.2","@elliemae/pui-cli":"~8.59.3"},"peerDependencies":{"@playwright/test":">=1.40.0"},"_npmOperationalInternal":{"tmp":"tmp/encw-leak-runner_1.0.15_1779379027908_0.09937647671355654","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@elliemae/encw-leak-runner","version":"1.0.16","description":"Playwright orchestration framework for microapp memory leak detection","type":"module","main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/types/lib/index.d.ts","bin":{"leak-runner":"dist/bin/leak-runner.js"},"exports":{".":{"types":"./dist/types/lib/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"dependencies":{"commander":"^12.1.0","zod":"^3.25.76","@elliemae/encw-heap-doctor":"26.3.2","@elliemae/smoked-suite":"26.3.2"},"devDependencies":{"@elliemae/pui-cli":"~8.59.3","@playwright/test":"~1.58.2","@types/node":"^22.0.0","typescript":"^5.6.0"},"peerDependencies":{"@playwright/test":">=1.40.0"},"publishConfig":{"access":"public"},"scripts":{"build":"pui-cli pack -p -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","dev":"pui-cli pack -t node && esbuild bin/leak-runner.ts --bundle --packages=external --platform=node --target=node18 --format=esm --outdir=dist/bin","test":"pui-cli test -p","test-watch":"jest --watch","lint":"pui-cli lint","lint:fix":"pui-cli lint --fix","tscheck":"pui-cli tscheck --files","codegen":"playwright codegen"},"_id":"@elliemae/encw-leak-runner@1.0.16","_integrity":"sha512-MVQCmCKLRoJk+ZiqnVJZtVMRGAkEs87Oc7LXbPtBCb+PUVskLwpreu+BXElHhcYccD0XeTg+WmjhPQNM4JIsiw==","_resolved":"/tmp/bca373a34fd67d4b08293bb6cde6f0e4/elliemae-encw-leak-runner-1.0.16.tgz","_from":"file:elliemae-encw-leak-runner-1.0.16.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-MVQCmCKLRoJk+ZiqnVJZtVMRGAkEs87Oc7LXbPtBCb+PUVskLwpreu+BXElHhcYccD0XeTg+WmjhPQNM4JIsiw==","shasum":"b77ffb86d633e540bea8dfe39b2c648da94e3ba8","tarball":"https://registry.npmjs.org/@elliemae/encw-leak-runner/-/encw-leak-runner-1.0.16.tgz","fileCount":307,"unpackedSize":1289349,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAnysdRJiUXF7RprUXQJ+dj8R94svVF3+6nVrw10dQIaAiEAkyF8A1TerH9DizVFSOrOeTBLeUT/L4PzrYLFomZEYvQ="}]},"_npmUser":{"name":"encw.dev","email":"encw.dev@gmail.com"},"directories":{},"maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/encw-leak-runner_1.0.16_1779811925554_0.9066489508187214"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-08T18:07:33.994Z","modified":"2026-05-26T16:12:05.868Z","1.0.2":"2026-05-08T18:07:34.980Z","1.0.3":"2026-05-12T09:14:44.400Z","1.0.4":"2026-05-13T17:11:52.504Z","1.0.5":"2026-05-14T05:28:03.006Z","1.0.6":"2026-05-14T06:44:51.662Z","1.0.7":"2026-05-14T07:45:40.742Z","1.0.8":"2026-05-14T16:14:50.457Z","1.0.9":"2026-05-15T04:21:57.263Z","1.0.10":"2026-05-15T05:23:12.271Z","1.0.11":"2026-05-15T06:03:33.450Z","1.0.12":"2026-05-15T07:02:28.818Z","1.0.13":"2026-05-15T07:28:15.682Z","1.0.14":"2026-05-21T15:19:36.022Z","1.0.15":"2026-05-21T15:57:08.084Z","1.0.16":"2026-05-26T16:12:05.710Z"},"description":"Playwright orchestration framework for microapp memory leak detection","maintainers":[{"name":"encw.dev","email":"encw.dev@gmail.com"}],"readme":"# @elliemae/encw-leak-runner\n\nPlaywright-based memory-leak detection runner for Encompass Web microapps. Wraps `@elliemae/encw-heap-doctor` and `@elliemae/smoked-suite` to capture before/after heap snapshots around scripted user flows, compare retained sizes, and emit machine- and human-readable reports.\n\n> **Internal package.** The Tier 1 / Tier 2 API split below documents the surface for in-monorepo consumers and Jenkins. There is no backwards-compatibility guarantee until external consumers exist.\n\n## Installation & build\n\n```bash\n# from repo root\npnpm install\npnpm --filter @elliemae/encw-leak-runner build\n```\n\n## Quick start\n\n```bash\n# list registered scenarios\npnpm --filter @elliemae/encw-leak-runner exec leak-runner list\n\n# run all scenarios against a target environment (locally)\n# select a named env from leak-runner.config.json (e.g. Q3, UAT1, PROD)…\nexport ENCW_INSTANCE_ID=BE11226875\nexport ENCW_USER_ID=admin\nexport ENCW_PASSWORD='your-password'\npnpm --filter @elliemae/encw-leak-runner exec leak-runner run --all --env Q3\n\n# …or provide a base URL via env var fallback\nexport BASE_URL=https://q3.elliemae.io\npnpm --filter @elliemae/encw-leak-runner exec leak-runner run --all\n\n# run a single scenario by key\npnpm --filter @elliemae/encw-leak-runner exec leak-runner run one-admin/export-navigation\n```\n\n## Configuration\n\nTwo layers:\n\n### 1. `leak-runner.config.json` (non-secret runner defaults)\n\nLives at the package root. Holds runner options, AI settings, and the `envs` URL map. **Never** holds credentials or other secrets.\n\n```json\n{\n  \"$schema\": \"./leak-runner.schema.json\",\n  \"runner\": {\n    \"headless\": true,\n    \"outputDir\": \"./leak-reports/\",\n    \"topN\": 5\n  },\n  \"ai\": {\n    \"enabled\": false,\n    \"model\": \"Claude3.7\",\n    \"temperature\": 0.3\n  },\n  \"envs\": {\n    \"LOCALHOST\": \"http://localhost:3000\",\n    \"Q3\": \"https://q3.elliemae.io\",\n    \"Q4\": \"https://q4.elliemae.io\",\n    \"UAT1\": \"https://uat1.elliemae.io\",\n    \"PROD\": \"https://encompass.elliemae.io\"\n  }\n}\n```\n\nThe `envs` map is just a convenience: each key is a name you can pass to `--env <name>` (or the `ENCW_ENV` env var) and the runner resolves the matching URL. Add, remove, or override entries as you like.\n\n### 2. Environment parameters (per-run, required)\n\n| Parameter   | CLI flag             | Env var            | Required               |\n| ----------- | -------------------- | ------------------ | ---------------------- |\n| Base URL    | _(no flag)_          | `BASE_URL`         | yes (or use `--env`)   |\n| Env name    | `--env <name>`       | `ENCW_ENV`         | no (resolves base URL) |\n| Instance ID | `--instance-id <id>` | `ENCW_INSTANCE_ID` | yes                    |\n| User ID     | `--user-id <id>`     | `ENCW_USER_ID`     | yes                    |\n| Password    | _(no flag)_          | `ENCW_PASSWORD`    | yes                    |\n\n`--env <name>` (or `ENCW_ENV`) looks up the URL in the `envs` map from `leak-runner.config.json`. Precedence for base URL: `BASE_URL` > `--env` / `ENCW_ENV` map lookup. An unknown env name fails with exit code **2** and lists the defined envs. If no source resolves a base URL at all, the runner exits with code **2** and prints every missing field by name with the CLI flag and env-var name to use.\n\n### Precedence\n\n| Layer            | Runner options (`headless`, `outputDir`, `topN`) | Environment params (`baseUrl`, `instanceId`, `userId`)             |\n| ---------------- | ------------------------------------------------ | ------------------------------------------------------------------ |\n| CLI flag         | Highest                                          | Highest                                                            |\n| `process.env`    | Mid                                              | Mixed (`BASE_URL` highest for base URL; id/user from CLI beat env) |\n| Config file      | Low                                              | Indirect — via `envs` map looked up by `--env` / `ENCW_ENV`        |\n| Built-in default | Lowest                                           | _No defaults — required_                                           |\n\n### Secrets\n\n`ENCW_PASSWORD` and the optional `GENICE_API_KEY` (when `ai.enabled`) are read **only** from `process.env`. Neither has a CLI flag, so secrets cannot leak into shell history, process listings, or CI logs.\n\n## Adding a scenario\n\nScenarios live under `lib/scenarios/<microapp>/`. Each microapp has an `index.ts` barrel that exports its scenarios; `lib/scenarios/index.ts` aggregates them into the global `ScenarioRegistry`.\n\n```text\nlib/scenarios/\n├── one-admin/\n│   ├── export-navigation.scenario.ts\n│   ├── index.ts                          // exports oneAdminScenarios\n│   └── page-models/\n│       ├── ExportPageModel.ts\n│       ├── SelectSettingsPageModel.ts\n│       └── index.ts\n└── index.ts                              // builds the global ScenarioRegistry\n```\n\nA scenario implements `MicroappLeakScenario`:\n\n```typescript\nimport type { MicroappLeakScenario } from '../../types/scenario.js';\n\nexport const myScenario: MicroappLeakScenario = {\n  id: 'my-scenario', // kebab-case; combines with microapp into the registry key\n  name: 'My Scenario', // human-readable display name\n  description: 'What this scenario exercises',\n  tags: ['critical'],\n  microappSelector: 'iframe#my-microapp',\n  url: () => '/path/to/microapp', // relative; ScenarioRunner sets baseURL on the context\n  async action(page, frame) {\n    // Drive the microapp through the user flow you want to leak-check.\n  },\n  async back(page) {\n    // Optional: undo / navigate back so the next iteration starts clean.\n  },\n  repeat: () => 3, // default 3\n  thresholds: {\n    maxRetainedSizeDeltaBytes: 10 * 1024 * 1024,\n    maxNewLeakGroups: 0,\n  },\n};\n```\n\nAdd it to the microapp barrel and aggregate it in `lib/scenarios/index.ts`:\n\n```typescript\n// lib/scenarios/my-microapp/index.ts\nimport type { MicroappLeakScenario } from '../../types/scenario.js';\nimport { myScenario } from './my-scenario.scenario.js';\n\nexport const myMicroappScenarios: readonly MicroappLeakScenario[] = [\n  myScenario,\n];\n```\n\n```typescript\n// lib/scenarios/index.ts\nexport const scenarioRegistry: ScenarioRegistry = new ScenarioRegistry()\n  .register({ microapp: 'one-admin', scenarios: oneAdminScenarios })\n  .register({ microapp: 'my-microapp', scenarios: myMicroappScenarios });\n```\n\n## Running in Jenkins\n\n```groovy\npipeline {\n  agent { label 'node20-playwright' }\n  parameters {\n    choice(name: 'ENV', choices: ['Q3', 'Q4', 'UAT1', 'PROD'],\n           description: 'Looks up base URL from leak-runner.config.json envs')\n    string(name: 'INSTANCE_ID', defaultValue: 'BE11226875')\n    string(name: 'USER_ID',     defaultValue: 'admin')\n    string(name: 'CREDENTIAL_ID', defaultValue: 'encw-q3-password',\n           description: 'Jenkins credential ID for the password')\n    choice(name: 'MODE', choices: ['all', 'by-tag', 'by-name'])\n    string(name: 'NAME_OR_TAG', defaultValue: '')\n  }\n  environment {\n    ENCW_PASSWORD  = credentials(\"${params.CREDENTIAL_ID}\")\n    GENICE_API_KEY = credentials('genice-api-key')   // optional\n  }\n  stages {\n    stage('Install') { steps { sh 'pnpm install --frozen-lockfile' } }\n    stage('Build')   { steps { sh 'pnpm --filter @elliemae/encw-leak-runner build' } }\n    stage('Run leaks') {\n      steps {\n        script {\n          def args = \"--env ${params.ENV} --instance-id ${params.INSTANCE_ID} --user-id ${params.USER_ID}\"\n          if (params.MODE == 'all')     args += \" --all\"\n          if (params.MODE == 'by-tag')  args += \" --tag ${params.NAME_OR_TAG}\"\n          if (params.MODE == 'by-name') args += \" ${params.NAME_OR_TAG}\"\n          sh \"pnpm --filter @elliemae/encw-leak-runner exec leak-runner run ${args}\"\n        }\n      }\n    }\n  }\n  post {\n    always {\n      junit 'libs/encw-leak-runner/leak-reports/junit.xml'\n      archiveArtifacts artifacts: 'libs/encw-leak-runner/leak-reports/**/*', fingerprint: true\n    }\n  }\n}\n```\n\n**Exit codes:**\n\n| Code | Meaning                                          |\n| ---- | ------------------------------------------------ |\n| 0    | All scenarios passed                             |\n| 1    | At least one scenario failed thresholds          |\n| 2    | Configuration error (missing required parameter) |\n\nThis split lets Jenkins distinguish a flaky test from misconfiguration.\n\n## Architecture\n\n```\n┌──────────────────────────────────────────────────────────────────┐\n│                          CLI / Jenkins                           │\n│                bin/leak-runner.ts (Commander)                    │\n└───────────────┬───────────────────────────────────┬──────────────┘\n                │                                   │\n                ▼                                   ▼\n    ┌────────────────────┐               ┌────────────────────┐\n    │ RunnerConfigLoader │               │  ScenarioRegistry  │\n    │  (file+env+CLI)    │               │   (Composite)      │\n    └─────────┬──────────┘               └─────────┬──────────┘\n              │ RunnerConfig                       │ scenarios\n              ▼                                    ▼\n           ┌────────────────────────────────────────────┐\n           │              BatchRunner                   │\n           │  iterates scenarios → ScenarioRunner       │\n           └───────────────┬───────────────┬────────────┘\n                           │               │\n                           ▼               ▼\n     ┌─────────────────────────┐   ┌────────────────────────┐\n     │      ScenarioRunner     │   │  Reporters (Console,   │\n     │ ┌─────────────────────┐ │   │   JUnit) — pluggable   │\n     │ │  AuthManager        │ │   └────────────────────────┘\n     │ │  PageSetup          │ │\n     │ │  (smoked-suite)     │ │\n     │ │  IframeHeapProfiler │ │\n     │ │   ↳ extends         │ │\n     │ │     HeapMemoryProf. │ │\n     │ │  ThresholdEvaluator │ │\n     │ │  AiEnhancer (opt.)  │ │\n     │ │   (heap-doctor)     │ │\n     │ └─────────────────────┘ │\n     └─────────────────────────┘\n              │ Playwright\n              ▼\n       ┌─────────────┐\n       │   Browser   │\n       │  (microapp  │\n       │   iframe)   │\n       └─────────────┘\n```\n\nPatterns in play:\n\n- **Composite + Builder** — `ScenarioRegistry.register()` composes microapp `ScenarioGroup`s into a flat key→scenario map.\n- **Strategy** — `ConfigSource` (file / env / CLI) lets each input format own its parsing in isolation; `RunnerConfigLoader` only knows merging.\n- **Command** — each CLI subcommand is a `CliCommand` class registered with Commander via a uniform `register(program, deps)` contract.\n- **Dependency injection** — every `BatchRunner`, `ScenarioRunner`, and `CliCommand` takes its collaborators via the constructor / register call, keeping unit tests honest.\n\n## Heap-doctor / smoked-suite integration\n\n| Library                      | Provides                                                          | Where wired                                                                                             |\n| ---------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |\n| `@elliemae/encw-heap-doctor` | `ComparisonReport` type, `AiEnhancer`, `renderComparisonMarkdown` | `lib/runner/scenarioRunner.ts`, `lib/runner/aiEnhancementStep.ts`, `lib/analysis/thresholdEvaluator.ts` |\n| `@elliemae/smoked-suite`     | `AuthManager`, `PageSetup`, `HeapMemoryProfiler` (base class)     | `lib/runner/scenarioRunner.ts`, `lib/browser/iframeHeapProfiler.ts`                                     |\n\nUpgrading either dependency is a matter of bumping the workspace version and re-running tests; the integration surface is small and concentrated in the files above.\n\n## How heap-doctor fits into a scenario run\n\nWhen the runner executes a scenario, heap-doctor is the engine that turns two raw heap snapshots into a structured leak report. Here is the full journey from browser to pass/fail result:\n\n```mermaid\nsequenceDiagram\n    participant SR as ScenarioRunner\n    participant IHP as IframeHeapProfiler\n    participant BR as Browser (CDP)\n    participant HD as HeapDoctor\n    participant TE as ThresholdEvaluator\n    participant AI as AiEnhancer\n\n    SR->>IHP: captureSnapshot('before')\n    IHP->>BR: CDP takeHeapSnapshot\n    BR-->>IHP: before.heapsnapshot\n\n    loop N times (default 3)\n        SR->>BR: scenario.action(page, frame)\n        SR->>BR: scenario.back(page)\n    end\n\n    SR->>BR: forceGarbageCollection()\n\n    SR->>IHP: captureSnapshot('after')\n    IHP->>BR: CDP takeHeapSnapshot\n    BR-->>IHP: after.heapsnapshot\n\n    SR->>IHP: compare('before', 'after', topN)\n    IHP->>HD: new HeapDoctor({ topN }).compare(before, after)\n    Note over HD: parses both snapshots<br/>diffs object graphs<br/>groups survivors by retainer chain\n    HD-->>IHP: ComparisonReport<br/>(delta, newLeakGroups[], leakResults[])\n    IHP-->>SR: ComparisonReport\n\n    SR->>TE: evaluate(report, thresholds)\n    Note over TE: retainedSizeDelta > maxRetainedSizeDeltaBytes?<br/>newLeakGroups.length > maxNewLeakGroups?\n    TE-->>SR: ThresholdResult { passed, reason }\n\n    opt ai.enabled = true\n        SR->>AI: enhance(leakResults[])\n        Note over AI: sends leaks to GenICE<br/>parses action-item suggestions\n        AI-->>SR: leakResults[] with aiSuggestions[] populated\n        SR->>SR: renderComparisonMarkdown(report)\n    end\n\n    SR->>SR: write <scenario-id>.md + junit.xml entry\n```\n\n**Plain-English summary of each step:**\n\n| Step                      | What happens                                                                                                                                                                                                                      | Who does it                                                                 |\n| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |\n| 1 — Before snapshot       | Chromium's CDP protocol dumps the iframe's V8 heap to a `.heapsnapshot` file. This is the baseline — every object alive _before_ the user flow.                                                                                   | `IframeHeapProfiler` (wraps smoked-suite's `HeapMemoryProfiler`)            |\n| 2 — Run scenario          | The scenario's `action()` function drives the microapp through a user flow (e.g. open a modal, save, close). It repeats N times so transient noise averages out.                                                                  | Your scenario code                                                          |\n| 3 — Force GC              | Chrome is told to run garbage collection. This evicts objects that were already unreachable — we only want to see objects that _should have been_ freed but weren't.                                                              | `HeapMemoryProfiler` via CDP                                                |\n| 4 — After snapshot        | A second heap dump is taken. Any object present here but not in the baseline, and still reachable, is a candidate for a leak.                                                                                                     | `IframeHeapProfiler`                                                        |\n| 5 — Compare (heap-doctor) | `HeapDoctor.compare()` parses both snapshot files, diffs the object graphs, groups surviving objects by their retainer chains, and returns a `ComparisonReport` with the retained-size delta and a list of suspected leak groups. | **`@elliemae/encw-heap-doctor`**                                            |\n| 6 — Threshold check       | `ThresholdEvaluator` reads `delta.retainedSizeDelta` and `delta.newLeakGroups.length` from the report and compares them against the scenario's configured limits (defaults: 10 MB / 0 new leak groups).                           | `ThresholdEvaluator`                                                        |\n| 7 — AI enhancement        | If `ai.enabled` is true, `AiEnhancer` sends the leak results to GenICE and writes specific action-item suggestions back into the report before rendering the final markdown.                                                      | **`@elliemae/encw-heap-doctor`** (`AiEnhancer`, `renderComparisonMarkdown`) |\n| 8 — Write report          | The markdown (with or without AI suggestions) is written to `<outputDir>/<scenario-id>.md`. A JUnit entry is appended for CI.                                                                                                     | `ScenarioRunner`                                                            |\n\n**Key insight:** heap-doctor only touches steps 5 and 7. Steps 1–4 capture the raw snapshots using the browser's built-in profiling API; step 6 is a simple numeric comparison. This means you can change thresholds or disable AI without touching the snapshot logic, and vice versa.\n\n## Output artefacts\n\nFor each scenario run, in `<outputDir>`:\n\n- `<scenario-id>.md` — markdown report with retained-size delta, top leak groups, and (when `ai.enabled`) an \"AI Suggested Fix\" section.\n- `snapshots/` — temporary heap snapshots, deleted after each scenario.\n\nFor each batch run:\n\n- `junit.xml` — JUnit XML aggregating per-scenario pass/fail for Jenkins.\n\n## Troubleshooting\n\n- **`Configuration error: Missing required parameter(s): ...`** — set the listed CLI flag(s) or env var(s).\n- **`Configuration error: Unknown env \"...\". Known envs in leak-runner.config.json: ...`** — the `--env <name>` (or `ENCW_ENV`) does not match an entry in the config's `envs` map. Add the entry or use one of the listed names.\n- **`Iframe not found for selector: ...`** — the microapp container changed; update `microappSelector` in the scenario.\n- **`Could not get content frame for selector: ...`** — the iframe is OOPIF. `IframeHeapProfiler` handles this case via CDP — verify your Chromium build is up-to-date.\n- **Playwright reports a missing browser** — run `pnpm --filter @elliemae/encw-leak-runner exec playwright install chromium` once on the agent.\n\n## Internal API reference\n\n### Tier 1 — Scenario authoring\n\n```typescript\nimport type {\n  MicroappLeakScenario,\n  EnvironmentParams,\n  RunnerOptions,\n  AiConfig,\n  RunnerConfig,\n  ScenarioGroup,\n  ScenarioEntry,\n} from '@elliemae/encw-leak-runner';\n```\n\n### Tier 2 — Embedding (unstable)\n\n```typescript\nimport {\n  ScenarioRegistry,\n  BatchRunner,\n  ScenarioRunner,\n  RunnerConfigLoader,\n  FileConfigSource,\n  EnvVarConfigSource,\n  CliOverrideConfigSource,\n  RequiredEnvParamsResolver,\n  MissingRequiredParamError,\n  UnknownEnvError,\n  ConsoleReporter,\n  JunitReporter,\n  IframeHeapProfiler,\n  ThresholdEvaluator,\n  buildProgram,\n  defaultDeps,\n} from '@elliemae/encw-leak-runner';\n```\n\nTier 2 has **no backwards-compatibility guarantee** until at least one external consumer exists. Coordinate with the owners before depending on it.\n","readmeFilename":"README.md"}