feat: port GLQL to TypeScript

What does this MR do and why?

Adds a TypeScript port of GLQL to go along with the Rust (wasm) based version. The TS version is available under the feature flag glqlTypescript which will be passed to the library by the monolith.

All Rust code and tests have been ported over. WASM tests run in a separate CI job and TS test jobs specifically use typescript version by passing USE_TYPESCRIPT=1 when running tests. I also ported over the graphql-validate job to verify the dump of GraphQL snapshots from the TS version.

Related to: gitlab-org/gitlab#562607

The TS version is also several magnitudes faster than the WASM version:

TS: ~5-6ms to parse a query
Rust (wasm): ~40-50ms

How to set up and validate locally

Numbered steps to set up and validate the change are strongly suggested.

Edited by Himanshu Kapoor

Merge request reports

Loading