feat: bundle-stats plugin poc implementation
Bundle Stats Plugin PoC Implementation
Fine-grained bundle size tracking for your builds This plugin enables advanced bundle stats capabilities to avoiding unwanted size increase.
π Related Issue
π #1015 β Bundle Stats Plugin Architecture Discussion
NOTE:
This PoC PR serves as an initial implementation to validate the proposed architecture and core functionality.
The final implementation will be delivered in smaller, focused PRs to ensure clarity, better review ability, and incremental improvements.
Examples
- https://github.com/code-pushup/cli/pull/1024#issuecomment-3105307512
Features
Legend:
- Tested - π§ͺ
- Documented/Planned - π
- Implemented - π©βπ»
Todos:
- [ ] use generic type
PluginArtefactOptionsto models - [x] merge plugin and audit level configs. π π©βπ» π§ͺ
- [x] π Stats Unification - π π©βπ» π§ͺ
- [x] esbuild - π π©βπ» π§ͺ
- [ ] webpack - π
- [ ] rsbuild - π
- [ ] vite - π
- [ ] roldown - π
- [x] π― Selection - π π©βπ» π§ͺ
- [x] strategy - π π©βπ» π§ͺ
- [x] π Scoring - π π©βπ» π§ͺ
- [x] Total Size - π π©βπ» π§ͺ
- [x] Penalty - π π©βπ» π§ͺ
- [x] Too small - π π©βπ» π§ͺ
- [x] Too big - π π©βπ» π§ͺ
- [x] Blacklisted - π π©βπ» π§ͺ
- [ ] π§ Insights Table - π π©βπ»
- [ ] Good strategy for accurate "byte picking" - π π©βπ»
- [ ] Grouping - π π©βπ»
- [ ] Remaining Bytes - π π©βπ»
- [ ] π² Artefact Tree - π π©βπ»
- [ ] Pruning - π π©βπ»
- [ ] Grouping - π π©βπ»
- [ ] Formatting - π π©βπ»
β MVP State
The final implementation is delivered in the following PR's:
- [ ] utils
- [ ] runner
- [ ] unify logic
- [ ] selection
- [ ] scoring
- [ ] plugin
- [ ] docs
- [ ] e2e
- [ ] runner optional
- [ ] artefact tree
- [ ] insights table
Code PushUp
π€¨ Code PushUp report has both improvements and regressions β compared current commit 34fcb41c476885ad9a959b81fda70ea7cac2518e with previous commit 7daf2012cfebaefca2c6c9e51472872d38f56040.
π΅οΈ See full comparison in Code PushUp portal π
π·οΈ Categories
| π·οΈ Category | β Previous score | β Current score | π Score change |
|---|---|---|---|
| Code style | π’ 100 | π‘ 85 | |
| Type Safety | π’ 100 | π‘ 89 | |
| Bug prevention | π’ 100 | π‘ 90 | |
| Documentation | π΄ 23 | π΄ 15 | |
| Code coverage | π’ 90 | π‘ 87 | |
| Performance | π΄ 31 | π΄ 29 | |
| Updates | π‘ 77 | π‘ 77 | |
| Security | π΄ 0 | π΄ 0 | β |
| Accessibility | π’ 92 | π’ 92 | β |
| Best Practices | π’ 100 | π’ 100 | β |
| SEO | π‘ 61 | π‘ 61 | β |
| Miscellaneous | π’ 100 | π’ 100 | β |
π 1 group improved, π 12 groups regressed, π 4 audits improved, π 62 audits regressed, 14 audits changed without impacting score
ποΈ Groups
| π Plugin | ποΈ Group | β Previous score | β Current score | π Score change |
|---|---|---|---|---|
| ESLint | No Mutations (functional) | π’ 100 | π΄ 0 | |
| ESLint | No Statements (functional) | π’ 100 | π΄ 0 | |
| ESLint | Stylistic (functional) | π’ 100 | π΄ 0 | |
| TypeScript | Problems | π’ 100 | π‘ 67 | |
| ESLint | Helpful warnings (import) | π’ 100 | π‘ 75 | |
| ESLint | Style guide (import) | π’ 100 | π‘ 80 | |
| ESLint | Suggestions | π’ 100 | π‘ 85 | |
| ESLint | Static analysis (import) | π’ 100 | π‘ 88 | |
| JSDoc coverage | Documentation coverage | π΄ 23 | π΄ 15 | |
| ESLint | Problems | π’ 100 | π’ 93 | |
| Code coverage | Code coverage metrics | π’ 90 | π‘ 87 | |
| Lighthouse | Performance | π΄ 31 | π΄ 29 | |
| JS Packages | NPM outdated dependencies | π‘ 77 | π‘ 77 |
8 other groups are unchanged.
π‘οΈ Audits
| π Plugin | π‘οΈ Audit | π Previous value | π Current value | π Value change |
|---|---|---|---|---|
| ESLint | Enforce treating data as immutable. | π© passed | π₯ 109 errors | |
| ESLint | Disallow imperative loops. | π© passed | π₯ 70 warnings | |
| ESLint | Enforce consistent brace style for all control statements | π© passed | π₯ 61 warnings | |
| ESLint | Enforce the style of numeric separators by correctly grouping digits. | π© passed | π₯ 56 warnings | |
| ESLint | Disallow mutable variables. | π© passed | π₯ 38 warnings | |
| ESLint | Disallow unused variables | π© passed | π₯ 24 errors | |
| ESLint | Enforce type definitions to consistently use either interface or type |
π© passed | π₯ 19 warnings | |
| ESLint | Enforce a maximum number of lines of code in a function | π© passed | π₯ 16 warnings | |
| ESLint | Disallow non-null assertions using the ! postfix operator |
π© passed | π₯ 15 errors | |
| ESLint | Enforce a maximum depth that blocks can be nested | π© passed | π₯ 12 warnings | |
| ESLint | enforce the style of file extensions in import declarations |
π© passed | π₯ 12 errors | |
| ESLint | Disallow the use of console |
π© passed | π₯ 10 warnings | |
| ESLint | Disallow the any type |
π© passed | π₯ 7 errors | |
| ESLint | Disallow duplicate module imports | π© passed | π₯ 7 warnings | |
| ESLint | Forbid repeated import of the same module in multiple places. | π© passed | π₯ 6 warnings | |
| ESLint | Require consistently using either T[] or Array<T> for arrays |
π© passed | π₯ 6 warnings | |
| ESLint | Forbid any invalid exports, i.e. re-export of the same name. | π© passed | π₯ 5 errors | |
| ESLint | Collection and array contents should be used | π© passed | π₯ 5 errors | |
| ESLint | Checks dependencies in project's package.json for version mismatches | π© passed | π₯ 5 errors | |
| ESLint | Collapsible "if" statements should be merged | π© passed | π₯ 4 warnings | |
| ESLint | Do not use a for loop that can be replaced with a for-of loop. |
π© passed | π₯ 4 warnings | |
| ESLint | Disallow if statements as the only statement in if blocks without else. |
π© passed | π₯ 4 warnings | |
| ESLint | Disallow negated conditions. | π© passed | π₯ 4 warnings | |
| ESLint | Disallow useless fallback when spreading in object literals. | π© passed | π₯ 4 warnings | |
| ESLint | Require braces around arrow function bodies | π© passed | π₯ 4 warnings | |
| ESLint | Enforce a maximum number of lines per file | π© passed | π₯ 4 warnings | |
| ESLint | Disallow number literals with zero fractions or dangling dots. | π© passed | π₯ 3 warnings | |
| ESLint | Enforce a maximum cyclomatic complexity allowed in a program | π© passed | π₯ 3 warnings | |
| ESLint | Require for-in loops to include an if statement |
π© passed | π₯ 3 errors | |
| ESLint | Enforce using a particular method signature syntax | π© passed | π₯ 3 warnings | |
| ESLint | Enforce consistent usage of type assertions | π© passed | π₯ 3 errors | |
| ESLint | Prefer property signatures over method signatures. | π© passed | π₯ 3 warnings | |
| ESLint | Replaces x => f(x) with just f. |
π© passed | π₯ 3 warnings | |
| ESLint | disallow conditional expects | π© passed | π₯ 3 warnings | |
| TypeScript | Semantic errors | π© passed | π₯ 2 errors | |
| ESLint | Require const declarations for variables that are never reassigned after declared |
π© passed | π₯ 2 errors | |
| ESLint | Enforce explicitly comparing the length or size property of a value. |
π© passed | π₯ 2 warnings | |
| ESLint | Enforce combining multiple Array#push() into one call. |
π© passed | π₯ 2 warnings | |
| ESLint | Prefer .at() method for index access and String#charAt(). |
π© passed | π₯ 2 warnings | |
| ESLint | Enforce throwing TypeError in type checking conditions. |
π© passed | π₯ 2 warnings | |
| ESLint | Require or disallow method and property shorthand syntax for object literals | π© passed | π₯ 2 warnings | |
| ESLint | Require template literals instead of string concatenation | π© passed | π₯ 2 warnings | |
| ESLint | Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers | π© passed | π₯ 2 warnings | |
| ESLint | Forbid a module from importing a module with a dependency path back to itself. | π© passed | π₯ 2 errors | |
| ESLint | Functions should not have identical implementations | π© passed | π₯ 1 error | |
| ESLint | Return of boolean expressions should not be wrapped into an "if-then-else" statement | π© passed | π₯ 1 warning | |
| ESLint | Disallow empty files. | π© passed | π₯ 1 warning | |
| ESLint | Prefer Array#{indexOf,lastIndexOf}() over Array#{findIndex,findLastIndex}() when looking for the index of an item. |
π© passed | π₯ 1 warning | |
| ESLint | Disallow reassigning function parameters |
π© passed | π₯ 1 error | |
| ESLint | Disallow initializing variables to undefined |
π© passed | π₯ 1 warning | |
| ESLint | Disallow renaming import, export, and destructured assignments to the same name | π© passed | π₯ 1 warning | |
| ESLint | Enforce a maximum number of parameters in function definitions | π© passed | π₯ 1 warning | |
| ESLint | Disallow variable declarations from shadowing variables declared in the outer scope | π© passed | π₯ 1 warning | |
| ESLint | disallow unsupported Node.js built-in APIs on the specified version | π© passed | π₯ 1 error | |
| ESLint | Checks dependencies in project's package.json for version mismatches | π© passed | π₯ 1 error | |
| JSDoc coverage | Interfaces coverage | π© 0 undocumented interfaces | π₯ 18 undocumented interfaces | |
| Lighthouse | Avoids enormous network payloads | π¨ Total size was 2,706Β KiB | π© Total size was 2,662Β KiB | |
| Lighthouse | First Contentful Paint | π₯ 3.2Β s | π₯ 3.6Β s | |
| Code coverage | Line coverage | π¨ 86.8 % | π¨ 77 % | |
| JSDoc coverage | Functions coverage | π₯ 516 undocumented functions | π₯ 576 undocumented functions | |
| Lighthouse | Speed Index | π₯ 8.6Β s | π₯ 9.3Β s | |
| Code coverage | Function coverage | π© 93.1 % | π¨ 89.2 % | |
| JSDoc coverage | Variables coverage | π₯ 224 undocumented variables | π₯ 239 undocumented variables | |
| JSDoc coverage | Types coverage | π₯ 235 undocumented types | π₯ 305 undocumented types | |
| JS Packages | Outdated NPM dev dependencies. | π¨ 55 outdated package versions (30 major, 21 minor, 4 patch) | π¨ 56 outdated package versions (30 major, 21 minor, 5 patch) | |
| Code coverage | Branch coverage | π¨ 85 % | π¨ 84.6 % | |
| Lighthouse | Uses efficient cache policy on static assets | π¨ 31 resources found | π¨ 31 resources found | |
| Lighthouse | Metrics | π© 100% | π© 100% | |
| Lighthouse | Time to Interactive | π₯ 19.6Β s | π₯ 20.4Β s | |
| Lighthouse | JavaScript execution time | π₯ 10.7Β s | π₯ 10.0Β s | |
| Lighthouse | Total Blocking Time | π₯ 6,870Β ms | π₯ 7,270Β ms | |
| Lighthouse | Largest Contentful Paint | π₯ 13.4Β s | π₯ 13.0Β s | |
| Lighthouse | Minimizes main-thread work | π₯ 21.5Β s | π₯ 21.2Β s | |
| Lighthouse | Server Backend Latencies | π© 1,570Β ms | π© 1,220Β ms | |
| Lighthouse | Max Potential First Input Delay | π₯ 2,360Β ms | π₯ 2,220Β ms | |
| Lighthouse | Initial server response time was short | π© Root document took 520Β ms | π© Root document took 460Β ms | |
| Lighthouse | Network Round Trip Times | π© 70Β ms | π© 110Β ms | |
| Lighthouse | Reduce unused CSS | π₯ Potential savings of 102Β KiB | π₯ Potential savings of 102Β KiB | |
| Lighthouse | Reduce unused JavaScript | π₯ Potential savings of 549Β KiB | π₯ Potential savings of 549Β KiB | |
| Lighthouse | Remove duplicate modules in JavaScript bundles | π₯ Potential savings of 92Β KiB | π₯ Potential savings of 103Β KiB |
530 other audits are unchanged.
Code PushUp Report
π‘οΈ Audits
π₯ Initial Bundle Size (Bundle Stats)
π₯ 1.4 MB (77 files) (score: 0)
| Group | Modules | Size |
|---|---|---|
| π °οΈ @angular | 61 | 550.29 kB |
| π£ vanilla | 323 | 310.84 kB |
| π« Theme Park Package | 48 | 185.31 kB |
| π¦ lodash-es | 364 | 49.55 kB |
| π£ Design System Package | 7 | 49.4 kB |
| π« Blacklist | 2 | 49.15 kB |
| π¦ rxjs | 166 | 35.19 kB |
| π °οΈ @ngrx | 2 | 19.43 kB |
| π¦ @floating-ui | 4 | 18.92 kB |
| π °οΈ ngx-toastr | 1 | 18.79 kB |
| π °οΈ ngx-float-ui | 1 | 14.83 kB |
| π£ loaders-lib | 10 | 14.68 kB |
| π °οΈ @ngx-translate | 1 | 10.77 kB |
| π¦ @rtms | 1 | 9.44 kB |
| π£ payments | 14 | 7.93 kB |
| π£ sports | 40 | 6.83 kB |
| π£ host-app | 11 | 6.57 kB |
| π¦ @push-based | 1 | 5.66 kB |
| π °οΈ ngx-lottie | 1 | 4.72 kB |
| π °οΈ @rx-angular | 3 | 1.64 kB |
| π£ oxygen | 3 | 811 B |
| π£ casino | 1 | 129 B |
| π Rest | - | 57.65 kB |
initial-bundle-size
ποΈ initial-bundle-size 1.4 MB 1068 21
βββ π chunk-XMJGD64P.js 594.28 kB 706 modules
β βββ π£ vanilla 300.55 kB 312 modules
β βββ π
°οΈ @angular/router 75.64 kB 3 modules
β βββ π¦ lodash-es 49.55 kB 364 modules
β βββ π£ Design System Package 49.4 kB 7 modules
β βββ π
°οΈ @angular/common 22 kB 2 modules
β βββ π¦ @floating-ui 18.92 kB 4 modules
β βββ π
°οΈ node_modules/ngx-toastr/fesm2022/ngx-toastr.mjs 18.79 kB
β βββ π
°οΈ @angular/platform-browser 17.32 kB 3 modules
β βββ π
°οΈ node_modules/ngx-float-ui/fesm2022/ngx-float-ui.mjs 14.83 kB
β βββ π¦ node_modules/@rtms/client/fesm2015/rtms-client.js 9.44 kB
β βββ π¦ node_modules/@push-based/ngx...vg/fesm2022/ngx-fast-svg.mjs 5.66 kB
β βββ π
°οΈ node_modules/@angular/animations/fesm2022/animations.mjs 1.9 kB
β βββ π
°οΈ @rx-angular/cdk 1.64 kB 3 modules
β βββ π
°οΈ node_modules/@angular/core/fesm2022/rxjs-interop.mjs 1.1 kB
β βββ π
°οΈ node_modules/@angular/cdk/fesm2022/layout.mjs 1.03 kB
β βββ π node_modules/js-levenshtein/index.js 818 B
βββ π chunk-FWSPTPCX.js 239.75 kB 171 modules
β βββ π
°οΈ @angular/core 190.5 kB 4 modules
β βββ π¦ rxjs 35.19 kB 166 modules
β βββ π node_modules/tslib/tslib.es6.mjs 11.07 kB
βββ π chunk-JCE5E6ZQ.js 117.05 kB 35 modules
β βββ π
°οΈ @angular/cdk 98.28 kB 33 modules
β βββ π
°οΈ @angular/material 17.4 kB 2 modules
βββ π chunk-A7WNARMW.js 3 modules
β βββ π
°οΈ @angular/animations 65.9 kB 3 modules
βββ π chunk-MTPOUXPC.js 6 modules
β βββ π
°οΈ @angular/common 55.67 kB 6 modules
βββ π chunk-IGE4HHZ4.js 2 modules
β βββ π« Blacklist 49.15 kB 2 modules
βββ π main-BDM3RIPG.js 27.13 kB 56 modules
β βββ π£ loaders-lib 13.46 kB 8 modules
β βββ π£ host-app 6.57 kB 11 modules
β βββ π£ sports 3.79 kB 33 modules
β βββ π£ payments 1.14 kB 2 modules
β βββ π£ packages/oxygen/libs/coral/d...l-sports-feature.provider.ts 287 B
β βββ π£ packages/casino/app/src/lottie-options.provide.ts 129 B
βββ π styles-RH2YPOUA.css
β βββ π« packages/themepark/themes/wh...nts/product-menu/styles.scss 23.47 kB
βββ π chunk-V5NKDI5C.js
β βββ π node_modules/hammerjs/hammer.js 19.97 kB
βββ π chunk-ROQZT5LZ.js
β βββ π
°οΈ node_modules/@ngrx/store/fesm2022/ngrx-store.mjs 14.31 kB
βββ π styles-G43FGKUQ.css
β βββ π« packages/themepark/themes/wh...ts/message-panel/styles.scss 14.03 kB
βββ π styles-Z43PANIN.css
β βββ π« packages/themepark/themes/wh...omponents/footer/styles.scss 12.33 kB
βββ π chunk-52G5QY5E.js
β βββ π
°οΈ node_modules/@ngx-translate/...m2022/ngx-translate-core.mjs 10.77 kB
βββ π styles-VHWOE7I3.css
β βββ π« packages/themepark/themes/wh...components/inbox/styles.scss 10.54 kB
βββ π styles-QWZT5OTV.css
β βββ π« packages/themepark/themes/wh.../rtms/rtms-layer/styles.scss 9.92 kB
βββ π styles-AXDDHPZ4.css
β βββ π« packages/themepark/themes/wh...ents/date-picker/styles.scss 9.88 kB
βββ π chunk-RY2Y6BTD.js 7 modules
β βββ π£ vanilla 8.81 kB 7 modules
βββ π styles-QLHNKCO4.css
β βββ π« packages/themepark/themes/wh...omponents/header/styles.scss 8.11 kB
βββ π styles-BVMEFQ5G.css
β βββ π« packages/themepark/themes/wh...s/session-limits/styles.scss 7.67 kB
βββ π chunk-E4YPOLYH.js 12 modules
β βββ π£ payments 6.79 kB 12 modules
βββ π ... 118 kB 59 files
Issues
| Severity | Message | Source file | Line(s) |
|---|---|---|---|
| π¨ error | πΊ chunk-FWSPTPCX.js is 239.75 kB (> 97.66 kB) |
chunk-FWSPTPCX.js |
|
| π¨ error | πΊ chunk-JCE5E6ZQ.js is 117.05 kB (> 97.66 kB) |
chunk-JCE5E6ZQ.js |
|
| π¨ error | πΊ chunk-XMJGD64P.js is 594.28 kB (> 97.66 kB) |
chunk-XMJGD64P.js |
|
| β οΈ warning | π» styles-E25WI4JT.css is 68 B (< 100 B) |
styles-E25WI4JT.css |
Monitors critical loading performance, enforces size budgets, detects bloat sources, and prevents slow startup times in main application bundles.
βοΈ Configuration
-
Scoring:
- Artefact Size: >
100 B& <97.66 kB; weight:0 - Total Size: >
976.56 kBthreshold
- Artefact Size: >
-
Issues:
- Warning: <
97.66 kB- Size acceptable but monitor growth - Error: >
97.66 kB- Exceeds size budget
- Warning: <
-
Table:
- Groups: Detail listing of π«Blacklist, π£Design System Package, π«Theme Park Package, π³Payments Package, π°Casino Package
- Rest: Other contributing modules
-
Tree:
- Groups: Same as table
- Pruning:
20 children,2 depth - Rest: Remaining items grouped for clarity
ποΈ All Files (Bundle Stats)
π© 109.03 MB (4557 files) (score: 100)
| Group | Modules | Size |
|---|---|---|
| π Node Modules | 1109 | 30.12 MB |
| π£ oxygen | 4723 | 26.97 MB |
| π£ myaccount | 2275 | 12.58 MB |
| π£ sports | 3939 | 7.63 MB |
| π£ payments | 807 | 7.36 MB |
| π£ poker | 1951 | 3.48 MB |
| π£ casino | 712 | 3.39 MB |
| π£ promo | 707 | 2.52 MB |
| π£ vanilla | 1340 | 1.83 MB |
| π °οΈ Angular | 185 | 1.71 MB |
| π£ bingo | 208 | 871.86 kB |
| π£ Design System Package | 109 | 869.97 kB |
| π« Blacklist | 224 | 750.22 kB |
| π£ rewards-hub | 63 | 236.11 kB |
| π£ mokabingo-app | 70 | 211.98 kB |
| π« Theme Park Package | 49 | 185.82 kB |
| π£ engagement | 46 | 130.41 kB |
| π£ lottery | 40 | 54.01 kB |
| π£ horseracing | 38 | 53.71 kB |
| π£ global-search | 12 | 19.09 kB |
| π£ loaders-lib | 10 | 14.68 kB |
| π£ geo-coordinator-lib | 8 | 12.29 kB |
| π£ host-app | 13 | 6.79 kB |
| π Rest | - | 8.1 MB |
Analyzes complete bundle composition, identifies architectural patterns, tracks package distribution, and reveals size contributors across all bundle artifacts.
βοΈ Configuration
-
Issues:
- Info:
0violations - Analysis only, no penalties
- Info:
-
Table:
- Groups: Detail listing of π«Blacklist, π£Design System Package, π«Theme Park Package, π °οΈAngular, π³Payments Package
- Rest: Other contributing modules
π °οΈ Angular Ecosystem (Bundle Stats)
π© 15.42 MB (501 files) (score: 100)
| Group | Modules | Size |
|---|---|---|
| @angular | 116 | 1.27 MB |
| ngx-daterangepicker-material | 1 | 63.81 kB |
| ngx-slider-v2 | 1 | 60.76 kB |
| @angular-slider | 31 | 59.41 kB |
| ngx-scrollbar | 2 | 49.15 kB |
| ngx-device-detector | 1 | 36.87 kB |
| @ngrx | 6 | 36.55 kB |
| π« @ng-bootstrap | 1 | 34.16 kB |
| @rx-angular | 15 | 30.83 kB |
| sports-animations | 3 | 30.52 kB |
| @ngu | 1 | 22.04 kB |
| π« ngx-toastr | 1 | 18.79 kB |
| ng-circle-progress | 1 | 17.16 kB |
| ngx-popperjs | 1 | 15.28 kB |
| ngx-float-ui | 1 | 14.83 kB |
| @ngx-translate | 1 | 10.77 kB |
| ng-dynamic-component | 1 | 6.04 kB |
| ng-in-viewport | 1 | 6 kB |
| ng-lazyload-image | 1 | 5.93 kB |
| angularx-qrcode | 1 | 4.84 kB |
| ngx-lottie | 1 | 4.72 kB |
| π Rest | - | 13.63 MB |
angular-ecosystem
ποΈ angular-ecosystem 15.42 MB 5282 26
βββ π chunk-Y3HMZ5KM.js 3.31 MB 1326 modules
β βββ π Rest 3.29 MB 1325 modules
β βββ π
°οΈ node_modules/@angular/material/fesm2022/button-toggle.mjs 21.55 kB
βββ π chunk-HV7YKUNQ.js 362 modules
β βββ π Rest 1.13 MB 362 modules
βββ π chunk-IPC3RBKM.js 642.32 kB 262 modules
β βββ π Rest 630.02 kB 260 modules
β βββ π
°οΈ node_modules/ng-lazyload-ima...sm2020/ng-lazyload-image.mjs 5.93 kB
β βββ π
°οΈ node_modules/@ngrx/signals/fesm2022/ngrx-signals.mjs 2.04 kB
βββ π chunk-BF2DWCDG.js 54 modules
β βββ π Rest 604.23 kB 54 modules
βββ π chunk-NVQ5VL4Y.js 602.77 kB 45 modules
β βββ π Rest 569.55 kB 42 modules
β βββ π
°οΈ node_modules 30.52 kB 3 modules
βββ π chunk-XMJGD64P.js 594.28 kB 706 modules
β βββ π Rest 434.31 kB 690 modules
β βββ π
°οΈ @angular/router 75.64 kB 3 modules
β βββ π
°οΈ @angular/common 22 kB 2 modules
β βββ π« node_modules/ngx-toastr/fesm2022/ngx-toastr.mjs 18.79 kB
β βββ π
°οΈ @angular/platform-browser 17.32 kB 3 modules
β βββ π
°οΈ node_modules/ngx-float-ui/fesm2022/ngx-float-ui.mjs 14.83 kB
β βββ π
°οΈ node_modules/@angular/animations/fesm2022/animations.mjs 1.9 kB
β βββ π
°οΈ @rx-angular/cdk 1.64 kB 3 modules
β βββ π
°οΈ node_modules/@angular/core/fesm2022/rxjs-interop.mjs 1.1 kB
β βββ π
°οΈ node_modules/@angular/cdk/fesm2022/layout.mjs 1.03 kB
βββ π chunk-VC6QAOBB.js 68 modules
β βββ π Rest 552.27 kB 68 modules
βββ π chunk-P7F2V6TK.js 105 modules
β βββ π Rest 433.21 kB 105 modules
βββ π chunk-BT5R6MGD.js 387.29 kB 43 modules
β βββ π Rest 365.41 kB 42 modules
β βββ π
°οΈ node_modules/@angular/cdk/fesm2022/menu.mjs 17.01 kB
βββ π chunk-YPBRAJLT.js 99 modules
β βββ π Rest 351.16 kB 99 modules
βββ π chunk-SJSSVFWT.js
β βββ π node_modules/braintree-web/dist/browser/index.js 312.82 kB
βββ π chunk-FWSPTPCX.js 239.75 kB 171 modules
β βββ π
°οΈ @angular/core 190.5 kB 4 modules
β βββ π Rest 46.26 kB 167 modules
βββ π chunk-SYYRCYVE.js 21 modules
β βββ π Rest 215.01 kB 21 modules
βββ π chunk-INBYE6V6.js 26 modules
β βββ π Rest 195.1 kB 26 modules
βββ π chunk-DAQ6D6Q5.js 185.61 kB 28 modules
β βββ π Rest 180.3 kB 27 modules
β βββ π
°οΈ node_modules/@angular/materi.../material-moment-adapter.mjs 3.23 kB
βββ π chunk-FTWYFSHV.js 167.71 kB 62 modules
β βββ π Rest 161.28 kB 61 modules
β βββ π
°οΈ node_modules/@ngrx/component/fesm2022/ngrx-component.mjs 3.99 kB
βββ π chunk-GILYN2SN.js 47 modules
β βββ π Rest 148.67 kB 47 modules
βββ π chunk-3UHUUF6G.js 32 modules
β βββ π Rest 149.76 kB 32 modules
βββ π chunk-D33QGDF3.js 9 modules
β βββ π Rest 144.11 kB 9 modules
βββ π chunk-44Z4IQ53.js 49 modules
β βββ π Rest 136.15 kB 49 modules
βββ π chunk-GBQV5BLB.js 126.92 kB 44 modules
β βββ π Rest 66.32 kB 13 modules
β βββ π
°οΈ @angular-slider/ngx-slider 59.41 kB 31 modules
βββ π chunk-K4GNEKUV.js 122.54 kB 16 modules
β βββ π
°οΈ node_modules/ngx-daterangepi...daterangepicker-material.mjs 63.81 kB
β βββ π Rest 57.95 kB 15 modules
βββ π chunk-DWZKI7KU.js 121.18 kB 19 modules
β βββ π Rest 59.23 kB 18 modules
β βββ π
°οΈ node_modules/@angular/cdk/fesm2022/drag-drop.mjs 52.84 kB
βββ π chunk-JCE5E6ZQ.js 117.05 kB 35 modules
β βββ π
°οΈ @angular/cdk 98.28 kB 33 modules
β βββ π
°οΈ @angular/material 17.4 kB 2 modules
βββ π quick-deposit-feature.component-6L65HN7U.css 114.15 kB 2 modules
β βββ π
°οΈ node_modules/@angular/materi...built-themes/indigo-pink.css 86.37 kB
β βββ π packages/payments/quickdepos...posit-feature.component.scss 27.68 kB
βββ π ... 4.45 MB 1650 files
Tracks Angular framework usage, optimizes tree-shaking opportunities, identifies duplicate Angular modules, and prevents framework bloat in Angular applications.
βοΈ Configuration
-
Issues:
- Info:
0violations - Analysis only, no penalties
- Info:
-
Table:
- Groups: Configured groups
- Rest: Other contributing modules
-
Tree:
- Groups: Same as table
- Pruning:
25 children,2 depth - Rest: Remaining items grouped for clarity
π« Blacklisted (Bundle Stats)
π© 9.32 MB (132 files) (score: 100)
| Group | Modules | Size |
|---|---|---|
| β Not Blacklisted | 3332 | 8.59 MB |
| π« Blacklist | 224 | 750.22 kB |
Issues
| Severity | Message | Source file | Line(s) |
|---|---|---|---|
| π¨ error | π« node_modules/lodash/lodash.js matches blacklist pattern **/node_modules/lodash/** - Replace with lodash-es and use selective imports like import isEmpty from "lodash-es/isEmpty". |
chunk-47D45RXC.js |
|
| π¨ error | π« Blacklisted modules matching **/node_modules/socket.io-client/** included in file - Use lazy loading for heavy dependencies. |
chunk-5V2PPPNH.js |
|
| π¨ error | π« node_modules/ngx-device-detector/fesm2022/ngx-device-detector.mjs matches blacklist pattern **/node_modules/ngx-device-detector/** - Use lazy loading for heavy dependencies. |
chunk-AJ2NKFMZ.js |
|
| π¨ error | π« node_modules/ua-parser-js/src/ua-parser.js matches blacklist pattern **/node_modules/ua-parser-js/** - Use lazy loading for heavy dependencies. |
chunk-FLWXSBRD.js |
|
| π¨ error | π« Blacklisted modules matching **/node_modules/ngx-scrollbar/** included in file - Use lazy loading for heavy dependencies. |
chunk-IGE4HHZ4.js |
|
| π¨ error | π« node_modules/lottie-web/build/player/lottie.js matches blacklist pattern **/node_modules/lottie-web/** - Use lazy loading for heavy dependencies. |
chunk-SXUKVV42.js |
|
| π¨ error | π« node_modules/launchdarkly-js-client-sdk/dist/ldclient.es.js matches blacklist pattern **/node_modules/launchdarkly-js-client-sdk/** - Use lazy loading for heavy dependencies. |
chunk-U6V7KC5B.js |
|
| π¨ error | π« Blacklisted modules matching **/node_modules/@microsoft/** included in file - Use lazy loading for heavy dependencies. |
chunk-WWRMO4DV.js |
|
| π¨ error | π« node_modules/howler/dist/howler.js matches blacklist pattern **/node_modules/howler/** - Use lazy loading for heavy dependencies. |
chunk-Y3HMZ5KM.js |
Detects blacklisted dependencies, enforces architectural standards, prevents security vulnerabilities, and blocks performance bottlenecks from reaching production.
βοΈ Configuration
-
Scoring:
- Blacklist:
10matches; weight:0
- Blacklist:
-
Issues:
- Error:
1+candidates - Violation detected, requires action - Info:
0candidates - No violations found
- Error:
-
Table:
- Groups: Detail listing of π«Blacklist, β Not Blacklisted
- Rest: Other contributing modules
π¦ Node Modules (Bundle Stats)
π© 6.69 MB (300 files) (score: 100)
| Group | Modules | Size |
|---|---|---|
| π¦ Packages | 664 | 1.33 MB |
| π¦π« Legacy Packages | 29 | 186.75 kB |
| π moment | 1 | 59.42 kB |
| π js-sha512 | 1 | 18.8 kB |
| ππ« underscore | 1 | 17.42 kB |
| π immer | 1 | 7.95 kB |
| π resize-observer-polyfill | 1 | 7.51 kB |
| π fastdom | 1 | 1.46 kB |
| π js-levenshtein | 1 | 818 B |
| π xhr2 | 1 | 43 B |
| π Rest | - | 5.06 MB |
node-modules
ποΈ node-modules 6.69 MB 3161 11
βββ π chunk-2DMRTCLA.js 2.87 MB 1246 modules
β βββ π Rest 2.83 MB 1245 modules
β βββ π node_modules/js-sha512/src/sha512.js 18.8 kB
βββ π chunk-XMJGD64P.js 594.28 kB 706 modules
β βββ π Rest 349.94 kB 319 modules
β βββ π¦ Packages 237.82 kB 386 modules
β βββ π node_modules/js-levenshtein/index.js 818 B
βββ π chunk-YPBRAJLT.js 99 modules
β βββ π Rest 351.16 kB 99 modules
βββ π chunk-SJSSVFWT.js
β βββ π¦ node_modules/braintree-web/dist/browser/index.js 312.82 kB
βββ π chunk-FWSPTPCX.js 171 modules
β βββ π¦ Packages 236.75 kB 171 modules
βββ π chunk-JCE5E6ZQ.js 35 modules
β βββ π¦ Packages 115.69 kB 35 modules
βββ π chunk-KGOP3CSX.js 45 modules
β βββ π Rest 84.25 kB 45 modules
βββ π chunk-A7WNARMW.js 3 modules
β βββ π¦ Packages 65.9 kB 3 modules
βββ π chunk-WWRMO4DV.js 66.19 kB 36 modules
β βββ π¦π« Legacy Packages 49.95 kB 25 modules
β βββ π¦ Packages 8.72 kB 7 modules
β βββ π Rest 6.85 kB 4 modules
βββ π chunk-MSOM6LHI.js
β βββ π node_modules/moment/moment.js 59.42 kB
βββ π ... 1.96 MB 818 files
Detects newly added packages, catches forbidden dependencies, monitors 3rd party costs, and prevents bundle bloat from unreviewed dependencies.
βοΈ Configuration
-
Issues:
- Info:
0violations - Analysis only, no penalties
- Info:
-
Table:
- Groups: Detail listing of π¦π«Legacy Packages, π¦Packages
- Rest: Other contributing modules
-
Tree:
- Groups: Same as table
- Pruning:
10 children,2 depth - Rest: Remaining items grouped for clarity
About
Report was created by Code PushUp on Fri, Jul 25, 2025, 4:22 AM GMT+2.
| Plugin | Audits | Version | Duration |
|---|---|---|---|
| Bundle Stats | 5 | 0.69.2 |
38.59 s |
| Commit | Version | Duration | Plugins | Categories | Audits |
|---|---|---|---|---|---|
| docs: add examples (b3d0961dc489753ef1f5edbcced33a9127387dea) | 0.69.5 |
38.64 s | 1 | 0 | 5 |
Made with β€ by Code PushUp
View your CI Pipeline Execution β for commit e72dfacb3162b59e1fb2dd996034fe04768e539d
| Command | Status | Duration | Result |
|---|---|---|---|
nx run ci:code-pushup -- merge-diffs --files=/h... |
β Succeeded | 5s | View β |
nx run-many --targets=code-pushup --parallel=fa... |
β Succeeded | 1m 26s | View β |
nx run-many --targets=code-pushup --parallel=fa... |
β Succeeded | 12m 40s | View β |
nx run-many -t unit-test,int-test |
β Succeeded | 49s | View β |
βοΈ Nx Cloud last updated this comment at 2025-12-05 13:58:30 UTC
Dependency Review Summary
The full dependency review summary is too large to display here. Please download the artifact named "dependency-review-summary" to view the complete report.
@code-pushup/ci
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/ci@1024
@code-pushup/cli
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/cli@1024
@code-pushup/core
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/core@1024
@code-pushup/create-cli
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/create-cli@1024
@code-pushup/models
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/models@1024
@code-pushup/nx-plugin
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/nx-plugin@1024
@code-pushup/axe-plugin
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/axe-plugin@1024
@code-pushup/bundle-stats-plugin
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/bundle-stats-plugin@1024
@code-pushup/coverage-plugin
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/coverage-plugin@1024
@code-pushup/eslint-plugin
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/eslint-plugin@1024
@code-pushup/js-packages-plugin
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/js-packages-plugin@1024
@code-pushup/jsdocs-plugin
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/jsdocs-plugin@1024
@code-pushup/lighthouse-plugin
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/lighthouse-plugin@1024
@code-pushup/typescript-plugin
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/typescript-plugin@1024
@code-pushup/utils
npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/utils@1024
commit: e72dfac
Code PushUp
π Code PushUp report has regressed β compared current commit ce663db83f695457a8b5841e078b6aea2bd798e4 with previous commit f74d2dd5baec17a16c3748316438a9dade24dedd.
πΌ Project utils
π Code PushUp report has regressed.
π΅οΈ See full comparison in Code PushUp portal π
| π·οΈ Category | β Previous score | β Current score | π Score change |
|---|---|---|---|
| Code coverage | π’ 94 | π’ 94 | |
| Documentation | π΄ 38 | π΄ 38 |
4 other categories are unchanged.
π 2 groups regressed, π 3 audits regressed
ποΈ Groups
| π Plugin | ποΈ Group | β Previous score | β Current score | π Score change |
|---|---|---|---|---|
| Code coverage | Code coverage metrics | π’ 94 | π’ 94 | |
| JSDoc coverage | Documentation coverage | π΄ 38 | π΄ 38 |
13 other groups are unchanged.
π‘οΈ Audits
| π Plugin | π‘οΈ Audit | π Previous value | π Current value | π Value change |
|---|---|---|---|---|
| Code coverage | Function coverage | π© 95.3 % | π© 94.4 % | |
| Code coverage | Line coverage | π© 97 % | π© 96.8 % | |
| JSDoc coverage | Functions coverage | π₯ 236 undocumented functions | π₯ 239 undocumented functions |
440 other audits are unchanged.
13 other projects are unchanged.
Code PushUp
π€¨ Code PushUp report has both improvements and regressions β compared current commit ce663db83f695457a8b5841e078b6aea2bd798e4 with previous commit f74d2dd5baec17a16c3748316438a9dade24dedd.
π΅οΈ See full comparison in Code PushUp portal π
π·οΈ Categories
| π·οΈ Category | β Previous score | β Current score | π Score change |
|---|---|---|---|
| Code style | π’ 100 | π’ 93 | |
| Code coverage | π‘ 89 | π‘ 86 | |
| Performance | π΄ 44 | π΄ 42 | |
| Bug prevention | π‘ 67 | π‘ 65 | |
| Documentation | π΄ 35 | π΄ 36 | |
| Updates | π‘ 71 | π‘ 71 | |
| Security | π΄ 43 | π΄ 43 | β |
| Type Safety | π‘ 56 | π‘ 56 | β |
| Miscellaneous | π‘ 67 | π‘ 67 | β |
| Accessibility | π’ 92 | π’ 92 | β |
| Best Practices | π’ 100 | π’ 100 | β |
| SEO | π’ 92 | π’ 92 | β |
π 2 groups improved, π 9 groups regressed, π 5 audits improved, π 35 audits regressed, 14 audits changed without impacting score
ποΈ Groups
| π Plugin | ποΈ Group | β Previous score | β Current score | π Score change |
|---|---|---|---|---|
| ESLint | No Mutations (functional) | π’ 100 | π΄ 0 | |
| ESLint | No Statements (functional) | π’ 100 | π΄ 0 | |
| ESLint | Stylistic (functional) | π’ 100 | π‘ 50 | |
| ESLint | Helpful warnings (import) | π’ 100 | π‘ 75 | |
| ESLint | Static analysis (import) | π’ 100 | π‘ 88 | |
| ESLint | Suggestions | π’ 100 | π’ 93 | |
| ESLint | Problems | π’ 100 | π’ 95 | |
| Code coverage | Code coverage metrics | π‘ 89 | π‘ 86 | |
| Lighthouse | Performance | π΄ 44 | π΄ 42 | |
| JSDoc coverage | Documentation coverage | π΄ 35 | π΄ 36 | |
| JS Packages | NPM outdated dependencies | π‘ 71 | π‘ 71 |
12 other groups are unchanged.
π‘οΈ Audits
| π Plugin | π‘οΈ Audit | π Previous value | π Current value | π Value change |
|---|---|---|---|---|
| Lighthouse | Initial server response time was short | π₯ Root document took 790Β ms | π© Root document took 560Β ms | |
| ESLint | Enforce treating data as immutable. | π© passed | π₯ 116 errors | |
| ESLint | Disallow imperative loops. | π© passed | π₯ 81 warnings | |
| ESLint | Disallow mutable variables. | π© passed | π₯ 32 warnings | |
| ESLint | Disallow unused variables | π© passed | π₯ 24 errors | |
| ESLint | Disallow non-null assertions using the ! postfix operator |
π© passed | π₯ 18 errors | |
| ESLint | Enforce a maximum number of lines of code in a function | π© passed | π₯ 17 warnings | |
| ESLint | Disallow the use of console |
π© passed | π₯ 14 warnings | |
| ESLint | Enforce a maximum depth that blocks can be nested | π© passed | π₯ 10 warnings | |
| ESLint | Disallow the any type |
π© passed | π₯ 9 errors | |
| ESLint | Forbid any invalid exports, i.e. re-export of the same name. | π© passed | π₯ 7 errors | |
| ESLint | Collection and array contents should be used | π© passed | π₯ 5 errors | |
| ESLint | Enforce a maximum number of lines per file | π© passed | π₯ 5 warnings | |
| ESLint | Enforce a maximum cyclomatic complexity allowed in a program | π© passed | π₯ 4 warnings | |
| ESLint | Disallow duplicate module imports | π© passed | π₯ 4 warnings | |
| ESLint | Require for-in loops to include an if statement |
π© passed | π₯ 3 errors | |
| ESLint | Enforce consistent usage of type assertions | π© passed | π₯ 3 errors | |
| ESLint | Replaces x => f(x) with just f. |
π© passed | π₯ 3 warnings | |
| ESLint | disallow conditional expects | π© passed | π₯ 3 warnings | |
| ESLint | disallow disabled tests | π© passed | π₯ 3 warnings | |
| ESLint | Forbid a module from importing a module with a dependency path back to itself. | π© passed | π₯ 2 errors | |
| ESLint | String literals should not be duplicated | π© passed | π₯ 1 warning | |
| ESLint | Functions should not have identical implementations | π© passed | π₯ 1 error | |
| ESLint | Return of boolean expressions should not be wrapped into an "if-then-else" statement | π© passed | π₯ 1 warning | |
| ESLint | Enforce combining multiple Array#push() into one call. |
π© passed | π₯ 1 warning | |
| ESLint | Disallow reassigning function parameters |
π© passed | π₯ 1 error | |
| ESLint | Enforce a maximum number of parameters in function definitions | π© passed | π₯ 1 warning | |
| ESLint | Disallow variable declarations from shadowing variables declared in the outer scope | π© passed | π₯ 1 warning | |
| ESLint | Checks dependencies in project's package.json for version mismatches | π© passed | π₯ 1 error | |
| Code coverage | Line coverage | π¨ 84.7 % | π¨ 76.6 % | |
| Lighthouse | Speed Index | π₯ 6.7Β s | π₯ 7.1Β s | |
| JSDoc coverage | Functions coverage | π₯ 561 undocumented functions | π₯ 622 undocumented functions | |
| Lighthouse | Total Blocking Time | π₯ 800Β ms | π₯ 880Β ms | |
| Code coverage | Function coverage | π© 90.3 % | π¨ 87.2 % | |
| Lighthouse | Time to Interactive | π₯ 13.0Β s | π₯ 12.5Β s | |
| JSDoc coverage | Variables coverage | π₯ 246 undocumented variables | π₯ 259 undocumented variables | |
| JSDoc coverage | Types coverage | π₯ 241 undocumented types | π₯ 333 undocumented types | |
| Lighthouse | First Contentful Paint | π₯ 3.2Β s | π₯ 3.3Β s | |
| Code coverage | Branch coverage | π¨ 87.3 % | π¨ 86.4 % | |
| JS Packages | Outdated NPM dev dependencies. | π¨ 59 outdated package versions (34 major, 19 minor, 6 patch) | π¨ 59 outdated package versions (34 major, 19 minor, 6 patch) | |
| Lighthouse | Avoids enormous network payloads | π© Total size was 2,032Β KiB | π© Total size was 2,023Β KiB | |
| Lighthouse | Server Backend Latencies | π© 1,760Β ms | π© 1,230Β ms | |
| Lighthouse | Metrics | π© 100% | π© 100% | |
| Lighthouse | Minimizes main-thread work | π₯ 7.5Β s | π₯ 7.2Β s | |
| Lighthouse | Uses efficient cache policy on static assets | π¨ 32 resources found | π¨ 32 resources found | |
| Lighthouse | Max Potential First Input Delay | π₯ 840Β ms | π₯ 1,060Β ms | |
| Lighthouse | JavaScript execution time | π₯ 2.9Β s | π₯ 2.9Β s | |
| Lighthouse | Reduce unused JavaScript | π₯ Potential savings of 186Β KiB | π₯ Potential savings of 186Β KiB | |
| Lighthouse | Largest Contentful Paint | π₯ 11.6Β s | π₯ 11.5Β s | |
| Lighthouse | Reduce unused CSS | π₯ Potential savings of 105Β KiB | π₯ Potential savings of 105Β KiB | |
| Lighthouse | Remove duplicate modules in JavaScript bundles | π₯ Potential savings of 104Β KiB | π₯ Potential savings of 104Β KiB | |
| TypeScript | Syntax errors | π₯ 5 errors | π₯ 9 errors | |
| TypeScript | Semantic errors | π₯ 2623 errors | π₯ 2627 errors | |
| Lighthouse | Network Round Trip Times | π© 50Β ms | π© 50Β ms |
624 other audits are unchanged.
closed as the code now lives in the community plugins repo