grafana/levitate

A tool for helping to understand APIs exported and consumed by NPM packages (or any TypeScript code).

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 13 minutes ago
Added to GitGenius on September 18th, 2022
Created on November 29th, 2021
Open Issues & Pull Requests: 14 (+0)
Number of forks: 2
Total Stargazers: 31 (+0)
Total Subscribers: 128 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 5.0 days
Mean response time: 250.5 days
90th percentile: 751.8 days
Tracked items: 6

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 4% of issues opened in the past year have been closed.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 3
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 218 days
Stale 30+ days: 2
Stale 90+ days: 2

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (1)
  • enhancement (1)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Levitate is a TypeScript-based tool developed by Grafana that analyzes and compares APIs exported and consumed by NPM packages and TypeScript code. The tool addresses a specific need in package management and API compatibility tracking by providing developers with detailed visibility into what a package exports and what code imports from packages.

The core functionality of Levitate centers on several key operations. Users can compare exports across different versions of the same package, which is particularly valuable for understanding breaking changes or additions between releases. The tool can list all imports that code consumes from packages, providing a complete picture of external dependencies at the API level. It can also enumerate all exports from a package, helping developers understand the public surface area they are working with. Additionally, Levitate includes a compatibility checking feature that allows developers to verify whether code written against one version of a package will work with another version, such as checking if code using @grafana/[email protected] remains compatible with @grafana/[email protected].

The tool provides flexibility through a configuration mechanism using a .levignore.js file. This file allows developers to exclude specific exports from analysis by specifying regex patterns for symbol names they want to ignore. This feature applies to the compare and is-compatible commands but does not affect list-imports or list-exports operations. The .levignore.js file must be located in the same directory where levitate is invoked.

The repository has generated activity around both bug reports and enhancement requests, indicating ongoing maintenance and feature development.

Levitate is classified within Grafana's ecosystem as part of the team-frontend-platform initiative and sits within a broader classification spanning cloud-native, visualization, observability, and monitoring domains. The tool shares contributors with other significant repositories including grafana/grafana, aider-ai/aider, and badlogic/pi-mono, suggesting it serves as a utility within a larger development ecosystem.

The project maintains a contributing guide for developers interested in participating in its development, indicating an open approach to community contributions. By focusing specifically on TypeScript and NPM package APIs, Levitate fills a niche in the tooling landscape for teams that need programmatic understanding of package compatibility and API surface changes, making it particularly relevant for large-scale frontend platform development where managing dependencies across multiple package versions is a critical concern.