awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
T

ternjs/tern

0
View on GitHub↗
4,240 stars·371 forks·JavaScript·MIT·19 views

Tern

Tern is an editor-independent code analyzer and static analysis engine for JavaScript. It functions as a language server that provides semantic intelligence by parsing source code into abstract syntax trees to infer types and resolve symbols without requiring manual type annotations.

The engine distinguishes itself through the use of JSON-based type definitions, which allow it to describe library signatures and external dependencies without needing the original source code. It also features a plugin system that enables the extension of server functionality to support custom loaders or frameworks.

The project covers broad capability areas including code navigation, refactoring, and editor autocompletion. It provides services such as locating symbol definitions, finding code references, and offering function argument hints and completions based on inferred expression types.

Features

  • Language Intelligence Services - Provides deep semantic analysis of JavaScript code to enable advanced navigation and understanding in editors.
  • JSON Library Type Definitions - Utilizes JSON-based type definitions to describe library signatures and external dependencies without needing original source code.
  • Semantic Code Analyzers - Performs semantic analysis to resolve symbols and find definitions and references within JavaScript code.
  • Code Completion - Recommends variables and keywords at the cursor based on inferred types and documentation metadata.
  • Editor Code Navigation - Provides essential capabilities for jumping to definitions, finding references, and renaming symbols across files.
  • JavaScript Language Servers - Implements a backend language server that provides completion, symbol resolution, and refactoring for JavaScript.
  • Language Server Implementations - Functions as an editor-independent analysis engine providing language intelligence services via a common interface.
  • Custom Type Definitions - Uses JSON-based signatures to describe external library types when the original source code is unavailable.
  • JavaScript Static Analysis - Analyzes JavaScript source code without execution to infer variable types and ensure project consistency.
  • JavaScript Static Analyzers - Functions as a static analysis engine that parses JavaScript into abstract syntax trees to provide semantic intelligence.
  • Static Type Inference - Determines data types by analyzing variable and property contexts without requiring manual type annotations.
  • Symbol Definition Resolution - Locates the original declaration of a variable, function, or class by analyzing semantic information.
  • Static Source Code Type Inference - Implements a core engine that infers JavaScript types by analyzing the abstract syntax tree of source code.
  • Symbol Resolution - Provides a mechanism to map identifiers to their original declarations by analyzing semantic and type information.
  • Expression Type Resolution - Determines the expected data types of expressions during the static analysis phase.
  • Code Autocomplete Engines - Provides context-aware code completions for symbols and properties as the user types.
  • Code Refactoring Tools - Provides capabilities to rename symbols and restructure code while maintaining logical consistency.
  • Code Reference Locators - Implements the ability to search the syntax tree and locate every occurrence of a specific variable or property.
  • External Dependency Resolvers - Locates and prepares external code dependencies using standard resolution strategies.
  • JavaScript Symbol Resolvers - Provides the capability to locate variable definitions and find all references to specific symbols across a project.
  • Type Determination - Retrieves the resulting data type of specific code expressions without executing the code.
  • Expression Type Inspectors - Inspects and reports the static type of specific code expressions to assist with debugging.
  • Function Argument Hints - Displays expected parameter types and descriptions when a function is invoked to ensure correct usage.
  • Module Path Resolution - Implements rules for locating external code dependencies using industry-standard path and naming patterns.
  • Parameter Usage Hints - Displays expected arguments for functions to help users call them with the correct parameters.
  • User-Defined Types - Allows specifying function signatures and types via a structured format to describe external libraries.
  • Automatic Variable Type Inference - Identifies the inferred type of specific expressions to ensure data consistency and correctness.
  • Sponsored Projects - Funded through a community-driven crowdfunding campaign.
  • Sustainable Project Examples - Releases language expansion packs via crowdfunded campaigns.

Star history

Star history chart for ternjs/ternStar history chart for ternjs/tern

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Tern

