@shopify/theme-language-server-common
TypeScript icon, indicating that this package has built-in type declarations

1.11.0 • Public • Published


logo
Theme Language Server

The Language Server Protocol empowers developers to provide code editing features to all code editors in a single code base with no code-editor-specific code.

This module serves as a runtime-agnostic Liquid Language Server so that we can also run it inside the Online Store Code Editor (via a CodeMirror Language Client).

You may be interested in the sibling modules:

Usage

This repo only contains the library over the functionality. The CLI is implemented in Shopify/cli.

Node

The Node.js version comes with batteries included and uses STDIN and STDOUT as the communication channel.

// slim-cli.ts
import { startServer } from '@shopify/theme-language-server-node';

// start the server (batteries included)
startServer();

Browser

The browser version accepts a Web Worker as argument.

// worker.ts
import { startServer, Dependencies } from '@shopify/theme-language-server-browser';

// Provide implementations for the dependency injections
const dependencies: Dependencies = { /* ... */ };

// In a Web Worker, the self object refers to the worker.
startServer(self as any as Worker, dependencies);

Learn more

  • Read the Language Server Protocol Spec

    It's important to understand the following concepts:

    • Language Client
    • Language Server
    • Messages
      • Requests / Response
      • Notifications
      • Message direction
    • Client Capabilities
    • Server Capabilities
    • TextDocument synchronization
    • Lifecycle methods
  • Take a look at the vscode-languageserver-* libraries offered by VS Code.

    They have vscode in their name, but only vscode-languageclient is VS Code specific, the other libraries can be used in non-VS Code contexts (we do this here).

    • vscode-languageserver-server

      This library provides the connection object and is runtime agnostic. The entire spec is implemented and thus you can hook into every message type.

      Examples: connection.onInitialize(params => {}), connection.onTextDocumentDidOpen(params => {}), etc.

    • vscode-languageserver-protocol

      This library is useful to reuse and type check message parameter types.

      Examples: PublishDiagnosticsNotification, DiagnosticClientCapabilities, DiagnosticServerCapabilities, etc.

    • vscode-languageserver-types

      This library is useful to get the types of specific parts of the Protocol.

      Examples: Diagnostic, URI, TextDocument, Position, Range, LocationLink, etc.

Readme

Keywords

none

Package Sidebar

Install

npm i @shopify/theme-language-server-common

Weekly Downloads

23,087

Version

1.11.0

License

MIT

Unpacked Size

942 kB

Total Files

362

Last publish

Collaborators

  • jaimie.rockburn
  • blittle
  • shopify-admin
  • maryharte
  • crisfmb
  • pmoloney89
  • netlohan
  • st999999
  • justin-irl
  • megswim
  • wcandillon
  • nathanpjf
  • shopify-dep
  • goodforonefare
  • lemonmade
  • vsumner
  • wizardlyhel
  • antoine.grant
  • tsov
  • andyw8-shopify
  • henrytao
  • hannachen
  • vividviolet
  • bpscott