13.9.0 • Published 10 months ago

@gravity-ui/websql-autocomplete v13.9.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
10 months ago

WebSQL autocomplete

ci_badge npm_package_version_badge last_commit_badge license_badge

A tool that provides autocompletion for various sql dialects.

Autocomplete theory

In order to parse any language, you need a lexer (tokenizer) and a parser (ast builder)

Resources to research:

How everything works

  1. ANTLR4 grammar and lexer for different {dialect} are defined in src/autocomplete/databases/{dialect}/grammar directories.
  2. Actual parsers and lexers for different {dialect} are generated into src/autocomplete/databases/{dialect}/generated directories.
  3. Dialect specific code, which is required for the core logic to work, is put in src/autocomplete/databases/{dialect}/{dialect}-autocomplete.ts files.
  4. The core logic is inside src/autocomplete/shared/autocomplete.ts file. It uses dialect specific helpers to generate autocomplete suggestions based on current cursor position.

How to add a new dialect

  1. Add new dialect files to src/autocomplete/databases/{$dialect}
  2. Add new dialect to the typesVersions, exports variables in package.json
  3. Add new dialect to the databases array in build.js

Main scripts

  • npm run generate - Generate parsers and lexers (Java has to be installed on your system for this to work)
  • npm run test - Run tests
13.8.0

11 months ago

13.7.1

11 months ago

13.9.0

10 months ago

13.8.1

11 months ago

13.6.0

12 months ago

13.7.0

12 months ago

13.4.0

1 year ago

13.3.1

1 year ago

13.5.0

12 months ago

13.2.0

1 year ago

13.3.0

1 year ago

13.0.0

1 year ago

13.1.0

1 year ago

12.7.0

1 year ago

12.8.0

1 year ago

12.7.1

1 year ago

12.3.0

1 year ago

12.1.2

1 year ago

12.4.0

1 year ago

12.5.0

1 year ago

12.4.1

1 year ago

12.6.0

1 year ago

12.4.2

1 year ago

12.0.0

1 year ago

12.1.0

1 year ago

12.2.0

1 year ago

12.1.1

1 year ago

8.3.0

2 years ago

10.0.0

2 years ago

8.2.0

2 years ago

10.1.0

1 year ago

10.2.0

1 year ago

10.3.0

1 year ago

10.2.1

1 year ago

8.4.0

2 years ago

9.1.1

2 years ago

9.1.0

2 years ago

9.0.0

2 years ago

11.0.0

1 year ago

8.1.0

2 years ago

8.0.2

2 years ago

8.0.1

2 years ago

8.0.0

2 years ago