Catalog npm
Back to packageRELEASE DETAILS

2.1.3

npm

15lyzers

GUI Dashboard to analyze and visualize all HTTP calls in Angular 15 applications

angularangular-httpangular15dashboardguihttphttp-analysistestingclihttp-testing
Published4 Mar 2026
Direct dependencies6
Transitive dependenciesNot calculated

README

Current package documentation

15Lyzer - Angular HTTP Call Analyzer Dashboard

15Lyzer License Node

A beautiful GUI dashboard to analyze and visualize all HTTP calls in your Angular 15 applications


🎯 What is 15Lyzer?

15Lyzer is a powerful web-based dashboard that analyzes your Angular 15 application and provides comprehensive insights into all HTTP calls. Simply upload your Angular project directory, and get instant visualization of:

  • 📊 HTTP Call Statistics - Total calls, methods distribution, and more
  • 🔍 Component/Service Analysis - See which components and services make HTTP calls
  • 📡 HTTP Method Breakdown - Visual breakdown of GET, POST, PUT, DELETE, PATCH
  • 🎨 Beautiful Visualizations - Interactive charts and tables
  • ⚡ Real-time Analysis - Upload and analyze in seconds

✨ Features

🖥️ Web Dashboard

  • Modern UI - Clean, responsive design built with vanilla HTML/CSS/JS
  • Drag & Drop - Easy directory upload with progress tracking
  • Interactive Charts - Visual HTTP method distribution
  • Search & Filter - Find specific components, services, or methods
  • Detailed Tables - View all HTTP calls with file locations

🔍 Analysis Capabilities

  • Automatic Detection - Finds all HTTP calls in TypeScript files
  • Method Recognition - Detects GET, POST, PUT, DELETE, PATCH
  • Component Mapping - Links HTTP calls to specific components/services
  • File Tracking - Shows exact file locations and line numbers
  • Async Detection - Identifies async/await patterns

📦 Installation

Prerequisites

  • Node.js >= 16.0.0
  • npm or yarn

Install from npm

npm install -g 15lyzers

Or install from source

git clone https://github.com/lpaszkiewicz/15Lyzer.git
cd 15Lyzer
npm install

🚀 Quick Start

Start the Dashboard

npm start

Or if installed globally:

15lyzer-dashboard

This will start the server at http://localhost:3000

Using the Dashboard

  1. Open your browser and navigate to http://localhost:3000
  2. Click "Choose Directory" and select your Angular 15 project root
  3. Wait for analysis - The dashboard will process all TypeScript files
  4. Explore results - View statistics, charts, and detailed HTTP call information

📊 Dashboard Features

Statistics Cards

View key metrics at a glance:

  • Total TypeScript files analyzed
  • Total HTTP calls found
  • Number of components with HTTP calls
  • Number of services with HTTP calls

HTTP Method Distribution Chart

Visual bar chart showing:

  • GET requests (green)
  • POST requests (blue)
  • PUT requests (orange)
  • PATCH requests (purple)
  • DELETE requests (red)

Component/Service Browser

  • Search - Find classes by name
  • Filter - Show only components or services
  • Expandable - Click to see all methods with HTTP calls
  • Method Tags - Color-coded HTTP method indicators

Detailed HTTP Calls Table

Comprehensive table with:

  • Class name
  • Method name
  • HTTP methods used
  • File path
  • Component/Service type
  • Async indicator

🛠️ Configuration

Change Port

Set the PORT environment variable:

PORT=8080 npm start

Custom Upload Limit

Edit src/server.js to change the file size limit:

const upload = multer({
  dest: 'uploads/',
  limits: { fileSize: 200 * 1024 * 1024 }, // 200MB
});

📁 Project Structure

15Lyzer/
├── src/
│   ├── server.js          # Express server and API
│   ├── scanner.js         # File system scanner
│   ├── parser.js          # TypeScript parser
│   └── functionAnalyzer.js # HTTP call analyzer
├── public/
│   ├── index.html         # Dashboard UI
│   ├── styles.css         # Styling
│   └── app.js             # Frontend logic
├── uploads/               # Temporary upload directory
└── package.json