Similar open-source projects, ranked by how many features they share with Tern.
  • luals/lua-language-serverLuaLS avatar

    LuaLS/lua-language-server

    4,298View on GitHub↗

    lua-language-server is a static analysis tool and type checker for the Lua language that implements the Language Server Protocol. It provides a system for detecting type mismatches, unused code, and logic errors in source files. The project features an inference-based type system that deduces variable types and supports optional annotations and meta files to enforce type safety. It allows for the definition of custom types and function signatures, including support for overloads and member visibility controls. The server provides a broad set of IDE capabilities, including real-time code auto

    Luahacktoberfestlanguage-serverlpeg
    View on GitHub↗4,298
  • myriad-dreamin/tinymistMyriad-Dreamin avatar

    Myriad-Dreamin/tinymist

    2,907View on GitHub↗

    Tinymist is a comprehensive suite of tools for Typst document authoring, serving as a language server, document compiler, and project manager. It provides a standardized language service via the Language Server Protocol to enable editor features such as autocompletion, navigation, and semantic highlighting. The project distinguishes itself by integrating a TCP-based live preview server for real-time visual rendering and an advanced static analysis tool that utilizes abstract syntax trees and bidirectional type checking. It also includes a project management system capable of handling multi-fi

    Rustdapdap-serverformatter
    View on GitHub↗2,907
  • rust-lang/rlsrust-lang avatar

    rust-lang/rls

    3,509View on GitHub↗

    RLS is a language server that provides language intelligence for the Rust programming language. It implements the Language Server Protocol to enable a standardized communication layer between the Rust compiler and various editor clients. The project focuses on providing real-time code completions, symbol navigation, and type information. It also supports automated structural changes, such as workspace-wide symbol renaming, to maintain semantic correctness during refactoring. The system incorporates static code analysis for linting and formatting, alongside a mechanism for incremental compila

    Rustidelanguage-server-protocolrust
    View on GitHub↗3,509
  • rust-lang/rust-by-examplerust-lang avatar

    rust-lang/rust-by-example

    8,026View on GitHub↗

    This project is an interactive programming education resource and tutorial designed for learning the Rust programming language and systems programming concepts. It provides a collection of runnable and editable code examples that serve as a practical reference for language syntax and implementation. The resource features an interactive code sandbox that allows users to execute and test code snippets in real time. It emphasizes the verification of technical accuracy by executing embedded code blocks during the build process to ensure all examples remain functional. The content covers a compre

    Handlebars
    View on GitHub↗8,026
See all 30 alternatives to Tern→

Frequently asked questions

What does ternjs/tern do?

Tern is an editor-independent code analyzer and static analysis engine for JavaScript. It functions as a language server that provides semantic intelligence by parsing source code into abstract syntax trees to infer types and resolve symbols without requiring manual type annotations.

What are the main features of ternjs/tern?

The main features of ternjs/tern are: Language Intelligence Services, JSON Library Type Definitions, Semantic Code Analyzers, Code Completion, Editor Code Navigation, JavaScript Language Servers, Language Server Implementations, Custom Type Definitions.

What are some open-source alternatives to ternjs/tern?

Open-source alternatives to ternjs/tern include: luals/lua-language-server — lua-language-server is a static analysis tool and type checker for the Lua language that implements the Language… myriad-dreamin/tinymist — Tinymist is a comprehensive suite of tools for Typst document authoring, serving as a language server, document… rust-lang/rls — RLS is a language server that provides language intelligence for the Rust programming language. It implements the… rust-lang/rust-by-example — This project is an interactive programming education resource and tutorial designed for learning the Rust programming… codota/tabnine — TabNine is an AI-powered code completion engine that runs a deep-learning model to generate real-time code suggestions… amir9480/vscode-laravel-extra-intellisense — This is a Visual Studio Code extension that provides framework-specific IntelliSense for Laravel projects. It acts as…