{"_id":"@code-zetta/ng-profiler","_rev":"14-39e67378b152306e64c30dc6650a0a51","name":"@code-zetta/ng-profiler","dist-tags":{"latest":"0.0.15"},"versions":{"0.0.1":{"name":"@code-zetta/ng-profiler","version":"0.0.1","_id":"@code-zetta/ng-profiler@0.0.1","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"25ff6cbd53f525cc9cdd02e685430300d0ec3b1a","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.1.tgz","fileCount":6,"integrity":"sha512-Qv230GvoMMQoSp4hZYTfmHMCyUTLe0tg+VW75mj+oD7IN/syh8X9ATRmkhhtLCxQSBVdCEMSopag0Opt+vi6lQ==","signatures":[{"sig":"MEUCIQD9O4yrxZ5Mg0/pQKr1PXnOWcm5Yp1qlSVf+MICtfqwggIgTnaX6YbvJJHitexxmGvwnpo47lpjHLZHKjdrnTChd6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239064},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"22c37d0a9804d72f18a7db1be1ba092d9ace9851","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.1_1756644174766_0.20679233096499217","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@code-zetta/ng-profiler","version":"0.0.2","_id":"@code-zetta/ng-profiler@0.0.2","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"f1308e15e91e9fb18978a1d83ca510298e245697","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.2.tgz","fileCount":6,"integrity":"sha512-CWS9h7PR2o3OwMsWuN5dBC8VGo11k5tuizwRwgihDVisQZvh5N1/1lfnQDS7sB1u4BzMRr+/gPffeRax6s6I6Q==","signatures":[{"sig":"MEUCIQD9ePPwex3QyEEGCwxN2EW0F7oW+PYmb2L+VdI96GNoqwIgEN6mSFxtYDwM//jdGXKKDArAWPftp94wpnU2Tp8UrfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239065},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"d792624d655f1e9c9f4fc1827e96c2ab515bd0d3","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.2_1756677119520_0.35555442323136477","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@code-zetta/ng-profiler","version":"0.0.3","_id":"@code-zetta/ng-profiler@0.0.3","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"3f8483a8fcb51cfd11480edcd8c21db1876efdb4","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.3.tgz","fileCount":6,"integrity":"sha512-dUEz3gF3DpPsPXEYYV83lNHx7DpWcrSwRMmo5Ki3cA7mxbvlk280sR3R+dJhtOYWHV+5JXHdTUwDWPOrP4IjhA==","signatures":[{"sig":"MEUCIBeVv/N6w2cxXzG94ftdb5GNp6lITeADYWmpIjjHdSkOAiEA5k+KQRKszhjeyszoRBuh8vfunXAxd9u7voWST0a+LDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239088},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"7dc04674618bd055601eaaedf3c788ae2b7dfb52","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"jspdf":"^2.5.1","@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.3_1756677821296_0.7939198811441301","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@code-zetta/ng-profiler","version":"0.0.4","_id":"@code-zetta/ng-profiler@0.0.4","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"e032ff9e81c2b787d145b1cfcfaba00cac1710e6","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.4.tgz","fileCount":6,"integrity":"sha512-kQTlw2JkW+jIen0YJyKL32EVeBp2ZhJfzunV9J8l2GFNSdxxA4qKMvbDjKhHb6oUERdIHfUUVz2Z6ed/JlCZPg==","signatures":[{"sig":"MEUCIB8fGtqjg/n+V59SIEyznnqQmBGop5ko4IH9rROETI0jAiEAzILD/RtdrsqY4C82Omp8NA17bS/CWt4aVfcAFLmjmiw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239782},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"8b98aa2bf1c4a76dd51b20667ad36860bab6d0bb","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.4_1756678120096_0.7025721502161029","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@code-zetta/ng-profiler","version":"0.0.5","_id":"@code-zetta/ng-profiler@0.0.5","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"8bba55e62dabab9fa109e015f02691ca13f4dea4","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.5.tgz","fileCount":6,"integrity":"sha512-HOv7H34YHc2KdEIuhCyZTtbYtMy60TGofz3y7GmdhpFabaN3yDlLtlaYgfXQxpXJn7WWQQv+puseQB4KJp25IQ==","signatures":[{"sig":"MEUCIH+FL+XYRexLOG7k1Pe/hAKA+lvKuV6e+KLNfwss7O4aAiEAjlrNxyQXBNwNTaPWNg70nobZim6hO5tUd0OSy7DN9YY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240169},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"47ab2d0801a3132c0bab56bb79c26c4574c6f03a","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.5_1756678500555_0.2389919268853915","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@code-zetta/ng-profiler","version":"0.0.6","_id":"@code-zetta/ng-profiler@0.0.6","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"d7063efd8a29c8fb360b0e477a74bc4053b68c2c","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.6.tgz","fileCount":6,"integrity":"sha512-Tf7qkWMS25Q1PuB3+GzNsUSEmXjb2D5udMd6AGlsXiT3iqwczR7uo5VewIcf3jJz1ceEi7UxVzKYYOQajJP85w==","signatures":[{"sig":"MEQCIHsmoVimAC1Q4pkkExILpwuaiWlA2kRF9Jgt2XPEIEKTAiBgcBYD6z1eDuqSmcsgJdkhoBjDYqzIqillw+4e8lnUYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239462},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"3396b302c920e98a8a6ea407b64e1e6d4bfd7f10","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"jspdf":"^2.5.1","tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.6_1756678752259_0.7245581966182422","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@code-zetta/ng-profiler","version":"0.0.7","_id":"@code-zetta/ng-profiler@0.0.7","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"eca2e52d4326fb4882d088b370867ef7a15080c4","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.7.tgz","fileCount":6,"integrity":"sha512-rWgLGw4IeLzSN3MB78T2OTDf9g/BbGa50BIASR4bfHF1mgJdftLidDJONxXRtGnHDg8ZkVxui47pTKx9SHSoNQ==","signatures":[{"sig":"MEUCIC6mC84T3A+v+xjS9trr++M1HL3AjvcmJoyH5E2KUXoVAiEAjhkLxzT6Ox9JdgBMSh9P3gVuBxbbsQdhTl9q/S+I7SA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239457},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"01244b8529079928436e89f3e76f33403833cc25","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"jspdf":"^2.5.1","tslib":"^2.3.0","html2canvas":"^1.4.1"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.7_1756678916353_0.4101658781046189","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@code-zetta/ng-profiler","version":"0.0.8","_id":"@code-zetta/ng-profiler@0.0.8","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"6e76fc53b61106cae9233b563ba0a269ce7ce420","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.8.tgz","fileCount":6,"integrity":"sha512-ac33zRg/KMmDSN+Hv1PR9k5Gonc5Ww8OT+8RItJi+uIiZHRO1PJs7vRxlh6LRY+ujOBMAywlOzEoEFm6K5w2Yg==","signatures":[{"sig":"MEUCIQCvD1ErgGyMMjyrPTUjr1q5p83EYUHFteeRSmCG3QuBtwIgDp/aXKxbXWxFp01MZAj1Xl7J63jhfvbwMN+mKYCEcUI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239173},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f3e526305ed049528c3d7f51b0e7d42f37f7520d","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"jspdf":"^2.5.1","@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.8_1756679123275_0.7091206508824586","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@code-zetta/ng-profiler","version":"0.0.9","_id":"@code-zetta/ng-profiler@0.0.9","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"8d481d355f3823ec8e8710d6766e6a2af8f4e7e6","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.9.tgz","fileCount":6,"integrity":"sha512-nL/0zF2WlkbSgqzYZBVdqQgdMtCbGfu5Os7IJNccyNWG8KCycMaoVBkCCsqXf5Bb9QWc0GGVe2GncgWSVjuzRA==","signatures":[{"sig":"MEYCIQDtV1c0dtIh/S1S7O0z0B5H2jckwT9URjoMLyMzhM0WRgIhAJz7FbSae2N7ooerOxbSUxmwgg8nypoR+OiucfWS/IIL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239944},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f3e526305ed049528c3d7f51b0e7d42f37f7520d","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"jspdf":"^2.5.1","@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.9_1756679262088_0.8023873483391912","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@code-zetta/ng-profiler","version":"0.0.10","_id":"@code-zetta/ng-profiler@0.0.10","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"1e21646398bfaf26dc47431e8db4165497bcc50f","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.10.tgz","fileCount":6,"integrity":"sha512-WkUGyTkmeBxgRa4f52r8E7+ukz4au8nHMzfAHXeBJm5GPuRUHa0F8Eo9pCMts5cenwWen2Gxve+w/pgAaYniFA==","signatures":[{"sig":"MEUCIQCq+v4HwRkVaesQ+GZfhen9BQVYEs7wEvpPmZ9Zhu169AIgadeENb9fadoIn3kfBWpDYf08832dF2N9Z76YbCcfGy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240157},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f3e526305ed049528c3d7f51b0e7d42f37f7520d","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"jspdf":"^2.5.1","@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.10_1756679401708_0.814090637830224","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@code-zetta/ng-profiler","version":"0.0.11","_id":"@code-zetta/ng-profiler@0.0.11","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"8596be23d20bc1b5db7e84ba555a7469e54db3c6","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.11.tgz","fileCount":6,"integrity":"sha512-WoyreZ7+dJKIUVb+hfaT1zRKt6fh65ozgY/i0Sx2cXpJgWw7ExLUn94Qn+jDYrdd5RA3A8mdyoUQ63XqBoe2XA==","signatures":[{"sig":"MEUCICwfdAs2l9W6K8SeVoTz3SOEI5VySymqcHSQPn1JXpk3AiEAoXIRwroBSjXBZ9ymZ0o1zN4PHrBfRWY6AMy4Ym26BaM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240186},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f3e526305ed049528c3d7f51b0e7d42f37f7520d","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"jspdf":"^2.5.1","html2canvas":"^1.4.1","@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.11_1756679559826_0.2596047706124829","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@code-zetta/ng-profiler","version":"0.0.12","_id":"@code-zetta/ng-profiler@0.0.12","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"7401616eddd563daea8940487041c2ac2f345b93","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.12.tgz","fileCount":6,"integrity":"sha512-LBCNlIwl20jPG8NN9jKzLJ4Yw0avkomwxsIIbklmk4WP5lnfZ0r5VP/PuJ4JW1sEgm5b21V2dULhteBEikn45w==","signatures":[{"sig":"MEYCIQDU2sY9CWFw/3CGRBZVTqTp4TLbHtlKKuT/AVk60PpLoQIhAPPnbz7Wxoa5l3EE+Bnqg2zEDVTA+JkrYEaYeUts3Rm1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240270},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f3e526305ed049528c3d7f51b0e7d42f37f7520d","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"jspdf":"^2.5.1","html2canvas":"^1.4.1","@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.12_1756680667571_0.9847898984238319","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@code-zetta/ng-profiler","version":"0.0.13","_id":"@code-zetta/ng-profiler@0.0.13","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"dist":{"shasum":"f4ee1262c0142037a97be5eb7709ec7c5477c9ff","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.13.tgz","fileCount":6,"integrity":"sha512-15HVFAbcvXiwcfm7EIfvJXFl9UUGJpBDqygvmgmeE6VkRtuFux3EqQU66MuLJRJgGbZQrcKRrE8nzlTIsMJ70w==","signatures":[{"sig":"MEQCIHbZR4UN3RrtUHMXdfsR5YoOXWnBaAUmgBBTb/flWcFXAiBblC7giHJj0Mo32q+HD0p1NV1FUn7prkFDX4TL8A9RuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242211},"module":"fesm2022/code-zetta-ng-profiler.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f3e526305ed049528c3d7f51b0e7d42f37f7520d","typings":"index.d.ts","_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"_npmVersion":"10.8.2","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"jspdf":"^2.5.1","html2canvas":"^1.4.1","@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-profiler_0.0.13_1756680889905_0.04862232526880672","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@code-zetta/ng-profiler","version":"0.0.15","description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","keywords":["angular","profiler","performance","monitoring","debugging","development","overlay","heatmap","render-counting","frame-timing","zone.js","zoneless","change-detection","performance-analysis","angular-tools","dev-tools","performance-profiler","angular-performance","real-time-monitoring","component-rendering","angular-debugging","performance-metrics","angular-development","performance-overlay","angular-profiler"],"peerDependencies":{"@angular/common":"^20.2.0","@angular/core":"^20.2.0","jspdf":"^2.5.1 || ^3.0.0","html2canvas":"^1.4.1 || ^1.5.0"},"dependencies":{"tslib":"^2.3.0"},"sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/CodeZettaa/ng-profiler.git"},"bugs":{"url":"https://github.com/CodeZettaa/ng-profiler/issues"},"homepage":"https://github.com/CodeZettaa/ng-profiler#readme","module":"fesm2022/code-zetta-ng-profiler.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/code-zetta-ng-profiler.mjs"}},"_id":"@code-zetta/ng-profiler@0.0.15","gitHead":"f3e526305ed049528c3d7f51b0e7d42f37f7520d","_nodeVersion":"20.19.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ENluvOGC0fVowKS67yCD6M28U3M9G+cj7OcuLKn6ArPeVOENlLlmLlVEs1PeObbV0hyu1ErMYnuwFZsVdQO94g==","shasum":"2036c41f11a33cb4bd43a5352df40c174b4168ac","tarball":"https://registry.npmjs.org/@code-zetta/ng-profiler/-/ng-profiler-0.0.15.tgz","fileCount":6,"unpackedSize":249685,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDvye2Ge4iet/5aRJDZ1PM8oLy7xjA9W4YdgesX8ro7jQIgPH+KjmnGYs2W/ICpns4vMLmvOlHENNP9RgOk6ij47OU="}]},"_npmUser":{"name":"code-zetta","email":"codezettaa@gmail.com"},"directories":{},"maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ng-profiler_0.0.15_1756681775322_0.5230488950003793"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-31T12:42:54.671Z","modified":"2025-08-31T23:09:35.696Z","0.0.1":"2025-08-31T12:42:54.974Z","0.0.2":"2025-08-31T21:51:59.710Z","0.0.3":"2025-08-31T22:03:41.509Z","0.0.4":"2025-08-31T22:08:40.285Z","0.0.5":"2025-08-31T22:15:00.740Z","0.0.6":"2025-08-31T22:19:12.500Z","0.0.7":"2025-08-31T22:21:56.551Z","0.0.8":"2025-08-31T22:25:23.464Z","0.0.9":"2025-08-31T22:27:42.264Z","0.0.10":"2025-08-31T22:30:01.940Z","0.0.11":"2025-08-31T22:32:40.016Z","0.0.12":"2025-08-31T22:51:07.777Z","0.0.13":"2025-08-31T22:54:50.113Z","0.0.15":"2025-08-31T23:09:35.506Z"},"description":"A tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications","maintainers":[{"name":"code-zetta","email":"codezettaa@gmail.com"}],"readme":"# @codezetta/ng-profiler\n\nA tiny in-app profiler overlay for Angular that works in both zoned and zoneless applications. It helps developers quickly see approximate render counts and frame timings without leaving the app.\n\n## 🎯 Purpose\n\nShow an overlay inside the Angular app (top-right corner) that displays:\n\n- Last tick/frame duration (ms) and average duration\n- Top 10 components/elements by render count (approximate)\n- Heatmap outlines on DOM nodes that render too often (green → yellow → red)\n- Auto-detect Zone.js and adapt measurement accordingly\n\n## ✨ Features\n\n### Overlay Component\n- Toggle with hotkey (default `Ctrl+Shift+P`)\n- Shows last/average tick time with color-coded warnings\n- List of top 10 elements/components by render count\n- Snapshot button → downloads JSON with current stats\n- Reset button to clear all statistics\n\n### Heatmap\n- Adds `data-ng-profiler=\"low|medium|high\"` attribute to DOM elements\n- CSS outlines with severity indicators:\n  - 🟢 Green: Low render count (6-20)\n  - 🟡 Yellow: Medium render count (21-50)\n  - 🔴 Red: High render count (50+)\n\n### Measurement\n- **Zoned apps**: Patches `ApplicationRef.tick()` to measure each change detection cycle\n- **Zoneless apps**: Uses `requestAnimationFrame` deltas + `PerformanceObserver('longtask')`\n\n### Dev-only\n- Disabled automatically in production unless forced\n- Configurable thresholds and behavior\n\n## 🚀 Installation\n\n```bash\nnpm install @codezetta/ng-profiler\n```\n\n## 📦 Setup\n\n### Option 1: NgModule Approach (Traditional)\n\n#### 1. Import the Module\n\n```typescript\nimport { NgProfilerModule } from '@codezetta/ng-profiler';\n\n@NgModule({\n  imports: [\n    NgProfilerModule.forRoot({\n      // Optional configuration\n      enableInProduction: false,\n      hotkey: 'Ctrl+Shift+P',\n      position: 'top-right',\n      renderCountThreshold: 10,\n      frameDurationThreshold: 16.67,\n      enableHeatmap: true,\n      enableMeasurement: true\n    })\n  ]\n})\nexport class AppModule { }\n```\n\n#### 2. Add the Overlay Component\n\nAdd the overlay component to your app component template:\n\n```html\n<!-- app.component.html -->\n<codezetta-ng-profiler-overlay></codezetta-ng-profiler-overlay>\n```\n\n#### 3. Initialize the Profiler\n\n```typescript\nimport { NgProfilerService } from '@codezetta/ng-profiler';\n\n@Component({...})\nexport class AppComponent implements OnInit {\n  constructor(private profilerService: NgProfilerService) {}\n\n  ngOnInit() {\n    this.profilerService.initialize();\n  }\n}\n```\n\n### Option 2: Standalone Components (Modern Angular)\n\n#### 1. Configure Providers\n\n```typescript\n// app.config.ts\nimport { ApplicationConfig } from '@angular/core';\nimport { provideNgProfiler } from '@codezetta/ng-profiler';\n\nexport const appConfig: ApplicationConfig = {\n  providers: [\n    // ... other providers\n    ...provideNgProfiler({\n      enableInProduction: false,\n      hotkey: 'Ctrl+Shift+P',\n      position: 'top-right',\n      enableHeatmap: true,\n      enableMeasurement: true\n    })\n  ]\n};\n```\n\n#### 2. Import Components in Your App\n\n```typescript\n// app.component.ts\nimport { Component, OnInit } from '@angular/core';\nimport { NgProfilerOverlayComponent, NgProfilerDirective } from '@codezetta/ng-profiler';\nimport { NgProfilerService } from '@codezetta/ng-profiler';\n\n@Component({\n  selector: 'app-root',\n  standalone: true,\n  imports: [\n    NgProfilerOverlayComponent,\n    NgProfilerDirective\n  ],\n  template: `\n    <div>Your app content</div>\n    <codezetta-ng-profiler-overlay></codezetta-ng-profiler-overlay>\n  `\n})\nexport class AppComponent implements OnInit {\n  constructor(private profilerService: NgProfilerService) {}\n\n  ngOnInit() {\n    this.profilerService.initialize();\n  }\n}\n```\n\n### 4. Track Components (Both Approaches)\n\nAdd the directive to components you want to track:\n\n```html\n<!-- Track with default name -->\n<div codezettaNgProfiler>\n  <!-- Your component content -->\n</div>\n\n<!-- Track with custom name -->\n<div codezettaNgProfiler=\"my-custom-component\">\n  <!-- Your component content -->\n</div>\n```\n\n### 5. Include CSS (Optional)\n\nFor heatmap styles, include the CSS in your global styles:\n\n```typescript\n// angular.json\n{\n  \"styles\": [\n    \"node_modules/@codezetta/ng-profiler/styles/ng-profiler.css\"\n  ]\n}\n```\n\nOr import in your global styles:\n\n```css\n/* styles.css */\n@import '@codezetta/ng-profiler/styles/ng-profiler.css';\n```\n\n## ⚙️ Configuration\n\n```typescript\ninterface NgProfilerConfig {\n  /** Enable profiler in production (default: false) */\n  enableInProduction?: boolean;\n  \n  /** Hotkey to toggle overlay (default: 'Ctrl+Shift+P') */\n  hotkey?: string;\n  \n  /** Position of overlay (default: 'top-right') */\n  position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n  \n  /** Threshold for render count warnings (default: 10) */\n  renderCountThreshold?: number;\n  \n  /** Threshold for frame duration warnings in ms (default: 16.67) */\n  frameDurationThreshold?: number;\n  \n  /** Enable heatmap outlines (default: true) */\n  enableHeatmap?: boolean;\n  \n  /** Enable performance measurement (default: true) */\n  enableMeasurement?: boolean;\n}\n```\n\n## 🎮 Usage\n\n### Toggle Overlay\n- Press `Ctrl+Shift+P` (or your configured hotkey)\n- Click the close button (✕) in the overlay\n- Press `Escape` key\n\n### Export Statistics\nClick the 📊 button in the overlay to download a JSON file with current statistics.\n\n### Reset Statistics\nClick the 🔄 button in the overlay to clear all collected data.\n\n## 🔍 How It Works\n\n### Zone Detection\nThe profiler automatically detects if Zone.js is present and adapts its measurement strategy:\n\n- **Zoned**: Patches `ApplicationRef.tick()` to measure change detection cycles\n- **Zoneless**: Uses `requestAnimationFrame` timing and `PerformanceObserver` for long tasks\n\n### Render Counting\nThe `codezettaNgProfiler` directive uses `ngDoCheck` and `ngAfterViewChecked` to increment render counts for tracked components.\n\n### Heatmap Generation\nComponents with high render counts get `data-ng-profiler` attributes that trigger CSS outlines:\n- Low: Green outline\n- Medium: Yellow outline  \n- High: Red outline with pulsing animation\n\n## 📊 Performance Impact\n\nThe profiler is designed to have minimal performance impact:\n- Measurements are batched and averaged\n- Heatmap updates are throttled\n- All profiling is disabled in production by default\n- Memory usage is limited with configurable history size\n\n## 🛠️ Development\n\n### Building the Library\n\n```bash\nng build ng-profiler\n```\n\n### Running Tests\n\n```bash\nng test ng-profiler\n```\n\n### Publishing\n\n```bash\nnpm publish --access public\n```\n\n## 📝 License\n\nMIT\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n","readmeFilename":"README.md","homepage":"https://github.com/CodeZettaa/ng-profiler#readme","keywords":["angular","profiler","performance","monitoring","debugging","development","overlay","heatmap","render-counting","frame-timing","zone.js","zoneless","change-detection","performance-analysis","angular-tools","dev-tools","performance-profiler","angular-performance","real-time-monitoring","component-rendering","angular-debugging","performance-metrics","angular-development","performance-overlay","angular-profiler"],"repository":{"type":"git","url":"git+https://github.com/CodeZettaa/ng-profiler.git"},"bugs":{"url":"https://github.com/CodeZettaa/ng-profiler/issues"}}