npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@aws/lsp-partiql

v0.0.4

Published

PartiQL language server

Downloads

8

Readme

PartiQL LSP server

LSP server for the PartiQL language. This server offers diagnostics for PartiQL files by parsing the file using the Rust parser maintained by the PartiQL team.

This parser is compiled to a WebAssembly binary using the bindings maintained by the PartiQL team in the PartiQL playground package. This binary is further encoded as a base64 string in a Javascript file to make it easy to be bundled together with the other assets of the server.

Updating the binary

Updating the binary requires the Docker CLI to be in your PATH

To update the binary used by the server, run npm run update-parser-binary. This will, inside a Docker container, pull the PartiQL playground repository from GitHub and run the build command to create a new binary. It is then encoded into base64 in a Typescript file and copied to the src folder. Running npm run build will then transpile the binary file to Javascript and place it in the lib folder.

To update the binary used in package web-tree-sitter, run npm run update-treesitter-wasm. This update is forced to make everytime upgrading the version of web-tree-sitter. This will compile the tree-sitter.wasm file inside the package into a base64 string in a TypeScript file to the src/tree-sitter-parser folder as tree-sitter-inline.ts.

Updating the ANTLR lexer and parser

The ANTLR lexer and parser grammars are defined in src/antlr-grammar, the files in src/antlr-generated are automatically generated from the grammar files. To update these files, run npm run update-antlr. The current grammar files can be found at https://github.com/partiql/partiql-lang-kotlin/tree/main/partiql-parser/src/main/antlr.

Tests

Tests for this package are run using Jest, to run the tests in this package run -npm run test.

Potential improvements

This package currently has a couple of potential points-of-improvement:

  • In the bindings for the parser WASM binary, there is a code path which imports the partiql_playground_bg.wasm file. We don't use this file and code path at runtime due to the inlining of the WASM binary. When doing import checks however, Webpack fails building because it cannot find this binary. To work around this, we include a no-op file with the expected name.
  • In the tests for the language service, there are a couple of untested happy paths. Input couldn't be found to trigger these happy paths.