What it detects

15Lyzer scans every non-spec TypeScript file for Angular HttpClient usage including:

PatternDetected as
this.http.get('/api/resource')GET method
this.http.post('/api/resource', data)POST method
this.http.get(`/api/resource/${id}`)GET with template
this.http.put(url, data)PUT method
this.http.delete(url)DELETE method
this.http.patch(url, data)PATCH method

Programmatic API

You can also use 15Lyzer programmatically:

const { scanFiles } = require('15lyzers');
const { analyzeMultipleFiles, getStatistics } = require('15lyzers/src/functionAnalyzer');

const files = scanFiles('./my-angular-app');
const functions = analyzeMultipleFiles(files);
const stats = getStatistics(functions);

console.log(`Found ${stats.withHttpCalls} functions with HTTP calls`);

Detailed Testing with Click Simulation

const { 
  scanFiles, 
  parseFiles, 
  testCallsDetailed, 
  reportDetailedResult,
  createClickContext 
} = require('15lyzer');

const files = scanFiles('./my-angular-app');
const calls = parseFiles(files);

// Test with comprehensive data capture
const results = await testCallsDetailed(calls, 'http://localhost:4200', {
  timeout: 10000,
  headers: { Authorization: 'Bearer token' },
  maxBodySize: 1048576, // 1MB
  detailed: true,
  clickAction: 'User Navigation',
  onResult: (r) => {
    console.log('\n📊 Detailed Result:');
    console.log(`   Completed: ${r.completed}`);
    console.log(`   Timed Out: ${r.timedOut}`);
    console.log(`   Status: ${r.status}`);
    console.log(`   Duration: ${r.duration}ms`);
    console.log(`   Response Size: ${r.responseData?.size || 0} bytes`);
  },
});

// Check completion status
const completed = results.filter((r) => r.completed);
const timedOut = results.filter((r) => r.timedOut);
console.log(`\nCompleted: ${completed.length}/${results.length}`);
console.log(`Timed Out: ${timedOut.length}/${results.length}`);

Exit codes

CodeMeaning
0All tested endpoints returned < 500 status
1One or more endpoints returned a 5xx or network error

Custom Tool Generation

15Lyzer can analyze your entire Angular 15 application and generate standalone HTTP endpoint tests with zero external dependencies.

Generate Custom Tools

15lyzer-generate ./my-app --tool e2e --output ./generated

Available Tool Type

Standalone E2E Test Generator (e2e)

Generates standalone E2E tests for HTTP endpoints using ONLY Node.js built-in modules (no Cypress, Playwright, or any other framework installation required!):

# Generate standalone tests with zero dependencies
15lyzer-generate ./my-app --tool e2e --output ./e2e/generated

Generate Selenium tests

15lyzer-generate ./my-app --tool e2e --framework selenium --output ./selenium-tests


**🎉 NEW: Zero-dependency standalone mode (default)!** No need for Cypress, Playwright, or Selenium! Tests run using 15Lyzer's built-in test runner.

**Important**: When using Cypress, Playwright, or Selenium, you do **NOT** need them installed to generate the test files. The tool only creates the test code templates. You'll only need the chosen framework when you want to actually run those tests.

**Features:**
- Creates E2E tests for all components
- **Standalone framework (default)**: Run tests immediately with ZERO dependencies!
- Uses ONLY Node.js built-in modules (`http`, `https`, `url`) - no external packages
- Or choose from: Cypress, Playwright, Selenium
- Generates framework-specific helper functions
- Auto-intercepts API calls for testing
- Includes TypeScript type declarations
- Generates README with setup instructions

**Example Standalone Output (Default):**
```javascript
const { describe, it, beforeEach, expect, httpRequest } = require('./runner');

describe('MyComponent E2E', () => {
  let baseUrl;

  beforeEach(() => {
    baseUrl = 'http://localhost:4200';
  });

  it('should load component page', async () => {
    const response = await httpRequest({
      method: 'GET',
      url: `${baseUrl}/my-route`,
    });
    expect(response.status).toBe(200);
  });

  it('should fetch data from API', async () => {
    const response = await httpRequest({
      method: 'GET',
      url: `${baseUrl}/api/data`,
    });
    expect(response.status).toBeGreaterThanOrEqual(200);
    expect(response.status).toBeLessThan(300);
  });
});

Features:

  • ✅ Uses ONLY Node.js built-in modules (http, https, url)
  • ✅ Zero installation required - no Cypress, Playwright, or Selenium needed
  • ✅ Familiar test API - describe/it/expect (similar to Jest/Jasmine)
  • ✅ Built-in HTTP testing - test real API endpoints
  • ✅ Full async/await support
  • ✅ Comprehensive assertions - toBe, toEqual, toContain, toBeTruthy, etc.
  • ✅ Smart endpoint detection - automatically generates tests for services with HTTP calls

Run standalone tests:

# Run a single test file
node mycomponent.standalone.js

## 🔒 Security

- **Temporary Files** - Uploaded files are automatically deleted after analysis
- **Local Only** - Dashboard runs on localhost by default
- **No Data Storage** - Analysis results are not saved to disk
- **File Validation** - Only TypeScript files are processed

## 🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## Development

```bash
# Install dependencies
npm install

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Start development server
npm start

📄 License

MIT License - see LICENSE file for details

🐛 Issues

Found a bug? Have a feature request? Please open an issue on GitHub

📝 Changelog

v2.0.0 (Current)

  • 🎉 Complete rewrite as GUI dashboard application
  • ✨ Added web-based UI with modern design
  • 📊 Added interactive charts and visualizations
  • 🔍 Added search and filter capabilities
  • ⚡ Improved analysis performance
  • 🚀 Real-time directory upload and analysis

v1.1.0

  • Added standalone test generation
  • Improved HTTP call detection
  • Bug fixes

🙏 Credits

Created by Lisa Paszkiewicz


Made with ❤️ for the Angular community

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 6

Native requirements
6 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
axios
Environment
{
  "local_name": "axios",
  "alias": false,
  "peer_metadata": null
}
^1.13.5runtime
chalk
Environment
{
  "local_name": "chalk",
  "alias": false,
  "peer_metadata": null
}
^4.1.2runtime
multer
Environment
{
  "local_name": "multer",
  "alias": false,
  "peer_metadata": null
}
^1.4.5-lts.1runtime
express
Environment
{
  "local_name": "express",
  "alias": false,
  "peer_metadata": null
}
^4.22.1runtime
commander
Environment
{
  "local_name": "commander",
  "alias": false,
  "peer_metadata": null
}
^12.1.0runtime
jest
Environment
{
  "local_name": "jest",
  "alias": false,
  "peer_metadata": null
}
^29.7.0development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "575b5bf78fa085af090d372557567c67fdc0c0d9",
  "tarball": "https://registry.npmjs.org/15lyzers/-/15lyzers-2.1.3.tgz",
  "fileCount": 36,
  "integrity": "sha512-izdTu+AOCZZqqBsU17jvBUfCivttezFh14mjQl+8Nd6vtYV1skwFJdSszBd0H6fXtviGTfVKYEwEro7pw+dGHg==",
  "signatures": [
    {
      "sig": "MEQCIDZsGwkpQYyPzVB55U85w0LQ4kHsrjU8vA/Upy6ZFjULAiADsgQq10c7BeHhKwGlaP4yswVci3Y2hdWfFRiMSaRYFQ==",
      "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
    }
  ],
  "unpackedSize": 242914
}

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:15 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:92743911ea78bf1cb12ea4b98b9ea478dd08b226d8e082b56f3c3b2f16f725cd

Other collected versions

2.1.64 Mar2.1.54 Mar2.1.44 Mar2.1.24 Mar2.1.14 Mar2.1.04 MarView all collected versions →