From f483a97e79dab33a22764790cbbcce1eb47caa55 Mon Sep 17 00:00:00 2001 From: Edoardo Tenani Date: Mon, 18 Dec 2023 17:17:04 +0100 Subject: [PATCH] implement language server stub --- esql-lsp/.eslintignore | 5 + esql-lsp/.eslintrc.js | 20 + esql-lsp/.gitignore | 4 + esql-lsp/.vscode/extensions.json | 5 + esql-lsp/.vscode/launch.json | 30 + esql-lsp/.vscode/settings.json | 8 + esql-lsp/.vscode/tasks.json | 33 + esql-lsp/.vscodeignore | 15 + esql-lsp/Makefile | 5 + esql-lsp/README.md | 51 + esql-lsp/client/package-lock.json | 1008 +++ esql-lsp/client/package.json | 23 + esql-lsp/client/src/extension.ts | 45 + esql-lsp/client/tsconfig.json | 12 + esql-lsp/package-lock.json | 3703 +++++++++++ esql-lsp/package.json | 71 + esql-lsp/scripts/e2e.sh | 6 + esql-lsp/server/README.md | 6 + esql-lsp/server/package-lock.json | 171 + esql-lsp/server/package.json | 28 + esql-lsp/server/src/caret.ts | 36 + esql-lsp/server/src/grammar/EsqlBaseLexer.g4 | 375 ++ esql-lsp/server/src/grammar/EsqlBaseParser.g4 | 254 + esql-lsp/server/src/grammar/README.md | 1 + .../grammar/generated/EsqlBaseLexer.interp | 365 ++ .../grammar/generated/EsqlBaseLexer.tokens | 157 + .../src/grammar/generated/EsqlBaseLexer.ts | 635 ++ .../grammar/generated/EsqlBaseParser.interp | 256 + .../grammar/generated/EsqlBaseParser.tokens | 157 + .../src/grammar/generated/EsqlBaseParser.ts | 5706 +++++++++++++++++ .../generated/EsqlBaseParserListener.ts | 858 +++ .../generated/EsqlBaseParserVisitor.ts | 543 ++ esql-lsp/server/src/server.ts | 230 + esql-lsp/server/tsconfig.json | 13 + esql-lsp/tsconfig.json | 21 + 35 files changed, 14856 insertions(+) create mode 100644 esql-lsp/.eslintignore create mode 100644 esql-lsp/.eslintrc.js create mode 100644 esql-lsp/.gitignore create mode 100644 esql-lsp/.vscode/extensions.json create mode 100644 esql-lsp/.vscode/launch.json create mode 100644 esql-lsp/.vscode/settings.json create mode 100644 esql-lsp/.vscode/tasks.json create mode 100644 esql-lsp/.vscodeignore create mode 100644 esql-lsp/Makefile create mode 100644 esql-lsp/README.md create mode 100644 esql-lsp/client/package-lock.json create mode 100644 esql-lsp/client/package.json create mode 100644 esql-lsp/client/src/extension.ts create mode 100644 esql-lsp/client/tsconfig.json create mode 100644 esql-lsp/package-lock.json create mode 100644 esql-lsp/package.json create mode 100755 esql-lsp/scripts/e2e.sh create mode 100644 esql-lsp/server/README.md create mode 100644 esql-lsp/server/package-lock.json create mode 100644 esql-lsp/server/package.json create mode 100644 esql-lsp/server/src/caret.ts create mode 100644 esql-lsp/server/src/grammar/EsqlBaseLexer.g4 create mode 100644 esql-lsp/server/src/grammar/EsqlBaseParser.g4 create mode 100644 esql-lsp/server/src/grammar/README.md create mode 100644 esql-lsp/server/src/grammar/generated/EsqlBaseLexer.interp create mode 100644 esql-lsp/server/src/grammar/generated/EsqlBaseLexer.tokens create mode 100644 esql-lsp/server/src/grammar/generated/EsqlBaseLexer.ts create mode 100644 esql-lsp/server/src/grammar/generated/EsqlBaseParser.interp create mode 100644 esql-lsp/server/src/grammar/generated/EsqlBaseParser.tokens create mode 100644 esql-lsp/server/src/grammar/generated/EsqlBaseParser.ts create mode 100644 esql-lsp/server/src/grammar/generated/EsqlBaseParserListener.ts create mode 100644 esql-lsp/server/src/grammar/generated/EsqlBaseParserVisitor.ts create mode 100644 esql-lsp/server/src/server.ts create mode 100644 esql-lsp/server/tsconfig.json create mode 100644 esql-lsp/tsconfig.json diff --git a/esql-lsp/.eslintignore b/esql-lsp/.eslintignore new file mode 100644 index 0000000..1d39096 --- /dev/null +++ b/esql-lsp/.eslintignore @@ -0,0 +1,5 @@ +node_modules/** +client/node_modules/** +client/out/** +server/node_modules/** +server/out/** \ No newline at end of file diff --git a/esql-lsp/.eslintrc.js b/esql-lsp/.eslintrc.js new file mode 100644 index 0000000..f660e39 --- /dev/null +++ b/esql-lsp/.eslintrc.js @@ -0,0 +1,20 @@ +/**@type {import('eslint').Linter.Config} */ +// eslint-disable-next-line no-undef +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + plugins: [ + '@typescript-eslint', + ], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + ], + rules: { + 'semi': [2, "always"], + '@typescript-eslint/no-unused-vars': 0, + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/explicit-module-boundary-types': 0, + '@typescript-eslint/no-non-null-assertion': 0, + } +}; \ No newline at end of file diff --git a/esql-lsp/.gitignore b/esql-lsp/.gitignore new file mode 100644 index 0000000..bf962da --- /dev/null +++ b/esql-lsp/.gitignore @@ -0,0 +1,4 @@ +out +node_modules +client/server +.vscode-test \ No newline at end of file diff --git a/esql-lsp/.vscode/extensions.json b/esql-lsp/.vscode/extensions.json new file mode 100644 index 0000000..3e771fb --- /dev/null +++ b/esql-lsp/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + // https://github.com/smith/esql-tools syntax highlighting + ] +} \ No newline at end of file diff --git a/esql-lsp/.vscode/launch.json b/esql-lsp/.vscode/launch.json new file mode 100644 index 0000000..7d4032f --- /dev/null +++ b/esql-lsp/.vscode/launch.json @@ -0,0 +1,30 @@ +// A launch configuration that compiles the extension and then opens it inside a new window +{ + "version": "0.2.0", + "configurations": [ + { + "type": "extensionHost", + "request": "launch", + "name": "Launch Client", + "runtimeExecutable": "${execPath}", + "args": ["--extensionDevelopmentPath=${workspaceRoot}"], + "outFiles": ["${workspaceRoot}/client/out/**/*.js"], + "preLaunchTask": { + "type": "npm", + "script": "watch" + } + }, + { + "name": "Language Server E2E Test", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": [ + "--extensionDevelopmentPath=${workspaceRoot}", + "--extensionTestsPath=${workspaceRoot}/client/out/test/index", + "${workspaceRoot}/client/testFixture" + ], + "outFiles": ["${workspaceRoot}/client/out/test/**/*.js"] + } + ] +} diff --git a/esql-lsp/.vscode/settings.json b/esql-lsp/.vscode/settings.json new file mode 100644 index 0000000..390d299 --- /dev/null +++ b/esql-lsp/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "editor.insertSpaces": false, + "typescript.tsc.autoDetect": "off", + "typescript.preferences.quoteStyle": "single", + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + } +} \ No newline at end of file diff --git a/esql-lsp/.vscode/tasks.json b/esql-lsp/.vscode/tasks.json new file mode 100644 index 0000000..070d88e --- /dev/null +++ b/esql-lsp/.vscode/tasks.json @@ -0,0 +1,33 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "compile", + "group": "build", + "presentation": { + "panel": "dedicated", + "reveal": "never" + }, + "problemMatcher": [ + "$tsc" + ] + }, + { + "type": "npm", + "script": "watch", + "isBackground": true, + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "panel": "dedicated", + "reveal": "never" + }, + "problemMatcher": [ + "$tsc-watch" + ] + } + ] +} \ No newline at end of file diff --git a/esql-lsp/.vscodeignore b/esql-lsp/.vscodeignore new file mode 100644 index 0000000..2a6b6a9 --- /dev/null +++ b/esql-lsp/.vscodeignore @@ -0,0 +1,15 @@ +.vscode/** +**/*.ts +**/*.map +.gitignore +**/tsconfig.json +**/tsconfig.base.json +contributing.md +.travis.yml +client/node_modules/** +!client/node_modules/vscode-jsonrpc/** +!client/node_modules/vscode-languageclient/** +!client/node_modules/vscode-languageserver-protocol/** +!client/node_modules/vscode-languageserver-types/** +!client/node_modules/{minimatch,brace-expansion,concat-map,balanced-match}/** +!client/node_modules/{semver,lru-cache,yallist}/** \ No newline at end of file diff --git a/esql-lsp/Makefile b/esql-lsp/Makefile new file mode 100644 index 0000000..db732fa --- /dev/null +++ b/esql-lsp/Makefile @@ -0,0 +1,5 @@ + +.PHONY: deps +deps: + sudo apt install openjdk-11-jre-headless + # download https://www.antlr.org/download.html latest \ No newline at end of file diff --git a/esql-lsp/README.md b/esql-lsp/README.md new file mode 100644 index 0000000..a03df24 --- /dev/null +++ b/esql-lsp/README.md @@ -0,0 +1,51 @@ +# ES|QL LSP + +**WARNING**: experimental. Very exprimental. + +## Requirements + +Java 11 is required to run `antlr4ng-cli`, only needed in development to update TS code generated from ANTLR4 grammar files. + +## Functionality + +This Language Server works for `.esql` files. It *aims* hat having the following language features: +- Completions (not fully working) +- Diagnostics (not implemented) + +Developer can rely on the e2e test suite to verify behaviour. + + +### What works + +Autocomplete for source tokens. + +### What does not work + +Everything else. + +## Structure + +``` +. +├── client // Language Client +│ ├── src +│ │ ├── test // End to End tests for Language Client / Server +│ │ └── extension.ts // Language Client entry point +├── package.json // The extension manifest. +└── server // Language Server + └── src + └── server.ts // Language Server entry point +``` + +## Running the Sample + +**Note**: You need JRE installed, version 11. + +- Run `npm install` in this folder. This installs all necessary npm modules in both the client and server folder +- Open VS Code on this folder. +- Press Ctrl+Shift+B to start compiling the client and server in [watch mode](https://code.visualstudio.com/docs/editor/tasks#:~:text=The%20first%20entry%20executes,the%20HelloWorld.js%20file.). +- Switch to the Run and Debug View in the Sidebar (Ctrl+Shift+D). +- Select `Launch Client` from the drop down (if it is not already). +- Press ▷ to run the launch config (F5). +- In the [Extension Development Host](https://code.visualstudio.com/api/get-started/your-first-extension#:~:text=Then%2C%20inside%20the%20editor%2C%20press%20F5.%20This%20will%20compile%20and%20run%20the%20extension%20in%20a%20new%20Extension%20Development%20Host%20window.) instance of VSCode, open a document in 'esql' language mode. + - Type `f` or press `ctrl+space` to see completions. diff --git a/esql-lsp/client/package-lock.json b/esql-lsp/client/package-lock.json new file mode 100644 index 0000000..43e20cb --- /dev/null +++ b/esql-lsp/client/package-lock.json @@ -0,0 +1,1008 @@ +{ + "name": "lsp-esql-client", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "lsp-esql-client", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "vscode-languageclient": "^8.1.0" + }, + "devDependencies": { + "@types/glob": "^8.1.0", + "@types/vscode": "^1.75.1", + "@vscode/test-electron": "^2.2.3" + }, + "engines": { + "vscode": "^1.75.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/vscode": { + "version": "1.75.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.75.1.tgz", + "integrity": "sha512-emg7wdsTFzdi+elvoyoA+Q8keEautdQHyY5LNmHVM4PTpY8JgOTVADrGVyXGepJ6dVW2OS5/xnLUWh+nZxvdiA==", + "dev": true + }, + "node_modules/@vscode/test-electron": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.2.3.tgz", + "integrity": "sha512-7DmdGYQTqRNaLHKG3j56buc9DkstriY4aV0S3Zj32u0U9/T0L8vwWAC9QGCh1meu1VXDEla1ze27TkqysHGP0Q==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@vscode/test-electron/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@vscode/test-electron/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@vscode/test-electron/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@vscode/test-electron/node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@vscode/test-electron/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@vscode/test-electron/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true, + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", + "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.3" + }, + "engines": { + "vscode": "^1.67.0" + } + }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "dependencies": { + "vscode-jsonrpc": "8.1.0", + "vscode-languageserver-types": "3.17.3" + } + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, + "dependencies": { + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, + "requires": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/vscode": { + "version": "1.75.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.75.1.tgz", + "integrity": "sha512-emg7wdsTFzdi+elvoyoA+Q8keEautdQHyY5LNmHVM4PTpY8JgOTVADrGVyXGepJ6dVW2OS5/xnLUWh+nZxvdiA==", + "dev": true + }, + "@vscode/test-electron": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.2.3.tgz", + "integrity": "sha512-7DmdGYQTqRNaLHKG3j56buc9DkstriY4aV0S3Zj32u0U9/T0L8vwWAC9QGCh1meu1VXDEla1ze27TkqysHGP0Q==", + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "dev": true, + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==" + }, + "vscode-languageclient": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", + "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", + "requires": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "vscode-languageserver-protocol": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "requires": { + "vscode-jsonrpc": "8.1.0", + "vscode-languageserver-types": "3.17.3" + } + }, + "vscode-languageserver-types": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/esql-lsp/client/package.json b/esql-lsp/client/package.json new file mode 100644 index 0000000..fdb6295 --- /dev/null +++ b/esql-lsp/client/package.json @@ -0,0 +1,23 @@ +{ + "name": "lsp-esql-client", + "description": "VSCode client for ES|QL LSP", + "author": "Edoardo Tenani", + "license": "MIT", + "version": "0.0.1", + "publisher": "endorama", + "repository": { + "type": "git", + "url": "" + }, + "engines": { + "vscode": "^1.75.0" + }, + "dependencies": { + "vscode-languageclient": "^8.1.0" + }, + "devDependencies": { + "@types/glob": "^8.1.0", + "@types/vscode": "^1.75.1", + "@vscode/test-electron": "^2.2.3" + } +} diff --git a/esql-lsp/client/src/extension.ts b/esql-lsp/client/src/extension.ts new file mode 100644 index 0000000..5ae44e6 --- /dev/null +++ b/esql-lsp/client/src/extension.ts @@ -0,0 +1,45 @@ +import * as path from 'path'; +import { ExtensionContext } from 'vscode'; + +import { + LanguageClient, + LanguageClientOptions, + ServerOptions, + TransportKind +} from 'vscode-languageclient/node'; + +let client: LanguageClient; + +export function activate(context: ExtensionContext) { + const serverModule = context.asAbsolutePath( + path.join('server', 'out', 'server.js') + ); + + const serverOptions: ServerOptions = { + run: { module: serverModule, transport: TransportKind.ipc }, + debug: { + module: serverModule, + transport: TransportKind.ipc, + } + }; + + const clientOptions: LanguageClientOptions = { + documentSelector: [{ scheme: 'file', language: 'ESQL' }] + }; + + client = new LanguageClient( + 'ESQL-lsp', + 'ES|QL Language Server', + serverOptions, + clientOptions + ); + + client.start(); +} + +export function deactivate(): Thenable | undefined { + if (!client) { + return undefined; + } + return client.stop(); +} diff --git a/esql-lsp/client/tsconfig.json b/esql-lsp/client/tsconfig.json new file mode 100644 index 0000000..bc08aa2 --- /dev/null +++ b/esql-lsp/client/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2020", + "lib": ["es2020"], + "outDir": "out", + "rootDir": "src", + "sourceMap": true + }, + "include": ["src"], + "exclude": ["node_modules", ".vscode-test"] +} diff --git a/esql-lsp/package-lock.json b/esql-lsp/package-lock.json new file mode 100644 index 0000000..9a16ec3 --- /dev/null +++ b/esql-lsp/package-lock.json @@ -0,0 +1,3703 @@ +{ + "name": "lsp-sample", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "lsp-sample", + "version": "1.0.0", + "hasInstallScript": true, + "license": "MIT", + "devDependencies": { + "@types/mocha": "^9.1.0", + "@types/node": "^16.18.34", + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "eslint": "^8.35.0", + "mocha": "^9.2.1", + "typescript": "^5.3.2" + }, + "engines": { + "vscode": "^1.75.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", + "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", + "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", + "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.18.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.34.tgz", + "integrity": "sha512-VmVm7gXwhkUimRfBwVI1CHhwp86jDWR04B5FGebMMyxV90SlCmFujwUHrxTD4oO+SOYU86SoxvhgeRQJY7iXFg==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", + "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/type-utils": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", + "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", + "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", + "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", + "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", + "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", + "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", + "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", + "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^2.0.0", + "@eslint/js": "8.35.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.6.tgz", + "integrity": "sha512-PlVX4Y0lDTN6E2V4ES2tEdyvXkeKzxa8c/vo0pxPr/TqbztddTP0yn7zZylIyiAuxerqj0Q5GhpJ1YJCP8LaZQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", + "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", + "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "@types/mocha": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", + "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "dev": true + }, + "@types/node": { + "version": "16.18.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.34.tgz", + "integrity": "sha512-VmVm7gXwhkUimRfBwVI1CHhwp86jDWR04B5FGebMMyxV90SlCmFujwUHrxTD4oO+SOYU86SoxvhgeRQJY7iXFg==", + "dev": true + }, + "@types/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", + "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/type-utils": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", + "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", + "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", + "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/types": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", + "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", + "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", + "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", + "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.7.0", + "eslint-visitor-keys": "^3.4.1" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", + "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^2.0.0", + "@eslint/js": "8.35.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "requires": {} + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, + "workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "y18n": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.6.tgz", + "integrity": "sha512-PlVX4Y0lDTN6E2V4ES2tEdyvXkeKzxa8c/vo0pxPr/TqbztddTP0yn7zZylIyiAuxerqj0Q5GhpJ1YJCP8LaZQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/esql-lsp/package.json b/esql-lsp/package.json new file mode 100644 index 0000000..4e6a250 --- /dev/null +++ b/esql-lsp/package.json @@ -0,0 +1,71 @@ +{ + "name": "lsp-esql", + "description": "ES|QL Language Server", + "author": "Edoardo Tenani", + "license": "MIT", + "version": "0.0.1", + "repository": { + "type": "git", + "url": "" + }, + "publisher": "endorama", + "categories": [], + "keywords": [ + "multi-root ready" + ], + "engines": { + "vscode": "^1.75.0" + }, + "main": "./client/out/extension", + "activationEvents": [ + "onLanguage:ESQL" + ], + "contributes": { + "languages": [ + { + "id": "ESQL", + "extensions": [ ".esql" ] + } + ], + "configuration": { + "type": "object", + "title": "ESQL Language Server configuration", + "properties": { + "esqllsp.maxNumberOfProblems": { + "scope": "resource", + "type": "number", + "default": 10, + "description": "Limit the maximum number of problems produced by the server to prevent consuming too much resources." + }, + "esqllsp.trace.server": { + "scope": "window", + "type": "string", + "enum": [ + "off", + "messages", + "verbose" + ], + "default": "off", + "description": "Traces the communication between VS Code and the language server." + } + } + } + }, + "scripts": { + "vscode:prepublish": "cd ./server && npm run generate && cd .. && npm run compile", + "compile": "tsc -b", + "watch": "tsc -b -w", + "lint": "eslint ./client/src ./server/src --ext .ts,.tsx", + "postinstall": "cd client && npm install && cd ../server && npm install && cd ..", + "test": "sh ./scripts/e2e.sh" + }, + "devDependencies": { + "@types/mocha": "^9.1.0", + "@types/node": "^16.18.34", + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "eslint": "^8.35.0", + "mocha": "^9.2.1", + "typescript": "^5.3.2" + } +} diff --git a/esql-lsp/scripts/e2e.sh b/esql-lsp/scripts/e2e.sh new file mode 100755 index 0000000..860c62e --- /dev/null +++ b/esql-lsp/scripts/e2e.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +export CODE_TESTS_PATH="$(pwd)/client/out/test" +export CODE_TESTS_WORKSPACE="$(pwd)/client/testFixture" + +node "$(pwd)/client/out/test/runTest" \ No newline at end of file diff --git a/esql-lsp/server/README.md b/esql-lsp/server/README.md new file mode 100644 index 0000000..22fdc81 --- /dev/null +++ b/esql-lsp/server/README.md @@ -0,0 +1,6 @@ + +## Generate Lexer and Parser from ANTLR4 grammar + +Run `npm run generate`. This task is run as part of `npm run compile` in the parent folder. + +**Note**: Java 11 is required. diff --git a/esql-lsp/server/package-lock.json b/esql-lsp/server/package-lock.json new file mode 100644 index 0000000..3e5a351 --- /dev/null +++ b/esql-lsp/server/package-lock.json @@ -0,0 +1,171 @@ +{ + "name": "lsp-sample-server", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "lsp-sample-server", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "antlr4-c3": "^3.3.5", + "antlr4ng": "^2.0.4", + "vscode-languageserver": "^8.1.0", + "vscode-languageserver-textdocument": "^1.0.8" + }, + "devDependencies": { + "@types/node": "^20.10.5", + "antlr4ng-cli": "^1.0.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/antlr4-c3": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/antlr4-c3/-/antlr4-c3-3.3.5.tgz", + "integrity": "sha512-kJ2SRxa6zns5aXSqz90ogPchzUNTO4LshXsvTqe4a5fvJci1G67H1cMMhYGhcWqkZezyOFxPZ8XrZ+s7ivhWKw==", + "dependencies": { + "antlr4ng": "^2.0.0" + } + }, + "node_modules/antlr4ng": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/antlr4ng/-/antlr4ng-2.0.4.tgz", + "integrity": "sha512-ck0gqTfdTDOGwz4QQSEMN05mcsNWN75DCQiJS07jmpV8QGuC3oaU+GKusFuwTF/IYHqGQxNHBQvvg1Xk8a56CA==", + "peerDependencies": { + "antlr4ng-cli": "^1.0.0" + } + }, + "node_modules/antlr4ng-cli": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/antlr4ng-cli/-/antlr4ng-cli-1.0.7.tgz", + "integrity": "sha512-qN2FsDBmLvsQcA5CWTrPz8I8gNXeS1fgXBBhI78VyxBSBV/EJgqy8ks6IDTC9jyugpl40csCQ4sL5K4i2YZ/2w==", + "bin": { + "antlr4ng": "index.js" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz", + "integrity": "sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==", + "dependencies": { + "vscode-languageserver-protocol": "3.17.3" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "dependencies": { + "vscode-jsonrpc": "8.1.0", + "vscode-languageserver-types": "3.17.3" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz", + "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" + } + }, + "dependencies": { + "@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "antlr4-c3": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/antlr4-c3/-/antlr4-c3-3.3.5.tgz", + "integrity": "sha512-kJ2SRxa6zns5aXSqz90ogPchzUNTO4LshXsvTqe4a5fvJci1G67H1cMMhYGhcWqkZezyOFxPZ8XrZ+s7ivhWKw==", + "requires": { + "antlr4ng": "^2.0.0" + } + }, + "antlr4ng": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/antlr4ng/-/antlr4ng-2.0.4.tgz", + "integrity": "sha512-ck0gqTfdTDOGwz4QQSEMN05mcsNWN75DCQiJS07jmpV8QGuC3oaU+GKusFuwTF/IYHqGQxNHBQvvg1Xk8a56CA==", + "requires": {} + }, + "antlr4ng-cli": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/antlr4ng-cli/-/antlr4ng-cli-1.0.7.tgz", + "integrity": "sha512-qN2FsDBmLvsQcA5CWTrPz8I8gNXeS1fgXBBhI78VyxBSBV/EJgqy8ks6IDTC9jyugpl40csCQ4sL5K4i2YZ/2w==" + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==" + }, + "vscode-languageserver": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz", + "integrity": "sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==", + "requires": { + "vscode-languageserver-protocol": "3.17.3" + } + }, + "vscode-languageserver-protocol": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "requires": { + "vscode-jsonrpc": "8.1.0", + "vscode-languageserver-types": "3.17.3" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz", + "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==" + }, + "vscode-languageserver-types": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" + } + } +} diff --git a/esql-lsp/server/package.json b/esql-lsp/server/package.json new file mode 100644 index 0000000..d2a681f --- /dev/null +++ b/esql-lsp/server/package.json @@ -0,0 +1,28 @@ +{ + "name": "lsp-esql", + "description": "ES|QL LSP", + "version": "1.0.0", + "author": "Edoardo Tenani", + "license": "MIT", + "type":"module", + "engines": { + "node": "*" + }, + "repository": { + "type": "git", + "url": "" + }, + "dependencies": { + "antlr4-c3": "^3.3.5", + "antlr4ng": "^2.0.4", + "vscode-languageserver": "^8.1.0", + "vscode-languageserver-textdocument": "^1.0.8" + }, + "scripts": { + "generate": "npx antlr4ng -Dlanguage=TypeScript -o ./src/grammar/generated/ -visitor -listener -Xexact-output-dir ./src/grammar/EsqlBaseLexer.g4 ./src/grammar/EsqlBaseParser.g4" + }, + "devDependencies": { + "@types/node": "^20.10.5", + "antlr4ng-cli": "^1.0.7" + } +} diff --git a/esql-lsp/server/src/caret.ts b/esql-lsp/server/src/caret.ts new file mode 100644 index 0000000..4f53891 --- /dev/null +++ b/esql-lsp/server/src/caret.ts @@ -0,0 +1,36 @@ +import {ParseTree, TerminalNode} from "antlr4ng"; + +export type CaretPosition = { line: number, column: number }; + +// NOTE: this code does not account for tokens that span multiple lines. +export function computeCaretTokenIndex(parseTree: ParseTree | null, caretPosition: CaretPosition): number | undefined { + if (!parseTree) { + return undefined; + } + + if(parseTree instanceof TerminalNode) { + return computeCaretTokenIndexOfTerminalNode(parseTree, caretPosition); + } else { + return computeCaretTokenIndexOfChildNode(parseTree, caretPosition); + } +} + +function computeCaretTokenIndexOfTerminalNode(parseTree: TerminalNode, caretPosition: CaretPosition): number | undefined { + let start = parseTree.symbol.column; + let stop = parseTree.symbol.column + parseTree.getText().length; + if (parseTree.symbol.line == caretPosition.line && start <= caretPosition.column && stop >= caretPosition.column) { + return parseTree.symbol.tokenIndex; + } else { + return undefined; + } +} + +function computeCaretTokenIndexOfChildNode(parseTree: ParseTree, caretPosition: CaretPosition): number | undefined { + for (let i = 0; i < parseTree.getChildCount(); i++) { + let index = computeCaretTokenIndex(parseTree.getChild(i), caretPosition); + if (index !== undefined) { + return index; + } + } + return undefined; +} \ No newline at end of file diff --git a/esql-lsp/server/src/grammar/EsqlBaseLexer.g4 b/esql-lsp/server/src/grammar/EsqlBaseLexer.g4 new file mode 100644 index 0000000..dbaefa2 --- /dev/null +++ b/esql-lsp/server/src/grammar/EsqlBaseLexer.g4 @@ -0,0 +1,375 @@ +lexer grammar EsqlBaseLexer; + +DISSECT : 'dissect' -> pushMode(EXPRESSION_MODE); +DROP : 'drop' -> pushMode(PROJECT_MODE); +ENRICH : 'enrich' -> pushMode(ENRICH_MODE); +EVAL : 'eval' -> pushMode(EXPRESSION_MODE); +EXPLAIN : 'explain' -> pushMode(EXPLAIN_MODE); +FROM : 'from' -> pushMode(FROM_MODE); +GROK : 'grok' -> pushMode(EXPRESSION_MODE); +INLINESTATS : 'inlinestats' -> pushMode(EXPRESSION_MODE); +KEEP : 'keep' -> pushMode(PROJECT_MODE); +LIMIT : 'limit' -> pushMode(EXPRESSION_MODE); +MV_EXPAND : 'mv_expand' -> pushMode(MVEXPAND_MODE); +PROJECT : 'project' -> pushMode(PROJECT_MODE); +RENAME : 'rename' -> pushMode(RENAME_MODE); +ROW : 'row' -> pushMode(EXPRESSION_MODE); +SHOW : 'show' -> pushMode(SHOW_MODE); +SORT : 'sort' -> pushMode(EXPRESSION_MODE); +STATS : 'stats' -> pushMode(EXPRESSION_MODE); +WHERE : 'where' -> pushMode(EXPRESSION_MODE); +UNKNOWN_CMD : ~[ \r\n\t[\]/]+ -> pushMode(EXPRESSION_MODE); + +LINE_COMMENT + : '//' ~[\r\n]* '\r'? '\n'? -> channel(HIDDEN) + ; + +MULTILINE_COMMENT + : '/*' (MULTILINE_COMMENT|.)*? '*/' -> channel(HIDDEN) + ; + +WS + : [ \r\n\t]+ -> channel(HIDDEN) + ; +// +// Explain +// +mode EXPLAIN_MODE; +EXPLAIN_OPENING_BRACKET : OPENING_BRACKET -> type(OPENING_BRACKET), pushMode(DEFAULT_MODE); +EXPLAIN_PIPE : PIPE -> type(PIPE), popMode; +EXPLAIN_WS : WS -> channel(HIDDEN); +EXPLAIN_LINE_COMMENT : LINE_COMMENT -> channel(HIDDEN); +EXPLAIN_MULTILINE_COMMENT : MULTILINE_COMMENT -> channel(HIDDEN); + +// +// Expression - used by most command +// +mode EXPRESSION_MODE; + +PIPE : '|' -> popMode; + +fragment DIGIT + : [0-9] + ; + +fragment LETTER + : [A-Za-z] + ; + +fragment ESCAPE_SEQUENCE + : '\\' [tnr"\\] + ; + +fragment UNESCAPED_CHARS + : ~[\r\n"\\] + ; + +fragment EXPONENT + : [Ee] [+-]? DIGIT+ + ; + +fragment ASPERAND + : '@' + ; + +fragment BACKQUOTE + : '`' + ; + +fragment BACKQUOTE_BLOCK + : ~'`' + | '``' + ; + +fragment UNDERSCORE + : '_' + ; + +fragment UNQUOTED_ID_BODY + : (LETTER | DIGIT | UNDERSCORE) + ; + +STRING + : '"' (ESCAPE_SEQUENCE | UNESCAPED_CHARS)* '"' + | '"""' (~[\r\n])*? '"""' '"'? '"'? + ; + +INTEGER_LITERAL + : DIGIT+ + ; + +DECIMAL_LITERAL + : DIGIT+ DOT DIGIT* + | DOT DIGIT+ + | DIGIT+ (DOT DIGIT*)? EXPONENT + | DOT DIGIT+ EXPONENT + ; + +BY : 'by'; + +AND : 'and'; +ASC : 'asc'; +ASSIGN : '='; +COMMA : ','; +DESC : 'desc'; +DOT : '.'; +FALSE : 'false'; +FIRST : 'first'; +LAST : 'last'; +LP : '('; +IN: 'in'; +IS: 'is'; +LIKE: 'like'; +NOT : 'not'; +NULL : 'null'; +NULLS : 'nulls'; +OR : 'or'; +PARAM: '?'; +RLIKE: 'rlike'; +RP : ')'; +TRUE : 'true'; + +EQ : '=='; +NEQ : '!='; +LT : '<'; +LTE : '<='; +GT : '>'; +GTE : '>='; + +PLUS : '+'; +MINUS : '-'; +ASTERISK : '*'; +SLASH : '/'; +PERCENT : '%'; + +// Brackets are funny. We can happen upon a CLOSING_BRACKET in two ways - one +// way is to start in an explain command which then shifts us to expression +// mode. Thus, the two popModes on CLOSING_BRACKET. The other way could as +// the start of a multivalued field constant. To line up with the double pop +// the explain mode needs, we double push when we see that. +OPENING_BRACKET : '[' -> pushMode(EXPRESSION_MODE), pushMode(EXPRESSION_MODE); +CLOSING_BRACKET : ']' -> popMode, popMode; + +UNQUOTED_IDENTIFIER + : LETTER UNQUOTED_ID_BODY* + // only allow @ at beginning of identifier to keep the option to allow @ as infix operator in the future + // also, single `_` and `@` characters are not valid identifiers + | (UNDERSCORE | ASPERAND) UNQUOTED_ID_BODY+ + ; + +QUOTED_IDENTIFIER + : BACKQUOTE BACKQUOTE_BLOCK+ BACKQUOTE + ; + +EXPR_LINE_COMMENT + : LINE_COMMENT -> channel(HIDDEN) + ; + +EXPR_MULTILINE_COMMENT + : MULTILINE_COMMENT -> channel(HIDDEN) + ; + +EXPR_WS + : WS -> channel(HIDDEN) + ; +// +// FROM command +// +mode FROM_MODE; +FROM_PIPE : PIPE -> type(PIPE), popMode; +FROM_OPENING_BRACKET : OPENING_BRACKET -> type(OPENING_BRACKET), pushMode(FROM_MODE), pushMode(FROM_MODE); +FROM_CLOSING_BRACKET : CLOSING_BRACKET -> type(CLOSING_BRACKET), popMode, popMode; +FROM_COMMA : COMMA -> type(COMMA); +FROM_ASSIGN : ASSIGN -> type(ASSIGN); + +METADATA: 'metadata'; + +fragment FROM_UNQUOTED_IDENTIFIER_PART + : ~[=`|,[\]/ \t\r\n] + | '/' ~[*/] // allow single / but not followed by another / or * which would start a comment + ; + +FROM_UNQUOTED_IDENTIFIER + : FROM_UNQUOTED_IDENTIFIER_PART+ + ; + +FROM_QUOTED_IDENTIFIER + : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER) + ; + +FROM_LINE_COMMENT + : LINE_COMMENT -> channel(HIDDEN) + ; + +FROM_MULTILINE_COMMENT + : MULTILINE_COMMENT -> channel(HIDDEN) + ; + +FROM_WS + : WS -> channel(HIDDEN) + ; +// +// DROP, KEEP, PROJECT +// +mode PROJECT_MODE; +PROJECT_PIPE : PIPE -> type(PIPE), popMode; +PROJECT_DOT: DOT -> type(DOT); +PROJECT_COMMA : COMMA -> type(COMMA); + +fragment UNQUOTED_ID_BODY_WITH_PATTERN + : (LETTER | DIGIT | UNDERSCORE | ASTERISK) + ; + +PROJECT_UNQUOTED_IDENTIFIER + : (LETTER | ASTERISK) UNQUOTED_ID_BODY_WITH_PATTERN* + | (UNDERSCORE | ASPERAND) UNQUOTED_ID_BODY_WITH_PATTERN+ + ; + +PROJECT_QUOTED_IDENTIFIER + : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER) + ; + +PROJECT_LINE_COMMENT + : LINE_COMMENT -> channel(HIDDEN) + ; + +PROJECT_MULTILINE_COMMENT + : MULTILINE_COMMENT -> channel(HIDDEN) + ; + +PROJECT_WS + : WS -> channel(HIDDEN) + ; +// +// | RENAME a.b AS x, c AS y +// +mode RENAME_MODE; +RENAME_PIPE : PIPE -> type(PIPE), popMode; +RENAME_ASSIGN : ASSIGN -> type(ASSIGN); +RENAME_COMMA : COMMA -> type(COMMA); +RENAME_DOT: DOT -> type(DOT); + +AS : 'as'; + +RENAME_QUOTED_IDENTIFIER + : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER) + ; + +// use the unquoted pattern to let the parser invalidate fields with * +RENAME_UNQUOTED_IDENTIFIER + : PROJECT_UNQUOTED_IDENTIFIER -> type(PROJECT_UNQUOTED_IDENTIFIER) + ; + +RENAME_LINE_COMMENT + : LINE_COMMENT -> channel(HIDDEN) + ; + +RENAME_MULTILINE_COMMENT + : MULTILINE_COMMENT -> channel(HIDDEN) + ; + +RENAME_WS + : WS -> channel(HIDDEN) + ; + +// | ENRICH ON key WITH fields +mode ENRICH_MODE; +ENRICH_PIPE : PIPE -> type(PIPE), popMode; + +ON : 'on' -> pushMode(ENRICH_FIELD_MODE); +WITH : 'with' -> pushMode(ENRICH_FIELD_MODE); + +// use the unquoted pattern to let the parser invalidate fields with * +ENRICH_POLICY_UNQUOTED_IDENTIFIER + : FROM_UNQUOTED_IDENTIFIER -> type(FROM_UNQUOTED_IDENTIFIER) + ; + +ENRICH_QUOTED_IDENTIFIER + : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER) + ; + +ENRICH_LINE_COMMENT + : LINE_COMMENT -> channel(HIDDEN) + ; + +ENRICH_MULTILINE_COMMENT + : MULTILINE_COMMENT -> channel(HIDDEN) + ; + +ENRICH_WS + : WS -> channel(HIDDEN) + ; + +// submode for Enrich to allow different lexing between policy identifier (loose) and field identifiers +mode ENRICH_FIELD_MODE; +ENRICH_FIELD_PIPE : PIPE -> type(PIPE), popMode, popMode; +ENRICH_FIELD_ASSIGN : ASSIGN -> type(ASSIGN); +ENRICH_FIELD_COMMA : COMMA -> type(COMMA); +ENRICH_FIELD_DOT: DOT -> type(DOT); + +ENRICH_FIELD_WITH : WITH -> type(WITH) ; + +ENRICH_FIELD_UNQUOTED_IDENTIFIER + : PROJECT_UNQUOTED_IDENTIFIER -> type(PROJECT_UNQUOTED_IDENTIFIER) + ; + +ENRICH_FIELD_QUOTED_IDENTIFIER + : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER) + ; + +ENRICH_FIELD_LINE_COMMENT + : LINE_COMMENT -> channel(HIDDEN) + ; + +ENRICH_FIELD_MULTILINE_COMMENT + : MULTILINE_COMMENT -> channel(HIDDEN) + ; + +ENRICH_FIELD_WS + : WS -> channel(HIDDEN) + ; + +mode MVEXPAND_MODE; +MVEXPAND_PIPE : PIPE -> type(PIPE), popMode; +MVEXPAND_DOT: DOT -> type(DOT); + +MVEXPAND_QUOTED_IDENTIFIER + : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER) + ; + +MVEXPAND_UNQUOTED_IDENTIFIER + : UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER) + ; + +MVEXPAND_LINE_COMMENT + : LINE_COMMENT -> channel(HIDDEN) + ; + +MVEXPAND_MULTILINE_COMMENT + : MULTILINE_COMMENT -> channel(HIDDEN) + ; + +MVEXPAND_WS + : WS -> channel(HIDDEN) + ; + +// +// SHOW INFO +// +mode SHOW_MODE; +SHOW_PIPE : PIPE -> type(PIPE), popMode; + +INFO : 'info'; +FUNCTIONS : 'functions'; + +SHOW_LINE_COMMENT + : LINE_COMMENT -> channel(HIDDEN) + ; + +SHOW_MULTILINE_COMMENT + : MULTILINE_COMMENT -> channel(HIDDEN) + ; + +SHOW_WS + : WS -> channel(HIDDEN) + ; diff --git a/esql-lsp/server/src/grammar/EsqlBaseParser.g4 b/esql-lsp/server/src/grammar/EsqlBaseParser.g4 new file mode 100644 index 0000000..cdf0cea --- /dev/null +++ b/esql-lsp/server/src/grammar/EsqlBaseParser.g4 @@ -0,0 +1,254 @@ + +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +parser grammar EsqlBaseParser; + +options {tokenVocab=EsqlBaseLexer;} + +singleStatement + : query EOF + ; + +query + : sourceCommand #singleCommandQuery + | query PIPE processingCommand #compositeQuery + ; + +sourceCommand + : explainCommand + | fromCommand + | rowCommand + | showCommand + ; + +processingCommand + : evalCommand + | inlinestatsCommand + | limitCommand + | keepCommand + | sortCommand + | statsCommand + | whereCommand + | dropCommand + | renameCommand + | dissectCommand + | grokCommand + | enrichCommand + | mvExpandCommand + ; + +whereCommand + : WHERE booleanExpression + ; + +booleanExpression + : NOT booleanExpression #logicalNot + | valueExpression #booleanDefault + | regexBooleanExpression #regexExpression + | left=booleanExpression operator=AND right=booleanExpression #logicalBinary + | left=booleanExpression operator=OR right=booleanExpression #logicalBinary + | valueExpression (NOT)? IN LP valueExpression (COMMA valueExpression)* RP #logicalIn + | valueExpression IS NOT? NULL #isNull + ; + +regexBooleanExpression + : valueExpression (NOT)? kind=LIKE pattern=string + | valueExpression (NOT)? kind=RLIKE pattern=string + ; + +valueExpression + : operatorExpression #valueExpressionDefault + | left=operatorExpression comparisonOperator right=operatorExpression #comparison + ; + +operatorExpression + : primaryExpression #operatorExpressionDefault + | operator=(MINUS | PLUS) operatorExpression #arithmeticUnary + | left=operatorExpression operator=(ASTERISK | SLASH | PERCENT) right=operatorExpression #arithmeticBinary + | left=operatorExpression operator=(PLUS | MINUS) right=operatorExpression #arithmeticBinary + ; + +primaryExpression + : constant #constantDefault + | qualifiedName #dereference + | functionExpression #function + | LP booleanExpression RP #parenthesizedExpression + ; + +functionExpression + : identifier LP (ASTERISK | (booleanExpression (COMMA booleanExpression)*))? RP + ; + +rowCommand + : ROW fields + ; + +fields + : field (COMMA field)* + ; + +field + : booleanExpression + | qualifiedName ASSIGN booleanExpression + ; + +fromCommand + : FROM fromIdentifier (COMMA fromIdentifier)* metadata? + ; + +metadata + : OPENING_BRACKET METADATA fromIdentifier (COMMA fromIdentifier)* CLOSING_BRACKET + ; + + +evalCommand + : EVAL fields + ; + +statsCommand + : STATS fields? (BY grouping)? + ; + +inlinestatsCommand + : INLINESTATS fields (BY grouping)? + ; + +grouping + : qualifiedName (COMMA qualifiedName)* + ; + +fromIdentifier + : FROM_UNQUOTED_IDENTIFIER + | QUOTED_IDENTIFIER + ; + +qualifiedName + : identifier (DOT identifier)* + ; + +qualifiedNamePattern + : identifierPattern (DOT identifierPattern)* + ; + +identifier + : UNQUOTED_IDENTIFIER + | QUOTED_IDENTIFIER + ; + +identifierPattern + : PROJECT_UNQUOTED_IDENTIFIER + | QUOTED_IDENTIFIER + ; + +constant + : NULL #nullLiteral + | integerValue UNQUOTED_IDENTIFIER #qualifiedIntegerLiteral + | decimalValue #decimalLiteral + | integerValue #integerLiteral + | booleanValue #booleanLiteral + | PARAM #inputParam + | string #stringLiteral + | OPENING_BRACKET numericValue (COMMA numericValue)* CLOSING_BRACKET #numericArrayLiteral + | OPENING_BRACKET booleanValue (COMMA booleanValue)* CLOSING_BRACKET #booleanArrayLiteral + | OPENING_BRACKET string (COMMA string)* CLOSING_BRACKET #stringArrayLiteral + ; + +limitCommand + : LIMIT INTEGER_LITERAL + ; + +sortCommand + : SORT orderExpression (COMMA orderExpression)* + ; + +orderExpression + : booleanExpression ordering=(ASC | DESC)? (NULLS nullOrdering=(FIRST | LAST))? + ; + +keepCommand + : KEEP qualifiedNamePattern (COMMA qualifiedNamePattern)* + | PROJECT qualifiedNamePattern (COMMA qualifiedNamePattern)* + ; + +dropCommand + : DROP qualifiedNamePattern (COMMA qualifiedNamePattern)* + ; + +renameCommand + : RENAME renameClause (COMMA renameClause)* + ; + +renameClause: + oldName=qualifiedNamePattern AS newName=qualifiedNamePattern + ; + +dissectCommand + : DISSECT primaryExpression string commandOptions? + ; + +grokCommand + : GROK primaryExpression string + ; + +mvExpandCommand + : MV_EXPAND qualifiedName + ; + +commandOptions + : commandOption (COMMA commandOption)* + ; + +commandOption + : identifier ASSIGN constant + ; + +booleanValue + : TRUE | FALSE + ; + +numericValue + : decimalValue + | integerValue + ; + +decimalValue + : (PLUS | MINUS)? DECIMAL_LITERAL + ; + +integerValue + : (PLUS | MINUS)? INTEGER_LITERAL + ; + +string + : STRING + ; + +comparisonOperator + : EQ | NEQ | LT | LTE | GT | GTE + ; + +explainCommand + : EXPLAIN subqueryExpression + ; + +subqueryExpression + : OPENING_BRACKET query CLOSING_BRACKET + ; + +showCommand + : SHOW INFO #showInfo + | SHOW FUNCTIONS #showFunctions + ; + +enrichCommand + : ENRICH policyName=fromIdentifier (ON matchField=qualifiedNamePattern)? (WITH enrichWithClause (COMMA enrichWithClause)*)? + ; + +enrichWithClause + : (newName=qualifiedNamePattern ASSIGN)? enrichField=qualifiedNamePattern + ; diff --git a/esql-lsp/server/src/grammar/README.md b/esql-lsp/server/src/grammar/README.md new file mode 100644 index 0000000..3918241 --- /dev/null +++ b/esql-lsp/server/src/grammar/README.md @@ -0,0 +1 @@ +Copy of files in https://github.com/elastic/elasticsearch/tree/main/x-pack/plugin/esql/src/main/antlr \ No newline at end of file diff --git a/esql-lsp/server/src/grammar/generated/EsqlBaseLexer.interp b/esql-lsp/server/src/grammar/generated/EsqlBaseLexer.interp new file mode 100644 index 0000000..585f722 --- /dev/null +++ b/esql-lsp/server/src/grammar/generated/EsqlBaseLexer.interp @@ -0,0 +1,365 @@ +token literal names: +null +'dissect' +'drop' +'enrich' +'eval' +'explain' +'from' +'grok' +'inlinestats' +'keep' +'limit' +'mv_expand' +'project' +'rename' +'row' +'show' +'sort' +'stats' +'where' +null +null +null +null +null +null +null +'|' +null +null +null +'by' +'and' +'asc' +'=' +',' +'desc' +'.' +'false' +'first' +'last' +'(' +'in' +'is' +'like' +'not' +'null' +'nulls' +'or' +'?' +'rlike' +')' +'true' +'==' +'!=' +'<' +'<=' +'>' +'>=' +'+' +'-' +'*' +'/' +'%' +null +']' +null +null +null +null +null +'metadata' +null +null +null +null +null +null +null +null +'as' +null +null +null +'on' +'with' +null +null +null +null +null +null +null +null +null +'info' +'functions' +null +null +null + +token symbolic names: +null +DISSECT +DROP +ENRICH +EVAL +EXPLAIN +FROM +GROK +INLINESTATS +KEEP +LIMIT +MV_EXPAND +PROJECT +RENAME +ROW +SHOW +SORT +STATS +WHERE +UNKNOWN_CMD +LINE_COMMENT +MULTILINE_COMMENT +WS +EXPLAIN_WS +EXPLAIN_LINE_COMMENT +EXPLAIN_MULTILINE_COMMENT +PIPE +STRING +INTEGER_LITERAL +DECIMAL_LITERAL +BY +AND +ASC +ASSIGN +COMMA +DESC +DOT +FALSE +FIRST +LAST +LP +IN +IS +LIKE +NOT +NULL +NULLS +OR +PARAM +RLIKE +RP +TRUE +EQ +NEQ +LT +LTE +GT +GTE +PLUS +MINUS +ASTERISK +SLASH +PERCENT +OPENING_BRACKET +CLOSING_BRACKET +UNQUOTED_IDENTIFIER +QUOTED_IDENTIFIER +EXPR_LINE_COMMENT +EXPR_MULTILINE_COMMENT +EXPR_WS +METADATA +FROM_UNQUOTED_IDENTIFIER +FROM_LINE_COMMENT +FROM_MULTILINE_COMMENT +FROM_WS +PROJECT_UNQUOTED_IDENTIFIER +PROJECT_LINE_COMMENT +PROJECT_MULTILINE_COMMENT +PROJECT_WS +AS +RENAME_LINE_COMMENT +RENAME_MULTILINE_COMMENT +RENAME_WS +ON +WITH +ENRICH_LINE_COMMENT +ENRICH_MULTILINE_COMMENT +ENRICH_WS +ENRICH_FIELD_LINE_COMMENT +ENRICH_FIELD_MULTILINE_COMMENT +ENRICH_FIELD_WS +MVEXPAND_LINE_COMMENT +MVEXPAND_MULTILINE_COMMENT +MVEXPAND_WS +INFO +FUNCTIONS +SHOW_LINE_COMMENT +SHOW_MULTILINE_COMMENT +SHOW_WS + +rule names: +DISSECT +DROP +ENRICH +EVAL +EXPLAIN +FROM +GROK +INLINESTATS +KEEP +LIMIT +MV_EXPAND +PROJECT +RENAME +ROW +SHOW +SORT +STATS +WHERE +UNKNOWN_CMD +LINE_COMMENT +MULTILINE_COMMENT +WS +EXPLAIN_OPENING_BRACKET +EXPLAIN_PIPE +EXPLAIN_WS +EXPLAIN_LINE_COMMENT +EXPLAIN_MULTILINE_COMMENT +PIPE +DIGIT +LETTER +ESCAPE_SEQUENCE +UNESCAPED_CHARS +EXPONENT +ASPERAND +BACKQUOTE +BACKQUOTE_BLOCK +UNDERSCORE +UNQUOTED_ID_BODY +STRING +INTEGER_LITERAL +DECIMAL_LITERAL +BY +AND +ASC +ASSIGN +COMMA +DESC +DOT +FALSE +FIRST +LAST +LP +IN +IS +LIKE +NOT +NULL +NULLS +OR +PARAM +RLIKE +RP +TRUE +EQ +NEQ +LT +LTE +GT +GTE +PLUS +MINUS +ASTERISK +SLASH +PERCENT +OPENING_BRACKET +CLOSING_BRACKET +UNQUOTED_IDENTIFIER +QUOTED_IDENTIFIER +EXPR_LINE_COMMENT +EXPR_MULTILINE_COMMENT +EXPR_WS +FROM_PIPE +FROM_OPENING_BRACKET +FROM_CLOSING_BRACKET +FROM_COMMA +FROM_ASSIGN +METADATA +FROM_UNQUOTED_IDENTIFIER_PART +FROM_UNQUOTED_IDENTIFIER +FROM_QUOTED_IDENTIFIER +FROM_LINE_COMMENT +FROM_MULTILINE_COMMENT +FROM_WS +PROJECT_PIPE +PROJECT_DOT +PROJECT_COMMA +UNQUOTED_ID_BODY_WITH_PATTERN +PROJECT_UNQUOTED_IDENTIFIER +PROJECT_QUOTED_IDENTIFIER +PROJECT_LINE_COMMENT +PROJECT_MULTILINE_COMMENT +PROJECT_WS +RENAME_PIPE +RENAME_ASSIGN +RENAME_COMMA +RENAME_DOT +AS +RENAME_QUOTED_IDENTIFIER +RENAME_UNQUOTED_IDENTIFIER +RENAME_LINE_COMMENT +RENAME_MULTILINE_COMMENT +RENAME_WS +ENRICH_PIPE +ON +WITH +ENRICH_POLICY_UNQUOTED_IDENTIFIER +ENRICH_QUOTED_IDENTIFIER +ENRICH_LINE_COMMENT +ENRICH_MULTILINE_COMMENT +ENRICH_WS +ENRICH_FIELD_PIPE +ENRICH_FIELD_ASSIGN +ENRICH_FIELD_COMMA +ENRICH_FIELD_DOT +ENRICH_FIELD_WITH +ENRICH_FIELD_UNQUOTED_IDENTIFIER +ENRICH_FIELD_QUOTED_IDENTIFIER +ENRICH_FIELD_LINE_COMMENT +ENRICH_FIELD_MULTILINE_COMMENT +ENRICH_FIELD_WS +MVEXPAND_PIPE +MVEXPAND_DOT +MVEXPAND_QUOTED_IDENTIFIER +MVEXPAND_UNQUOTED_IDENTIFIER +MVEXPAND_LINE_COMMENT +MVEXPAND_MULTILINE_COMMENT +MVEXPAND_WS +SHOW_PIPE +INFO +FUNCTIONS +SHOW_LINE_COMMENT +SHOW_MULTILINE_COMMENT +SHOW_WS + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE +EXPLAIN_MODE +EXPRESSION_MODE +FROM_MODE +PROJECT_MODE +RENAME_MODE +ENRICH_MODE +ENRICH_FIELD_MODE +MVEXPAND_MODE +SHOW_MODE + +atn: +[4, 0, 98, 1090, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 4, 18, 451, 8, 18, 11, 18, 12, 18, 452, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 461, 8, 19, 10, 19, 12, 19, 464, 9, 19, 1, 19, 3, 19, 467, 8, 19, 1, 19, 3, 19, 470, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 479, 8, 20, 10, 20, 12, 20, 482, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 4, 21, 490, 8, 21, 11, 21, 12, 21, 491, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 533, 8, 32, 1, 32, 4, 32, 536, 8, 32, 11, 32, 12, 32, 537, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 3, 35, 547, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 3, 37, 554, 8, 37, 1, 38, 1, 38, 1, 38, 5, 38, 559, 8, 38, 10, 38, 12, 38, 562, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 570, 8, 38, 10, 38, 12, 38, 573, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 580, 8, 38, 1, 38, 3, 38, 583, 8, 38, 3, 38, 585, 8, 38, 1, 39, 4, 39, 588, 8, 39, 11, 39, 12, 39, 589, 1, 40, 4, 40, 593, 8, 40, 11, 40, 12, 40, 594, 1, 40, 1, 40, 5, 40, 599, 8, 40, 10, 40, 12, 40, 602, 9, 40, 1, 40, 1, 40, 4, 40, 606, 8, 40, 11, 40, 12, 40, 607, 1, 40, 4, 40, 611, 8, 40, 11, 40, 12, 40, 612, 1, 40, 1, 40, 5, 40, 617, 8, 40, 10, 40, 12, 40, 620, 9, 40, 3, 40, 622, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 4, 40, 628, 8, 40, 11, 40, 12, 40, 629, 1, 40, 1, 40, 3, 40, 634, 8, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 5, 76, 759, 8, 76, 10, 76, 12, 76, 762, 9, 76, 1, 76, 1, 76, 3, 76, 766, 8, 76, 1, 76, 4, 76, 769, 8, 76, 11, 76, 12, 76, 770, 3, 76, 773, 8, 76, 1, 77, 1, 77, 4, 77, 777, 8, 77, 11, 77, 12, 77, 778, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 3, 87, 832, 8, 87, 1, 88, 4, 88, 835, 8, 88, 11, 88, 12, 88, 836, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 872, 8, 96, 1, 97, 1, 97, 3, 97, 876, 8, 97, 1, 97, 5, 97, 879, 8, 97, 10, 97, 12, 97, 882, 9, 97, 1, 97, 1, 97, 3, 97, 886, 8, 97, 1, 97, 4, 97, 889, 8, 97, 11, 97, 12, 97, 890, 3, 97, 893, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 2, 480, 571, 0, 143, 10, 1, 12, 2, 14, 3, 16, 4, 18, 5, 20, 6, 22, 7, 24, 8, 26, 9, 28, 10, 30, 11, 32, 12, 34, 13, 36, 14, 38, 15, 40, 16, 42, 17, 44, 18, 46, 19, 48, 20, 50, 21, 52, 22, 54, 0, 56, 0, 58, 23, 60, 24, 62, 25, 64, 26, 66, 0, 68, 0, 70, 0, 72, 0, 74, 0, 76, 0, 78, 0, 80, 0, 82, 0, 84, 0, 86, 27, 88, 28, 90, 29, 92, 30, 94, 31, 96, 32, 98, 33, 100, 34, 102, 35, 104, 36, 106, 37, 108, 38, 110, 39, 112, 40, 114, 41, 116, 42, 118, 43, 120, 44, 122, 45, 124, 46, 126, 47, 128, 48, 130, 49, 132, 50, 134, 51, 136, 52, 138, 53, 140, 54, 142, 55, 144, 56, 146, 57, 148, 58, 150, 59, 152, 60, 154, 61, 156, 62, 158, 63, 160, 64, 162, 65, 164, 66, 166, 67, 168, 68, 170, 69, 172, 0, 174, 0, 176, 0, 178, 0, 180, 0, 182, 70, 184, 0, 186, 71, 188, 0, 190, 72, 192, 73, 194, 74, 196, 0, 198, 0, 200, 0, 202, 0, 204, 75, 206, 0, 208, 76, 210, 77, 212, 78, 214, 0, 216, 0, 218, 0, 220, 0, 222, 79, 224, 0, 226, 0, 228, 80, 230, 81, 232, 82, 234, 0, 236, 83, 238, 84, 240, 0, 242, 0, 244, 85, 246, 86, 248, 87, 250, 0, 252, 0, 254, 0, 256, 0, 258, 0, 260, 0, 262, 0, 264, 88, 266, 89, 268, 90, 270, 0, 272, 0, 274, 0, 276, 0, 278, 91, 280, 92, 282, 93, 284, 0, 286, 94, 288, 95, 290, 96, 292, 97, 294, 98, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 6, 0, 9, 10, 13, 13, 32, 32, 47, 47, 91, 91, 93, 93, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 5, 0, 34, 34, 92, 92, 110, 110, 114, 114, 116, 116, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 1, 0, 96, 96, 10, 0, 9, 10, 13, 13, 32, 32, 44, 44, 47, 47, 61, 61, 91, 91, 93, 93, 96, 96, 124, 124, 2, 0, 42, 42, 47, 47, 1112, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 38, 1, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 52, 1, 0, 0, 0, 1, 54, 1, 0, 0, 0, 1, 56, 1, 0, 0, 0, 1, 58, 1, 0, 0, 0, 1, 60, 1, 0, 0, 0, 1, 62, 1, 0, 0, 0, 2, 64, 1, 0, 0, 0, 2, 86, 1, 0, 0, 0, 2, 88, 1, 0, 0, 0, 2, 90, 1, 0, 0, 0, 2, 92, 1, 0, 0, 0, 2, 94, 1, 0, 0, 0, 2, 96, 1, 0, 0, 0, 2, 98, 1, 0, 0, 0, 2, 100, 1, 0, 0, 0, 2, 102, 1, 0, 0, 0, 2, 104, 1, 0, 0, 0, 2, 106, 1, 0, 0, 0, 2, 108, 1, 0, 0, 0, 2, 110, 1, 0, 0, 0, 2, 112, 1, 0, 0, 0, 2, 114, 1, 0, 0, 0, 2, 116, 1, 0, 0, 0, 2, 118, 1, 0, 0, 0, 2, 120, 1, 0, 0, 0, 2, 122, 1, 0, 0, 0, 2, 124, 1, 0, 0, 0, 2, 126, 1, 0, 0, 0, 2, 128, 1, 0, 0, 0, 2, 130, 1, 0, 0, 0, 2, 132, 1, 0, 0, 0, 2, 134, 1, 0, 0, 0, 2, 136, 1, 0, 0, 0, 2, 138, 1, 0, 0, 0, 2, 140, 1, 0, 0, 0, 2, 142, 1, 0, 0, 0, 2, 144, 1, 0, 0, 0, 2, 146, 1, 0, 0, 0, 2, 148, 1, 0, 0, 0, 2, 150, 1, 0, 0, 0, 2, 152, 1, 0, 0, 0, 2, 154, 1, 0, 0, 0, 2, 156, 1, 0, 0, 0, 2, 158, 1, 0, 0, 0, 2, 160, 1, 0, 0, 0, 2, 162, 1, 0, 0, 0, 2, 164, 1, 0, 0, 0, 2, 166, 1, 0, 0, 0, 2, 168, 1, 0, 0, 0, 2, 170, 1, 0, 0, 0, 3, 172, 1, 0, 0, 0, 3, 174, 1, 0, 0, 0, 3, 176, 1, 0, 0, 0, 3, 178, 1, 0, 0, 0, 3, 180, 1, 0, 0, 0, 3, 182, 1, 0, 0, 0, 3, 186, 1, 0, 0, 0, 3, 188, 1, 0, 0, 0, 3, 190, 1, 0, 0, 0, 3, 192, 1, 0, 0, 0, 3, 194, 1, 0, 0, 0, 4, 196, 1, 0, 0, 0, 4, 198, 1, 0, 0, 0, 4, 200, 1, 0, 0, 0, 4, 204, 1, 0, 0, 0, 4, 206, 1, 0, 0, 0, 4, 208, 1, 0, 0, 0, 4, 210, 1, 0, 0, 0, 4, 212, 1, 0, 0, 0, 5, 214, 1, 0, 0, 0, 5, 216, 1, 0, 0, 0, 5, 218, 1, 0, 0, 0, 5, 220, 1, 0, 0, 0, 5, 222, 1, 0, 0, 0, 5, 224, 1, 0, 0, 0, 5, 226, 1, 0, 0, 0, 5, 228, 1, 0, 0, 0, 5, 230, 1, 0, 0, 0, 5, 232, 1, 0, 0, 0, 6, 234, 1, 0, 0, 0, 6, 236, 1, 0, 0, 0, 6, 238, 1, 0, 0, 0, 6, 240, 1, 0, 0, 0, 6, 242, 1, 0, 0, 0, 6, 244, 1, 0, 0, 0, 6, 246, 1, 0, 0, 0, 6, 248, 1, 0, 0, 0, 7, 250, 1, 0, 0, 0, 7, 252, 1, 0, 0, 0, 7, 254, 1, 0, 0, 0, 7, 256, 1, 0, 0, 0, 7, 258, 1, 0, 0, 0, 7, 260, 1, 0, 0, 0, 7, 262, 1, 0, 0, 0, 7, 264, 1, 0, 0, 0, 7, 266, 1, 0, 0, 0, 7, 268, 1, 0, 0, 0, 8, 270, 1, 0, 0, 0, 8, 272, 1, 0, 0, 0, 8, 274, 1, 0, 0, 0, 8, 276, 1, 0, 0, 0, 8, 278, 1, 0, 0, 0, 8, 280, 1, 0, 0, 0, 8, 282, 1, 0, 0, 0, 9, 284, 1, 0, 0, 0, 9, 286, 1, 0, 0, 0, 9, 288, 1, 0, 0, 0, 9, 290, 1, 0, 0, 0, 9, 292, 1, 0, 0, 0, 9, 294, 1, 0, 0, 0, 10, 296, 1, 0, 0, 0, 12, 306, 1, 0, 0, 0, 14, 313, 1, 0, 0, 0, 16, 322, 1, 0, 0, 0, 18, 329, 1, 0, 0, 0, 20, 339, 1, 0, 0, 0, 22, 346, 1, 0, 0, 0, 24, 353, 1, 0, 0, 0, 26, 367, 1, 0, 0, 0, 28, 374, 1, 0, 0, 0, 30, 382, 1, 0, 0, 0, 32, 394, 1, 0, 0, 0, 34, 404, 1, 0, 0, 0, 36, 413, 1, 0, 0, 0, 38, 419, 1, 0, 0, 0, 40, 426, 1, 0, 0, 0, 42, 433, 1, 0, 0, 0, 44, 441, 1, 0, 0, 0, 46, 450, 1, 0, 0, 0, 48, 456, 1, 0, 0, 0, 50, 473, 1, 0, 0, 0, 52, 489, 1, 0, 0, 0, 54, 495, 1, 0, 0, 0, 56, 500, 1, 0, 0, 0, 58, 505, 1, 0, 0, 0, 60, 509, 1, 0, 0, 0, 62, 513, 1, 0, 0, 0, 64, 517, 1, 0, 0, 0, 66, 521, 1, 0, 0, 0, 68, 523, 1, 0, 0, 0, 70, 525, 1, 0, 0, 0, 72, 528, 1, 0, 0, 0, 74, 530, 1, 0, 0, 0, 76, 539, 1, 0, 0, 0, 78, 541, 1, 0, 0, 0, 80, 546, 1, 0, 0, 0, 82, 548, 1, 0, 0, 0, 84, 553, 1, 0, 0, 0, 86, 584, 1, 0, 0, 0, 88, 587, 1, 0, 0, 0, 90, 633, 1, 0, 0, 0, 92, 635, 1, 0, 0, 0, 94, 638, 1, 0, 0, 0, 96, 642, 1, 0, 0, 0, 98, 646, 1, 0, 0, 0, 100, 648, 1, 0, 0, 0, 102, 650, 1, 0, 0, 0, 104, 655, 1, 0, 0, 0, 106, 657, 1, 0, 0, 0, 108, 663, 1, 0, 0, 0, 110, 669, 1, 0, 0, 0, 112, 674, 1, 0, 0, 0, 114, 676, 1, 0, 0, 0, 116, 679, 1, 0, 0, 0, 118, 682, 1, 0, 0, 0, 120, 687, 1, 0, 0, 0, 122, 691, 1, 0, 0, 0, 124, 696, 1, 0, 0, 0, 126, 702, 1, 0, 0, 0, 128, 705, 1, 0, 0, 0, 130, 707, 1, 0, 0, 0, 132, 713, 1, 0, 0, 0, 134, 715, 1, 0, 0, 0, 136, 720, 1, 0, 0, 0, 138, 723, 1, 0, 0, 0, 140, 726, 1, 0, 0, 0, 142, 728, 1, 0, 0, 0, 144, 731, 1, 0, 0, 0, 146, 733, 1, 0, 0, 0, 148, 736, 1, 0, 0, 0, 150, 738, 1, 0, 0, 0, 152, 740, 1, 0, 0, 0, 154, 742, 1, 0, 0, 0, 156, 744, 1, 0, 0, 0, 158, 746, 1, 0, 0, 0, 160, 751, 1, 0, 0, 0, 162, 772, 1, 0, 0, 0, 164, 774, 1, 0, 0, 0, 166, 782, 1, 0, 0, 0, 168, 786, 1, 0, 0, 0, 170, 790, 1, 0, 0, 0, 172, 794, 1, 0, 0, 0, 174, 799, 1, 0, 0, 0, 176, 805, 1, 0, 0, 0, 178, 811, 1, 0, 0, 0, 180, 815, 1, 0, 0, 0, 182, 819, 1, 0, 0, 0, 184, 831, 1, 0, 0, 0, 186, 834, 1, 0, 0, 0, 188, 838, 1, 0, 0, 0, 190, 842, 1, 0, 0, 0, 192, 846, 1, 0, 0, 0, 194, 850, 1, 0, 0, 0, 196, 854, 1, 0, 0, 0, 198, 859, 1, 0, 0, 0, 200, 863, 1, 0, 0, 0, 202, 871, 1, 0, 0, 0, 204, 892, 1, 0, 0, 0, 206, 894, 1, 0, 0, 0, 208, 898, 1, 0, 0, 0, 210, 902, 1, 0, 0, 0, 212, 906, 1, 0, 0, 0, 214, 910, 1, 0, 0, 0, 216, 915, 1, 0, 0, 0, 218, 919, 1, 0, 0, 0, 220, 923, 1, 0, 0, 0, 222, 927, 1, 0, 0, 0, 224, 930, 1, 0, 0, 0, 226, 934, 1, 0, 0, 0, 228, 938, 1, 0, 0, 0, 230, 942, 1, 0, 0, 0, 232, 946, 1, 0, 0, 0, 234, 950, 1, 0, 0, 0, 236, 955, 1, 0, 0, 0, 238, 960, 1, 0, 0, 0, 240, 967, 1, 0, 0, 0, 242, 971, 1, 0, 0, 0, 244, 975, 1, 0, 0, 0, 246, 979, 1, 0, 0, 0, 248, 983, 1, 0, 0, 0, 250, 987, 1, 0, 0, 0, 252, 993, 1, 0, 0, 0, 254, 997, 1, 0, 0, 0, 256, 1001, 1, 0, 0, 0, 258, 1005, 1, 0, 0, 0, 260, 1009, 1, 0, 0, 0, 262, 1013, 1, 0, 0, 0, 264, 1017, 1, 0, 0, 0, 266, 1021, 1, 0, 0, 0, 268, 1025, 1, 0, 0, 0, 270, 1029, 1, 0, 0, 0, 272, 1034, 1, 0, 0, 0, 274, 1038, 1, 0, 0, 0, 276, 1042, 1, 0, 0, 0, 278, 1046, 1, 0, 0, 0, 280, 1050, 1, 0, 0, 0, 282, 1054, 1, 0, 0, 0, 284, 1058, 1, 0, 0, 0, 286, 1063, 1, 0, 0, 0, 288, 1068, 1, 0, 0, 0, 290, 1078, 1, 0, 0, 0, 292, 1082, 1, 0, 0, 0, 294, 1086, 1, 0, 0, 0, 296, 297, 5, 100, 0, 0, 297, 298, 5, 105, 0, 0, 298, 299, 5, 115, 0, 0, 299, 300, 5, 115, 0, 0, 300, 301, 5, 101, 0, 0, 301, 302, 5, 99, 0, 0, 302, 303, 5, 116, 0, 0, 303, 304, 1, 0, 0, 0, 304, 305, 6, 0, 0, 0, 305, 11, 1, 0, 0, 0, 306, 307, 5, 100, 0, 0, 307, 308, 5, 114, 0, 0, 308, 309, 5, 111, 0, 0, 309, 310, 5, 112, 0, 0, 310, 311, 1, 0, 0, 0, 311, 312, 6, 1, 1, 0, 312, 13, 1, 0, 0, 0, 313, 314, 5, 101, 0, 0, 314, 315, 5, 110, 0, 0, 315, 316, 5, 114, 0, 0, 316, 317, 5, 105, 0, 0, 317, 318, 5, 99, 0, 0, 318, 319, 5, 104, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 6, 2, 2, 0, 321, 15, 1, 0, 0, 0, 322, 323, 5, 101, 0, 0, 323, 324, 5, 118, 0, 0, 324, 325, 5, 97, 0, 0, 325, 326, 5, 108, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 6, 3, 0, 0, 328, 17, 1, 0, 0, 0, 329, 330, 5, 101, 0, 0, 330, 331, 5, 120, 0, 0, 331, 332, 5, 112, 0, 0, 332, 333, 5, 108, 0, 0, 333, 334, 5, 97, 0, 0, 334, 335, 5, 105, 0, 0, 335, 336, 5, 110, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 6, 4, 3, 0, 338, 19, 1, 0, 0, 0, 339, 340, 5, 102, 0, 0, 340, 341, 5, 114, 0, 0, 341, 342, 5, 111, 0, 0, 342, 343, 5, 109, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 6, 5, 4, 0, 345, 21, 1, 0, 0, 0, 346, 347, 5, 103, 0, 0, 347, 348, 5, 114, 0, 0, 348, 349, 5, 111, 0, 0, 349, 350, 5, 107, 0, 0, 350, 351, 1, 0, 0, 0, 351, 352, 6, 6, 0, 0, 352, 23, 1, 0, 0, 0, 353, 354, 5, 105, 0, 0, 354, 355, 5, 110, 0, 0, 355, 356, 5, 108, 0, 0, 356, 357, 5, 105, 0, 0, 357, 358, 5, 110, 0, 0, 358, 359, 5, 101, 0, 0, 359, 360, 5, 115, 0, 0, 360, 361, 5, 116, 0, 0, 361, 362, 5, 97, 0, 0, 362, 363, 5, 116, 0, 0, 363, 364, 5, 115, 0, 0, 364, 365, 1, 0, 0, 0, 365, 366, 6, 7, 0, 0, 366, 25, 1, 0, 0, 0, 367, 368, 5, 107, 0, 0, 368, 369, 5, 101, 0, 0, 369, 370, 5, 101, 0, 0, 370, 371, 5, 112, 0, 0, 371, 372, 1, 0, 0, 0, 372, 373, 6, 8, 1, 0, 373, 27, 1, 0, 0, 0, 374, 375, 5, 108, 0, 0, 375, 376, 5, 105, 0, 0, 376, 377, 5, 109, 0, 0, 377, 378, 5, 105, 0, 0, 378, 379, 5, 116, 0, 0, 379, 380, 1, 0, 0, 0, 380, 381, 6, 9, 0, 0, 381, 29, 1, 0, 0, 0, 382, 383, 5, 109, 0, 0, 383, 384, 5, 118, 0, 0, 384, 385, 5, 95, 0, 0, 385, 386, 5, 101, 0, 0, 386, 387, 5, 120, 0, 0, 387, 388, 5, 112, 0, 0, 388, 389, 5, 97, 0, 0, 389, 390, 5, 110, 0, 0, 390, 391, 5, 100, 0, 0, 391, 392, 1, 0, 0, 0, 392, 393, 6, 10, 5, 0, 393, 31, 1, 0, 0, 0, 394, 395, 5, 112, 0, 0, 395, 396, 5, 114, 0, 0, 396, 397, 5, 111, 0, 0, 397, 398, 5, 106, 0, 0, 398, 399, 5, 101, 0, 0, 399, 400, 5, 99, 0, 0, 400, 401, 5, 116, 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 6, 11, 1, 0, 403, 33, 1, 0, 0, 0, 404, 405, 5, 114, 0, 0, 405, 406, 5, 101, 0, 0, 406, 407, 5, 110, 0, 0, 407, 408, 5, 97, 0, 0, 408, 409, 5, 109, 0, 0, 409, 410, 5, 101, 0, 0, 410, 411, 1, 0, 0, 0, 411, 412, 6, 12, 6, 0, 412, 35, 1, 0, 0, 0, 413, 414, 5, 114, 0, 0, 414, 415, 5, 111, 0, 0, 415, 416, 5, 119, 0, 0, 416, 417, 1, 0, 0, 0, 417, 418, 6, 13, 0, 0, 418, 37, 1, 0, 0, 0, 419, 420, 5, 115, 0, 0, 420, 421, 5, 104, 0, 0, 421, 422, 5, 111, 0, 0, 422, 423, 5, 119, 0, 0, 423, 424, 1, 0, 0, 0, 424, 425, 6, 14, 7, 0, 425, 39, 1, 0, 0, 0, 426, 427, 5, 115, 0, 0, 427, 428, 5, 111, 0, 0, 428, 429, 5, 114, 0, 0, 429, 430, 5, 116, 0, 0, 430, 431, 1, 0, 0, 0, 431, 432, 6, 15, 0, 0, 432, 41, 1, 0, 0, 0, 433, 434, 5, 115, 0, 0, 434, 435, 5, 116, 0, 0, 435, 436, 5, 97, 0, 0, 436, 437, 5, 116, 0, 0, 437, 438, 5, 115, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 6, 16, 0, 0, 440, 43, 1, 0, 0, 0, 441, 442, 5, 119, 0, 0, 442, 443, 5, 104, 0, 0, 443, 444, 5, 101, 0, 0, 444, 445, 5, 114, 0, 0, 445, 446, 5, 101, 0, 0, 446, 447, 1, 0, 0, 0, 447, 448, 6, 17, 0, 0, 448, 45, 1, 0, 0, 0, 449, 451, 8, 0, 0, 0, 450, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 455, 6, 18, 0, 0, 455, 47, 1, 0, 0, 0, 456, 457, 5, 47, 0, 0, 457, 458, 5, 47, 0, 0, 458, 462, 1, 0, 0, 0, 459, 461, 8, 1, 0, 0, 460, 459, 1, 0, 0, 0, 461, 464, 1, 0, 0, 0, 462, 460, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 466, 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 465, 467, 5, 13, 0, 0, 466, 465, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 469, 1, 0, 0, 0, 468, 470, 5, 10, 0, 0, 469, 468, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 472, 6, 19, 8, 0, 472, 49, 1, 0, 0, 0, 473, 474, 5, 47, 0, 0, 474, 475, 5, 42, 0, 0, 475, 480, 1, 0, 0, 0, 476, 479, 3, 50, 20, 0, 477, 479, 9, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 477, 1, 0, 0, 0, 479, 482, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 481, 483, 1, 0, 0, 0, 482, 480, 1, 0, 0, 0, 483, 484, 5, 42, 0, 0, 484, 485, 5, 47, 0, 0, 485, 486, 1, 0, 0, 0, 486, 487, 6, 20, 8, 0, 487, 51, 1, 0, 0, 0, 488, 490, 7, 2, 0, 0, 489, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 494, 6, 21, 8, 0, 494, 53, 1, 0, 0, 0, 495, 496, 3, 158, 74, 0, 496, 497, 1, 0, 0, 0, 497, 498, 6, 22, 9, 0, 498, 499, 6, 22, 10, 0, 499, 55, 1, 0, 0, 0, 500, 501, 3, 64, 27, 0, 501, 502, 1, 0, 0, 0, 502, 503, 6, 23, 11, 0, 503, 504, 6, 23, 12, 0, 504, 57, 1, 0, 0, 0, 505, 506, 3, 52, 21, 0, 506, 507, 1, 0, 0, 0, 507, 508, 6, 24, 8, 0, 508, 59, 1, 0, 0, 0, 509, 510, 3, 48, 19, 0, 510, 511, 1, 0, 0, 0, 511, 512, 6, 25, 8, 0, 512, 61, 1, 0, 0, 0, 513, 514, 3, 50, 20, 0, 514, 515, 1, 0, 0, 0, 515, 516, 6, 26, 8, 0, 516, 63, 1, 0, 0, 0, 517, 518, 5, 124, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 6, 27, 12, 0, 520, 65, 1, 0, 0, 0, 521, 522, 7, 3, 0, 0, 522, 67, 1, 0, 0, 0, 523, 524, 7, 4, 0, 0, 524, 69, 1, 0, 0, 0, 525, 526, 5, 92, 0, 0, 526, 527, 7, 5, 0, 0, 527, 71, 1, 0, 0, 0, 528, 529, 8, 6, 0, 0, 529, 73, 1, 0, 0, 0, 530, 532, 7, 7, 0, 0, 531, 533, 7, 8, 0, 0, 532, 531, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 535, 1, 0, 0, 0, 534, 536, 3, 66, 28, 0, 535, 534, 1, 0, 0, 0, 536, 537, 1, 0, 0, 0, 537, 535, 1, 0, 0, 0, 537, 538, 1, 0, 0, 0, 538, 75, 1, 0, 0, 0, 539, 540, 5, 64, 0, 0, 540, 77, 1, 0, 0, 0, 541, 542, 5, 96, 0, 0, 542, 79, 1, 0, 0, 0, 543, 547, 8, 9, 0, 0, 544, 545, 5, 96, 0, 0, 545, 547, 5, 96, 0, 0, 546, 543, 1, 0, 0, 0, 546, 544, 1, 0, 0, 0, 547, 81, 1, 0, 0, 0, 548, 549, 5, 95, 0, 0, 549, 83, 1, 0, 0, 0, 550, 554, 3, 68, 29, 0, 551, 554, 3, 66, 28, 0, 552, 554, 3, 82, 36, 0, 553, 550, 1, 0, 0, 0, 553, 551, 1, 0, 0, 0, 553, 552, 1, 0, 0, 0, 554, 85, 1, 0, 0, 0, 555, 560, 5, 34, 0, 0, 556, 559, 3, 70, 30, 0, 557, 559, 3, 72, 31, 0, 558, 556, 1, 0, 0, 0, 558, 557, 1, 0, 0, 0, 559, 562, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 563, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 563, 585, 5, 34, 0, 0, 564, 565, 5, 34, 0, 0, 565, 566, 5, 34, 0, 0, 566, 567, 5, 34, 0, 0, 567, 571, 1, 0, 0, 0, 568, 570, 8, 1, 0, 0, 569, 568, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 572, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 34, 0, 0, 575, 576, 5, 34, 0, 0, 576, 577, 5, 34, 0, 0, 577, 579, 1, 0, 0, 0, 578, 580, 5, 34, 0, 0, 579, 578, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 582, 1, 0, 0, 0, 581, 583, 5, 34, 0, 0, 582, 581, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 585, 1, 0, 0, 0, 584, 555, 1, 0, 0, 0, 584, 564, 1, 0, 0, 0, 585, 87, 1, 0, 0, 0, 586, 588, 3, 66, 28, 0, 587, 586, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 89, 1, 0, 0, 0, 591, 593, 3, 66, 28, 0, 592, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 600, 3, 104, 47, 0, 597, 599, 3, 66, 28, 0, 598, 597, 1, 0, 0, 0, 599, 602, 1, 0, 0, 0, 600, 598, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 634, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 603, 605, 3, 104, 47, 0, 604, 606, 3, 66, 28, 0, 605, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 634, 1, 0, 0, 0, 609, 611, 3, 66, 28, 0, 610, 609, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 621, 1, 0, 0, 0, 614, 618, 3, 104, 47, 0, 615, 617, 3, 66, 28, 0, 616, 615, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 622, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 621, 614, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 624, 3, 74, 32, 0, 624, 634, 1, 0, 0, 0, 625, 627, 3, 104, 47, 0, 626, 628, 3, 66, 28, 0, 627, 626, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 627, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 632, 3, 74, 32, 0, 632, 634, 1, 0, 0, 0, 633, 592, 1, 0, 0, 0, 633, 603, 1, 0, 0, 0, 633, 610, 1, 0, 0, 0, 633, 625, 1, 0, 0, 0, 634, 91, 1, 0, 0, 0, 635, 636, 5, 98, 0, 0, 636, 637, 5, 121, 0, 0, 637, 93, 1, 0, 0, 0, 638, 639, 5, 97, 0, 0, 639, 640, 5, 110, 0, 0, 640, 641, 5, 100, 0, 0, 641, 95, 1, 0, 0, 0, 642, 643, 5, 97, 0, 0, 643, 644, 5, 115, 0, 0, 644, 645, 5, 99, 0, 0, 645, 97, 1, 0, 0, 0, 646, 647, 5, 61, 0, 0, 647, 99, 1, 0, 0, 0, 648, 649, 5, 44, 0, 0, 649, 101, 1, 0, 0, 0, 650, 651, 5, 100, 0, 0, 651, 652, 5, 101, 0, 0, 652, 653, 5, 115, 0, 0, 653, 654, 5, 99, 0, 0, 654, 103, 1, 0, 0, 0, 655, 656, 5, 46, 0, 0, 656, 105, 1, 0, 0, 0, 657, 658, 5, 102, 0, 0, 658, 659, 5, 97, 0, 0, 659, 660, 5, 108, 0, 0, 660, 661, 5, 115, 0, 0, 661, 662, 5, 101, 0, 0, 662, 107, 1, 0, 0, 0, 663, 664, 5, 102, 0, 0, 664, 665, 5, 105, 0, 0, 665, 666, 5, 114, 0, 0, 666, 667, 5, 115, 0, 0, 667, 668, 5, 116, 0, 0, 668, 109, 1, 0, 0, 0, 669, 670, 5, 108, 0, 0, 670, 671, 5, 97, 0, 0, 671, 672, 5, 115, 0, 0, 672, 673, 5, 116, 0, 0, 673, 111, 1, 0, 0, 0, 674, 675, 5, 40, 0, 0, 675, 113, 1, 0, 0, 0, 676, 677, 5, 105, 0, 0, 677, 678, 5, 110, 0, 0, 678, 115, 1, 0, 0, 0, 679, 680, 5, 105, 0, 0, 680, 681, 5, 115, 0, 0, 681, 117, 1, 0, 0, 0, 682, 683, 5, 108, 0, 0, 683, 684, 5, 105, 0, 0, 684, 685, 5, 107, 0, 0, 685, 686, 5, 101, 0, 0, 686, 119, 1, 0, 0, 0, 687, 688, 5, 110, 0, 0, 688, 689, 5, 111, 0, 0, 689, 690, 5, 116, 0, 0, 690, 121, 1, 0, 0, 0, 691, 692, 5, 110, 0, 0, 692, 693, 5, 117, 0, 0, 693, 694, 5, 108, 0, 0, 694, 695, 5, 108, 0, 0, 695, 123, 1, 0, 0, 0, 696, 697, 5, 110, 0, 0, 697, 698, 5, 117, 0, 0, 698, 699, 5, 108, 0, 0, 699, 700, 5, 108, 0, 0, 700, 701, 5, 115, 0, 0, 701, 125, 1, 0, 0, 0, 702, 703, 5, 111, 0, 0, 703, 704, 5, 114, 0, 0, 704, 127, 1, 0, 0, 0, 705, 706, 5, 63, 0, 0, 706, 129, 1, 0, 0, 0, 707, 708, 5, 114, 0, 0, 708, 709, 5, 108, 0, 0, 709, 710, 5, 105, 0, 0, 710, 711, 5, 107, 0, 0, 711, 712, 5, 101, 0, 0, 712, 131, 1, 0, 0, 0, 713, 714, 5, 41, 0, 0, 714, 133, 1, 0, 0, 0, 715, 716, 5, 116, 0, 0, 716, 717, 5, 114, 0, 0, 717, 718, 5, 117, 0, 0, 718, 719, 5, 101, 0, 0, 719, 135, 1, 0, 0, 0, 720, 721, 5, 61, 0, 0, 721, 722, 5, 61, 0, 0, 722, 137, 1, 0, 0, 0, 723, 724, 5, 33, 0, 0, 724, 725, 5, 61, 0, 0, 725, 139, 1, 0, 0, 0, 726, 727, 5, 60, 0, 0, 727, 141, 1, 0, 0, 0, 728, 729, 5, 60, 0, 0, 729, 730, 5, 61, 0, 0, 730, 143, 1, 0, 0, 0, 731, 732, 5, 62, 0, 0, 732, 145, 1, 0, 0, 0, 733, 734, 5, 62, 0, 0, 734, 735, 5, 61, 0, 0, 735, 147, 1, 0, 0, 0, 736, 737, 5, 43, 0, 0, 737, 149, 1, 0, 0, 0, 738, 739, 5, 45, 0, 0, 739, 151, 1, 0, 0, 0, 740, 741, 5, 42, 0, 0, 741, 153, 1, 0, 0, 0, 742, 743, 5, 47, 0, 0, 743, 155, 1, 0, 0, 0, 744, 745, 5, 37, 0, 0, 745, 157, 1, 0, 0, 0, 746, 747, 5, 91, 0, 0, 747, 748, 1, 0, 0, 0, 748, 749, 6, 74, 0, 0, 749, 750, 6, 74, 0, 0, 750, 159, 1, 0, 0, 0, 751, 752, 5, 93, 0, 0, 752, 753, 1, 0, 0, 0, 753, 754, 6, 75, 12, 0, 754, 755, 6, 75, 12, 0, 755, 161, 1, 0, 0, 0, 756, 760, 3, 68, 29, 0, 757, 759, 3, 84, 37, 0, 758, 757, 1, 0, 0, 0, 759, 762, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 773, 1, 0, 0, 0, 762, 760, 1, 0, 0, 0, 763, 766, 3, 82, 36, 0, 764, 766, 3, 76, 33, 0, 765, 763, 1, 0, 0, 0, 765, 764, 1, 0, 0, 0, 766, 768, 1, 0, 0, 0, 767, 769, 3, 84, 37, 0, 768, 767, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 773, 1, 0, 0, 0, 772, 756, 1, 0, 0, 0, 772, 765, 1, 0, 0, 0, 773, 163, 1, 0, 0, 0, 774, 776, 3, 78, 34, 0, 775, 777, 3, 80, 35, 0, 776, 775, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 3, 78, 34, 0, 781, 165, 1, 0, 0, 0, 782, 783, 3, 48, 19, 0, 783, 784, 1, 0, 0, 0, 784, 785, 6, 78, 8, 0, 785, 167, 1, 0, 0, 0, 786, 787, 3, 50, 20, 0, 787, 788, 1, 0, 0, 0, 788, 789, 6, 79, 8, 0, 789, 169, 1, 0, 0, 0, 790, 791, 3, 52, 21, 0, 791, 792, 1, 0, 0, 0, 792, 793, 6, 80, 8, 0, 793, 171, 1, 0, 0, 0, 794, 795, 3, 64, 27, 0, 795, 796, 1, 0, 0, 0, 796, 797, 6, 81, 11, 0, 797, 798, 6, 81, 12, 0, 798, 173, 1, 0, 0, 0, 799, 800, 3, 158, 74, 0, 800, 801, 1, 0, 0, 0, 801, 802, 6, 82, 9, 0, 802, 803, 6, 82, 4, 0, 803, 804, 6, 82, 4, 0, 804, 175, 1, 0, 0, 0, 805, 806, 3, 160, 75, 0, 806, 807, 1, 0, 0, 0, 807, 808, 6, 83, 13, 0, 808, 809, 6, 83, 12, 0, 809, 810, 6, 83, 12, 0, 810, 177, 1, 0, 0, 0, 811, 812, 3, 100, 45, 0, 812, 813, 1, 0, 0, 0, 813, 814, 6, 84, 14, 0, 814, 179, 1, 0, 0, 0, 815, 816, 3, 98, 44, 0, 816, 817, 1, 0, 0, 0, 817, 818, 6, 85, 15, 0, 818, 181, 1, 0, 0, 0, 819, 820, 5, 109, 0, 0, 820, 821, 5, 101, 0, 0, 821, 822, 5, 116, 0, 0, 822, 823, 5, 97, 0, 0, 823, 824, 5, 100, 0, 0, 824, 825, 5, 97, 0, 0, 825, 826, 5, 116, 0, 0, 826, 827, 5, 97, 0, 0, 827, 183, 1, 0, 0, 0, 828, 832, 8, 10, 0, 0, 829, 830, 5, 47, 0, 0, 830, 832, 8, 11, 0, 0, 831, 828, 1, 0, 0, 0, 831, 829, 1, 0, 0, 0, 832, 185, 1, 0, 0, 0, 833, 835, 3, 184, 87, 0, 834, 833, 1, 0, 0, 0, 835, 836, 1, 0, 0, 0, 836, 834, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 187, 1, 0, 0, 0, 838, 839, 3, 164, 77, 0, 839, 840, 1, 0, 0, 0, 840, 841, 6, 89, 16, 0, 841, 189, 1, 0, 0, 0, 842, 843, 3, 48, 19, 0, 843, 844, 1, 0, 0, 0, 844, 845, 6, 90, 8, 0, 845, 191, 1, 0, 0, 0, 846, 847, 3, 50, 20, 0, 847, 848, 1, 0, 0, 0, 848, 849, 6, 91, 8, 0, 849, 193, 1, 0, 0, 0, 850, 851, 3, 52, 21, 0, 851, 852, 1, 0, 0, 0, 852, 853, 6, 92, 8, 0, 853, 195, 1, 0, 0, 0, 854, 855, 3, 64, 27, 0, 855, 856, 1, 0, 0, 0, 856, 857, 6, 93, 11, 0, 857, 858, 6, 93, 12, 0, 858, 197, 1, 0, 0, 0, 859, 860, 3, 104, 47, 0, 860, 861, 1, 0, 0, 0, 861, 862, 6, 94, 17, 0, 862, 199, 1, 0, 0, 0, 863, 864, 3, 100, 45, 0, 864, 865, 1, 0, 0, 0, 865, 866, 6, 95, 14, 0, 866, 201, 1, 0, 0, 0, 867, 872, 3, 68, 29, 0, 868, 872, 3, 66, 28, 0, 869, 872, 3, 82, 36, 0, 870, 872, 3, 152, 71, 0, 871, 867, 1, 0, 0, 0, 871, 868, 1, 0, 0, 0, 871, 869, 1, 0, 0, 0, 871, 870, 1, 0, 0, 0, 872, 203, 1, 0, 0, 0, 873, 876, 3, 68, 29, 0, 874, 876, 3, 152, 71, 0, 875, 873, 1, 0, 0, 0, 875, 874, 1, 0, 0, 0, 876, 880, 1, 0, 0, 0, 877, 879, 3, 202, 96, 0, 878, 877, 1, 0, 0, 0, 879, 882, 1, 0, 0, 0, 880, 878, 1, 0, 0, 0, 880, 881, 1, 0, 0, 0, 881, 893, 1, 0, 0, 0, 882, 880, 1, 0, 0, 0, 883, 886, 3, 82, 36, 0, 884, 886, 3, 76, 33, 0, 885, 883, 1, 0, 0, 0, 885, 884, 1, 0, 0, 0, 886, 888, 1, 0, 0, 0, 887, 889, 3, 202, 96, 0, 888, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 888, 1, 0, 0, 0, 890, 891, 1, 0, 0, 0, 891, 893, 1, 0, 0, 0, 892, 875, 1, 0, 0, 0, 892, 885, 1, 0, 0, 0, 893, 205, 1, 0, 0, 0, 894, 895, 3, 164, 77, 0, 895, 896, 1, 0, 0, 0, 896, 897, 6, 98, 16, 0, 897, 207, 1, 0, 0, 0, 898, 899, 3, 48, 19, 0, 899, 900, 1, 0, 0, 0, 900, 901, 6, 99, 8, 0, 901, 209, 1, 0, 0, 0, 902, 903, 3, 50, 20, 0, 903, 904, 1, 0, 0, 0, 904, 905, 6, 100, 8, 0, 905, 211, 1, 0, 0, 0, 906, 907, 3, 52, 21, 0, 907, 908, 1, 0, 0, 0, 908, 909, 6, 101, 8, 0, 909, 213, 1, 0, 0, 0, 910, 911, 3, 64, 27, 0, 911, 912, 1, 0, 0, 0, 912, 913, 6, 102, 11, 0, 913, 914, 6, 102, 12, 0, 914, 215, 1, 0, 0, 0, 915, 916, 3, 98, 44, 0, 916, 917, 1, 0, 0, 0, 917, 918, 6, 103, 15, 0, 918, 217, 1, 0, 0, 0, 919, 920, 3, 100, 45, 0, 920, 921, 1, 0, 0, 0, 921, 922, 6, 104, 14, 0, 922, 219, 1, 0, 0, 0, 923, 924, 3, 104, 47, 0, 924, 925, 1, 0, 0, 0, 925, 926, 6, 105, 17, 0, 926, 221, 1, 0, 0, 0, 927, 928, 5, 97, 0, 0, 928, 929, 5, 115, 0, 0, 929, 223, 1, 0, 0, 0, 930, 931, 3, 164, 77, 0, 931, 932, 1, 0, 0, 0, 932, 933, 6, 107, 16, 0, 933, 225, 1, 0, 0, 0, 934, 935, 3, 204, 97, 0, 935, 936, 1, 0, 0, 0, 936, 937, 6, 108, 18, 0, 937, 227, 1, 0, 0, 0, 938, 939, 3, 48, 19, 0, 939, 940, 1, 0, 0, 0, 940, 941, 6, 109, 8, 0, 941, 229, 1, 0, 0, 0, 942, 943, 3, 50, 20, 0, 943, 944, 1, 0, 0, 0, 944, 945, 6, 110, 8, 0, 945, 231, 1, 0, 0, 0, 946, 947, 3, 52, 21, 0, 947, 948, 1, 0, 0, 0, 948, 949, 6, 111, 8, 0, 949, 233, 1, 0, 0, 0, 950, 951, 3, 64, 27, 0, 951, 952, 1, 0, 0, 0, 952, 953, 6, 112, 11, 0, 953, 954, 6, 112, 12, 0, 954, 235, 1, 0, 0, 0, 955, 956, 5, 111, 0, 0, 956, 957, 5, 110, 0, 0, 957, 958, 1, 0, 0, 0, 958, 959, 6, 113, 19, 0, 959, 237, 1, 0, 0, 0, 960, 961, 5, 119, 0, 0, 961, 962, 5, 105, 0, 0, 962, 963, 5, 116, 0, 0, 963, 964, 5, 104, 0, 0, 964, 965, 1, 0, 0, 0, 965, 966, 6, 114, 19, 0, 966, 239, 1, 0, 0, 0, 967, 968, 3, 186, 88, 0, 968, 969, 1, 0, 0, 0, 969, 970, 6, 115, 20, 0, 970, 241, 1, 0, 0, 0, 971, 972, 3, 164, 77, 0, 972, 973, 1, 0, 0, 0, 973, 974, 6, 116, 16, 0, 974, 243, 1, 0, 0, 0, 975, 976, 3, 48, 19, 0, 976, 977, 1, 0, 0, 0, 977, 978, 6, 117, 8, 0, 978, 245, 1, 0, 0, 0, 979, 980, 3, 50, 20, 0, 980, 981, 1, 0, 0, 0, 981, 982, 6, 118, 8, 0, 982, 247, 1, 0, 0, 0, 983, 984, 3, 52, 21, 0, 984, 985, 1, 0, 0, 0, 985, 986, 6, 119, 8, 0, 986, 249, 1, 0, 0, 0, 987, 988, 3, 64, 27, 0, 988, 989, 1, 0, 0, 0, 989, 990, 6, 120, 11, 0, 990, 991, 6, 120, 12, 0, 991, 992, 6, 120, 12, 0, 992, 251, 1, 0, 0, 0, 993, 994, 3, 98, 44, 0, 994, 995, 1, 0, 0, 0, 995, 996, 6, 121, 15, 0, 996, 253, 1, 0, 0, 0, 997, 998, 3, 100, 45, 0, 998, 999, 1, 0, 0, 0, 999, 1000, 6, 122, 14, 0, 1000, 255, 1, 0, 0, 0, 1001, 1002, 3, 104, 47, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1004, 6, 123, 17, 0, 1004, 257, 1, 0, 0, 0, 1005, 1006, 3, 238, 114, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1008, 6, 124, 21, 0, 1008, 259, 1, 0, 0, 0, 1009, 1010, 3, 204, 97, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1012, 6, 125, 18, 0, 1012, 261, 1, 0, 0, 0, 1013, 1014, 3, 164, 77, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1016, 6, 126, 16, 0, 1016, 263, 1, 0, 0, 0, 1017, 1018, 3, 48, 19, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1020, 6, 127, 8, 0, 1020, 265, 1, 0, 0, 0, 1021, 1022, 3, 50, 20, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1024, 6, 128, 8, 0, 1024, 267, 1, 0, 0, 0, 1025, 1026, 3, 52, 21, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, 6, 129, 8, 0, 1028, 269, 1, 0, 0, 0, 1029, 1030, 3, 64, 27, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 6, 130, 11, 0, 1032, 1033, 6, 130, 12, 0, 1033, 271, 1, 0, 0, 0, 1034, 1035, 3, 104, 47, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 6, 131, 17, 0, 1037, 273, 1, 0, 0, 0, 1038, 1039, 3, 164, 77, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1041, 6, 132, 16, 0, 1041, 275, 1, 0, 0, 0, 1042, 1043, 3, 162, 76, 0, 1043, 1044, 1, 0, 0, 0, 1044, 1045, 6, 133, 22, 0, 1045, 277, 1, 0, 0, 0, 1046, 1047, 3, 48, 19, 0, 1047, 1048, 1, 0, 0, 0, 1048, 1049, 6, 134, 8, 0, 1049, 279, 1, 0, 0, 0, 1050, 1051, 3, 50, 20, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1053, 6, 135, 8, 0, 1053, 281, 1, 0, 0, 0, 1054, 1055, 3, 52, 21, 0, 1055, 1056, 1, 0, 0, 0, 1056, 1057, 6, 136, 8, 0, 1057, 283, 1, 0, 0, 0, 1058, 1059, 3, 64, 27, 0, 1059, 1060, 1, 0, 0, 0, 1060, 1061, 6, 137, 11, 0, 1061, 1062, 6, 137, 12, 0, 1062, 285, 1, 0, 0, 0, 1063, 1064, 5, 105, 0, 0, 1064, 1065, 5, 110, 0, 0, 1065, 1066, 5, 102, 0, 0, 1066, 1067, 5, 111, 0, 0, 1067, 287, 1, 0, 0, 0, 1068, 1069, 5, 102, 0, 0, 1069, 1070, 5, 117, 0, 0, 1070, 1071, 5, 110, 0, 0, 1071, 1072, 5, 99, 0, 0, 1072, 1073, 5, 116, 0, 0, 1073, 1074, 5, 105, 0, 0, 1074, 1075, 5, 111, 0, 0, 1075, 1076, 5, 110, 0, 0, 1076, 1077, 5, 115, 0, 0, 1077, 289, 1, 0, 0, 0, 1078, 1079, 3, 48, 19, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 6, 140, 8, 0, 1081, 291, 1, 0, 0, 0, 1082, 1083, 3, 50, 20, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1085, 6, 141, 8, 0, 1085, 293, 1, 0, 0, 0, 1086, 1087, 3, 52, 21, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 6, 142, 8, 0, 1089, 295, 1, 0, 0, 0, 49, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 452, 462, 466, 469, 478, 480, 491, 532, 537, 546, 553, 558, 560, 571, 579, 582, 584, 589, 594, 600, 607, 612, 618, 621, 629, 633, 760, 765, 770, 772, 778, 831, 836, 871, 875, 880, 885, 890, 892, 23, 5, 2, 0, 5, 4, 0, 5, 6, 0, 5, 1, 0, 5, 3, 0, 5, 8, 0, 5, 5, 0, 5, 9, 0, 0, 1, 0, 7, 63, 0, 5, 0, 0, 7, 26, 0, 4, 0, 0, 7, 64, 0, 7, 34, 0, 7, 33, 0, 7, 66, 0, 7, 36, 0, 7, 75, 0, 5, 7, 0, 7, 71, 0, 7, 84, 0, 7, 65, 0] \ No newline at end of file diff --git a/esql-lsp/server/src/grammar/generated/EsqlBaseLexer.tokens b/esql-lsp/server/src/grammar/generated/EsqlBaseLexer.tokens new file mode 100644 index 0000000..d94530c --- /dev/null +++ b/esql-lsp/server/src/grammar/generated/EsqlBaseLexer.tokens @@ -0,0 +1,157 @@ +DISSECT=1 +DROP=2 +ENRICH=3 +EVAL=4 +EXPLAIN=5 +FROM=6 +GROK=7 +INLINESTATS=8 +KEEP=9 +LIMIT=10 +MV_EXPAND=11 +PROJECT=12 +RENAME=13 +ROW=14 +SHOW=15 +SORT=16 +STATS=17 +WHERE=18 +UNKNOWN_CMD=19 +LINE_COMMENT=20 +MULTILINE_COMMENT=21 +WS=22 +EXPLAIN_WS=23 +EXPLAIN_LINE_COMMENT=24 +EXPLAIN_MULTILINE_COMMENT=25 +PIPE=26 +STRING=27 +INTEGER_LITERAL=28 +DECIMAL_LITERAL=29 +BY=30 +AND=31 +ASC=32 +ASSIGN=33 +COMMA=34 +DESC=35 +DOT=36 +FALSE=37 +FIRST=38 +LAST=39 +LP=40 +IN=41 +IS=42 +LIKE=43 +NOT=44 +NULL=45 +NULLS=46 +OR=47 +PARAM=48 +RLIKE=49 +RP=50 +TRUE=51 +EQ=52 +NEQ=53 +LT=54 +LTE=55 +GT=56 +GTE=57 +PLUS=58 +MINUS=59 +ASTERISK=60 +SLASH=61 +PERCENT=62 +OPENING_BRACKET=63 +CLOSING_BRACKET=64 +UNQUOTED_IDENTIFIER=65 +QUOTED_IDENTIFIER=66 +EXPR_LINE_COMMENT=67 +EXPR_MULTILINE_COMMENT=68 +EXPR_WS=69 +METADATA=70 +FROM_UNQUOTED_IDENTIFIER=71 +FROM_LINE_COMMENT=72 +FROM_MULTILINE_COMMENT=73 +FROM_WS=74 +PROJECT_UNQUOTED_IDENTIFIER=75 +PROJECT_LINE_COMMENT=76 +PROJECT_MULTILINE_COMMENT=77 +PROJECT_WS=78 +AS=79 +RENAME_LINE_COMMENT=80 +RENAME_MULTILINE_COMMENT=81 +RENAME_WS=82 +ON=83 +WITH=84 +ENRICH_LINE_COMMENT=85 +ENRICH_MULTILINE_COMMENT=86 +ENRICH_WS=87 +ENRICH_FIELD_LINE_COMMENT=88 +ENRICH_FIELD_MULTILINE_COMMENT=89 +ENRICH_FIELD_WS=90 +MVEXPAND_LINE_COMMENT=91 +MVEXPAND_MULTILINE_COMMENT=92 +MVEXPAND_WS=93 +INFO=94 +FUNCTIONS=95 +SHOW_LINE_COMMENT=96 +SHOW_MULTILINE_COMMENT=97 +SHOW_WS=98 +'dissect'=1 +'drop'=2 +'enrich'=3 +'eval'=4 +'explain'=5 +'from'=6 +'grok'=7 +'inlinestats'=8 +'keep'=9 +'limit'=10 +'mv_expand'=11 +'project'=12 +'rename'=13 +'row'=14 +'show'=15 +'sort'=16 +'stats'=17 +'where'=18 +'|'=26 +'by'=30 +'and'=31 +'asc'=32 +'='=33 +','=34 +'desc'=35 +'.'=36 +'false'=37 +'first'=38 +'last'=39 +'('=40 +'in'=41 +'is'=42 +'like'=43 +'not'=44 +'null'=45 +'nulls'=46 +'or'=47 +'?'=48 +'rlike'=49 +')'=50 +'true'=51 +'=='=52 +'!='=53 +'<'=54 +'<='=55 +'>'=56 +'>='=57 +'+'=58 +'-'=59 +'*'=60 +'/'=61 +'%'=62 +']'=64 +'metadata'=70 +'as'=79 +'on'=83 +'with'=84 +'info'=94 +'functions'=95 diff --git a/esql-lsp/server/src/grammar/generated/EsqlBaseLexer.ts b/esql-lsp/server/src/grammar/generated/EsqlBaseLexer.ts new file mode 100644 index 0000000..b0c44fa --- /dev/null +++ b/esql-lsp/server/src/grammar/generated/EsqlBaseLexer.ts @@ -0,0 +1,635 @@ +// Generated from ./src/grammar/EsqlBaseLexer.g4 by ANTLR 4.13.1 + +import * as antlr from "antlr4ng"; +import { Token } from "antlr4ng"; + + +export class EsqlBaseLexer extends antlr.Lexer { + public static readonly DISSECT = 1; + public static readonly DROP = 2; + public static readonly ENRICH = 3; + public static readonly EVAL = 4; + public static readonly EXPLAIN = 5; + public static readonly FROM = 6; + public static readonly GROK = 7; + public static readonly INLINESTATS = 8; + public static readonly KEEP = 9; + public static readonly LIMIT = 10; + public static readonly MV_EXPAND = 11; + public static readonly PROJECT = 12; + public static readonly RENAME = 13; + public static readonly ROW = 14; + public static readonly SHOW = 15; + public static readonly SORT = 16; + public static readonly STATS = 17; + public static readonly WHERE = 18; + public static readonly UNKNOWN_CMD = 19; + public static readonly LINE_COMMENT = 20; + public static readonly MULTILINE_COMMENT = 21; + public static readonly WS = 22; + public static readonly EXPLAIN_WS = 23; + public static readonly EXPLAIN_LINE_COMMENT = 24; + public static readonly EXPLAIN_MULTILINE_COMMENT = 25; + public static readonly PIPE = 26; + public static readonly STRING = 27; + public static readonly INTEGER_LITERAL = 28; + public static readonly DECIMAL_LITERAL = 29; + public static readonly BY = 30; + public static readonly AND = 31; + public static readonly ASC = 32; + public static readonly ASSIGN = 33; + public static readonly COMMA = 34; + public static readonly DESC = 35; + public static readonly DOT = 36; + public static readonly FALSE = 37; + public static readonly FIRST = 38; + public static readonly LAST = 39; + public static readonly LP = 40; + public static readonly IN = 41; + public static readonly IS = 42; + public static readonly LIKE = 43; + public static readonly NOT = 44; + public static readonly NULL = 45; + public static readonly NULLS = 46; + public static readonly OR = 47; + public static readonly PARAM = 48; + public static readonly RLIKE = 49; + public static readonly RP = 50; + public static readonly TRUE = 51; + public static readonly EQ = 52; + public static readonly NEQ = 53; + public static readonly LT = 54; + public static readonly LTE = 55; + public static readonly GT = 56; + public static readonly GTE = 57; + public static readonly PLUS = 58; + public static readonly MINUS = 59; + public static readonly ASTERISK = 60; + public static readonly SLASH = 61; + public static readonly PERCENT = 62; + public static readonly OPENING_BRACKET = 63; + public static readonly CLOSING_BRACKET = 64; + public static readonly UNQUOTED_IDENTIFIER = 65; + public static readonly QUOTED_IDENTIFIER = 66; + public static readonly EXPR_LINE_COMMENT = 67; + public static readonly EXPR_MULTILINE_COMMENT = 68; + public static readonly EXPR_WS = 69; + public static readonly METADATA = 70; + public static readonly FROM_UNQUOTED_IDENTIFIER = 71; + public static readonly FROM_LINE_COMMENT = 72; + public static readonly FROM_MULTILINE_COMMENT = 73; + public static readonly FROM_WS = 74; + public static readonly PROJECT_UNQUOTED_IDENTIFIER = 75; + public static readonly PROJECT_LINE_COMMENT = 76; + public static readonly PROJECT_MULTILINE_COMMENT = 77; + public static readonly PROJECT_WS = 78; + public static readonly AS = 79; + public static readonly RENAME_LINE_COMMENT = 80; + public static readonly RENAME_MULTILINE_COMMENT = 81; + public static readonly RENAME_WS = 82; + public static readonly ON = 83; + public static readonly WITH = 84; + public static readonly ENRICH_LINE_COMMENT = 85; + public static readonly ENRICH_MULTILINE_COMMENT = 86; + public static readonly ENRICH_WS = 87; + public static readonly ENRICH_FIELD_LINE_COMMENT = 88; + public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 89; + public static readonly ENRICH_FIELD_WS = 90; + public static readonly MVEXPAND_LINE_COMMENT = 91; + public static readonly MVEXPAND_MULTILINE_COMMENT = 92; + public static readonly MVEXPAND_WS = 93; + public static readonly INFO = 94; + public static readonly FUNCTIONS = 95; + public static readonly SHOW_LINE_COMMENT = 96; + public static readonly SHOW_MULTILINE_COMMENT = 97; + public static readonly SHOW_WS = 98; + public static readonly EXPLAIN_MODE = 1; + public static readonly EXPRESSION_MODE = 2; + public static readonly FROM_MODE = 3; + public static readonly PROJECT_MODE = 4; + public static readonly RENAME_MODE = 5; + public static readonly ENRICH_MODE = 6; + public static readonly ENRICH_FIELD_MODE = 7; + public static readonly MVEXPAND_MODE = 8; + public static readonly SHOW_MODE = 9; + + public static readonly channelNames = [ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + ]; + + public static readonly literalNames = [ + null, "'dissect'", "'drop'", "'enrich'", "'eval'", "'explain'", + "'from'", "'grok'", "'inlinestats'", "'keep'", "'limit'", "'mv_expand'", + "'project'", "'rename'", "'row'", "'show'", "'sort'", "'stats'", + "'where'", null, null, null, null, null, null, null, "'|'", null, + null, null, "'by'", "'and'", "'asc'", "'='", "','", "'desc'", "'.'", + "'false'", "'first'", "'last'", "'('", "'in'", "'is'", "'like'", + "'not'", "'null'", "'nulls'", "'or'", "'?'", "'rlike'", "')'", "'true'", + "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", + "'/'", "'%'", null, "']'", null, null, null, null, null, "'metadata'", + null, null, null, null, null, null, null, null, "'as'", null, null, + null, "'on'", "'with'", null, null, null, null, null, null, null, + null, null, "'info'", "'functions'" + ]; + + public static readonly symbolicNames = [ + null, "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", + "INLINESTATS", "KEEP", "LIMIT", "MV_EXPAND", "PROJECT", "RENAME", + "ROW", "SHOW", "SORT", "STATS", "WHERE", "UNKNOWN_CMD", "LINE_COMMENT", + "MULTILINE_COMMENT", "WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", + "EXPLAIN_MULTILINE_COMMENT", "PIPE", "STRING", "INTEGER_LITERAL", + "DECIMAL_LITERAL", "BY", "AND", "ASC", "ASSIGN", "COMMA", "DESC", + "DOT", "FALSE", "FIRST", "LAST", "LP", "IN", "IS", "LIKE", "NOT", + "NULL", "NULLS", "OR", "PARAM", "RLIKE", "RP", "TRUE", "EQ", "NEQ", + "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", + "PERCENT", "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", + "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", + "EXPR_WS", "METADATA", "FROM_UNQUOTED_IDENTIFIER", "FROM_LINE_COMMENT", + "FROM_MULTILINE_COMMENT", "FROM_WS", "PROJECT_UNQUOTED_IDENTIFIER", + "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", "PROJECT_WS", + "AS", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS", + "ON", "WITH", "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT", + "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT", + "ENRICH_FIELD_WS", "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT", + "MVEXPAND_WS", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", "SHOW_MULTILINE_COMMENT", + "SHOW_WS" + ]; + + public static readonly modeNames = [ + "DEFAULT_MODE", "EXPLAIN_MODE", "EXPRESSION_MODE", "FROM_MODE", + "PROJECT_MODE", "RENAME_MODE", "ENRICH_MODE", "ENRICH_FIELD_MODE", + "MVEXPAND_MODE", "SHOW_MODE", + ]; + + public static readonly ruleNames = [ + "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", + "INLINESTATS", "KEEP", "LIMIT", "MV_EXPAND", "PROJECT", "RENAME", + "ROW", "SHOW", "SORT", "STATS", "WHERE", "UNKNOWN_CMD", "LINE_COMMENT", + "MULTILINE_COMMENT", "WS", "EXPLAIN_OPENING_BRACKET", "EXPLAIN_PIPE", + "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT", + "PIPE", "DIGIT", "LETTER", "ESCAPE_SEQUENCE", "UNESCAPED_CHARS", + "EXPONENT", "ASPERAND", "BACKQUOTE", "BACKQUOTE_BLOCK", "UNDERSCORE", + "UNQUOTED_ID_BODY", "STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", + "BY", "AND", "ASC", "ASSIGN", "COMMA", "DESC", "DOT", "FALSE", "FIRST", + "LAST", "LP", "IN", "IS", "LIKE", "NOT", "NULL", "NULLS", "OR", + "PARAM", "RLIKE", "RP", "TRUE", "EQ", "NEQ", "LT", "LTE", "GT", + "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "OPENING_BRACKET", + "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", + "EXPR_MULTILINE_COMMENT", "EXPR_WS", "FROM_PIPE", "FROM_OPENING_BRACKET", + "FROM_CLOSING_BRACKET", "FROM_COMMA", "FROM_ASSIGN", "METADATA", + "FROM_UNQUOTED_IDENTIFIER_PART", "FROM_UNQUOTED_IDENTIFIER", "FROM_QUOTED_IDENTIFIER", + "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT", "FROM_WS", "PROJECT_PIPE", + "PROJECT_DOT", "PROJECT_COMMA", "UNQUOTED_ID_BODY_WITH_PATTERN", + "PROJECT_UNQUOTED_IDENTIFIER", "PROJECT_QUOTED_IDENTIFIER", "PROJECT_LINE_COMMENT", + "PROJECT_MULTILINE_COMMENT", "PROJECT_WS", "RENAME_PIPE", "RENAME_ASSIGN", + "RENAME_COMMA", "RENAME_DOT", "AS", "RENAME_QUOTED_IDENTIFIER", + "RENAME_UNQUOTED_IDENTIFIER", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", + "RENAME_WS", "ENRICH_PIPE", "ON", "WITH", "ENRICH_POLICY_UNQUOTED_IDENTIFIER", + "ENRICH_QUOTED_IDENTIFIER", "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT", + "ENRICH_WS", "ENRICH_FIELD_PIPE", "ENRICH_FIELD_ASSIGN", "ENRICH_FIELD_COMMA", + "ENRICH_FIELD_DOT", "ENRICH_FIELD_WITH", "ENRICH_FIELD_UNQUOTED_IDENTIFIER", + "ENRICH_FIELD_QUOTED_IDENTIFIER", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT", + "ENRICH_FIELD_WS", "MVEXPAND_PIPE", "MVEXPAND_DOT", "MVEXPAND_QUOTED_IDENTIFIER", + "MVEXPAND_UNQUOTED_IDENTIFIER", "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT", + "MVEXPAND_WS", "SHOW_PIPE", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", + "SHOW_MULTILINE_COMMENT", "SHOW_WS", + ]; + + + public constructor(input: antlr.CharStream) { + super(input); + this.interpreter = new antlr.LexerATNSimulator(this, EsqlBaseLexer._ATN, EsqlBaseLexer.decisionsToDFA, new antlr.PredictionContextCache()); + } + + public get grammarFileName(): string { return "EsqlBaseLexer.g4"; } + + public get literalNames(): (string | null)[] { return EsqlBaseLexer.literalNames; } + public get symbolicNames(): (string | null)[] { return EsqlBaseLexer.symbolicNames; } + public get ruleNames(): string[] { return EsqlBaseLexer.ruleNames; } + + public get serializedATN(): number[] { return EsqlBaseLexer._serializedATN; } + + public get channelNames(): string[] { return EsqlBaseLexer.channelNames; } + + public get modeNames(): string[] { return EsqlBaseLexer.modeNames; } + + public static readonly _serializedATN: number[] = [ + 4,0,98,1090,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,2, + 0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2, + 8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14, + 2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, + 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27, + 2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34, + 7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40, + 2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47, + 7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53, + 2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60, + 7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66, + 2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73, + 7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79, + 2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86, + 7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92, + 2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99, + 7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104, + 2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110, + 7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115, + 2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121, + 7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126, + 2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132, + 7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137, + 2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,1,0, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5, + 1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7, + 1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9, + 1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, + 1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11, + 1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13, + 1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15, + 1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17, + 1,17,1,17,1,17,1,17,1,17,1,17,1,18,4,18,451,8,18,11,18,12,18,452, + 1,18,1,18,1,19,1,19,1,19,1,19,5,19,461,8,19,10,19,12,19,464,9,19, + 1,19,3,19,467,8,19,1,19,3,19,470,8,19,1,19,1,19,1,20,1,20,1,20,1, + 20,1,20,5,20,479,8,20,10,20,12,20,482,9,20,1,20,1,20,1,20,1,20,1, + 20,1,21,4,21,490,8,21,11,21,12,21,491,1,21,1,21,1,22,1,22,1,22,1, + 22,1,22,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,25,1,25,1, + 25,1,25,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,28,1,28,1,29,1, + 29,1,30,1,30,1,30,1,31,1,31,1,32,1,32,3,32,533,8,32,1,32,4,32,536, + 8,32,11,32,12,32,537,1,33,1,33,1,34,1,34,1,35,1,35,1,35,3,35,547, + 8,35,1,36,1,36,1,37,1,37,1,37,3,37,554,8,37,1,38,1,38,1,38,5,38, + 559,8,38,10,38,12,38,562,9,38,1,38,1,38,1,38,1,38,1,38,1,38,5,38, + 570,8,38,10,38,12,38,573,9,38,1,38,1,38,1,38,1,38,1,38,3,38,580, + 8,38,1,38,3,38,583,8,38,3,38,585,8,38,1,39,4,39,588,8,39,11,39,12, + 39,589,1,40,4,40,593,8,40,11,40,12,40,594,1,40,1,40,5,40,599,8,40, + 10,40,12,40,602,9,40,1,40,1,40,4,40,606,8,40,11,40,12,40,607,1,40, + 4,40,611,8,40,11,40,12,40,612,1,40,1,40,5,40,617,8,40,10,40,12,40, + 620,9,40,3,40,622,8,40,1,40,1,40,1,40,1,40,4,40,628,8,40,11,40,12, + 40,629,1,40,1,40,3,40,634,8,40,1,41,1,41,1,41,1,42,1,42,1,42,1,42, + 1,43,1,43,1,43,1,43,1,44,1,44,1,45,1,45,1,46,1,46,1,46,1,46,1,46, + 1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49, + 1,49,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,53,1,53, + 1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,56,1,56,1,56, + 1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,59,1,59, + 1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,62,1,62,1,62,1,62,1,62, + 1,63,1,63,1,63,1,64,1,64,1,64,1,65,1,65,1,66,1,66,1,66,1,67,1,67, + 1,68,1,68,1,68,1,69,1,69,1,70,1,70,1,71,1,71,1,72,1,72,1,73,1,73, + 1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,76,1,76,5,76, + 759,8,76,10,76,12,76,762,9,76,1,76,1,76,3,76,766,8,76,1,76,4,76, + 769,8,76,11,76,12,76,770,3,76,773,8,76,1,77,1,77,4,77,777,8,77,11, + 77,12,77,778,1,77,1,77,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1, + 80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1, + 82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,85,1, + 85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1, + 87,1,87,3,87,832,8,87,1,88,4,88,835,8,88,11,88,12,88,836,1,89,1, + 89,1,89,1,89,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,92,1,92,1, + 92,1,92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,95,1,95,1, + 95,1,95,1,96,1,96,1,96,1,96,3,96,872,8,96,1,97,1,97,3,97,876,8,97, + 1,97,5,97,879,8,97,10,97,12,97,882,9,97,1,97,1,97,3,97,886,8,97, + 1,97,4,97,889,8,97,11,97,12,97,890,3,97,893,8,97,1,98,1,98,1,98, + 1,98,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,101,1,101,1,101, + 1,101,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,104, + 1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,107, + 1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109, + 1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,112,1,112,1,112, + 1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114, + 1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116, + 1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,119,1,119,1,119, + 1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121, + 1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,124,1,124,1,124, + 1,124,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,127,1,127, + 1,127,1,127,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,130, + 1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,132,1,132,1,132, + 1,132,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,135,1,135, + 1,135,1,135,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137, + 1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139, + 1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,141,1,141,1,141, + 1,141,1,142,1,142,1,142,1,142,2,480,571,0,143,10,1,12,2,14,3,16, + 4,18,5,20,6,22,7,24,8,26,9,28,10,30,11,32,12,34,13,36,14,38,15,40, + 16,42,17,44,18,46,19,48,20,50,21,52,22,54,0,56,0,58,23,60,24,62, + 25,64,26,66,0,68,0,70,0,72,0,74,0,76,0,78,0,80,0,82,0,84,0,86,27, + 88,28,90,29,92,30,94,31,96,32,98,33,100,34,102,35,104,36,106,37, + 108,38,110,39,112,40,114,41,116,42,118,43,120,44,122,45,124,46,126, + 47,128,48,130,49,132,50,134,51,136,52,138,53,140,54,142,55,144,56, + 146,57,148,58,150,59,152,60,154,61,156,62,158,63,160,64,162,65,164, + 66,166,67,168,68,170,69,172,0,174,0,176,0,178,0,180,0,182,70,184, + 0,186,71,188,0,190,72,192,73,194,74,196,0,198,0,200,0,202,0,204, + 75,206,0,208,76,210,77,212,78,214,0,216,0,218,0,220,0,222,79,224, + 0,226,0,228,80,230,81,232,82,234,0,236,83,238,84,240,0,242,0,244, + 85,246,86,248,87,250,0,252,0,254,0,256,0,258,0,260,0,262,0,264,88, + 266,89,268,90,270,0,272,0,274,0,276,0,278,91,280,92,282,93,284,0, + 286,94,288,95,290,96,292,97,294,98,10,0,1,2,3,4,5,6,7,8,9,12,6,0, + 9,10,13,13,32,32,47,47,91,91,93,93,2,0,10,10,13,13,3,0,9,10,13,13, + 32,32,1,0,48,57,2,0,65,90,97,122,5,0,34,34,92,92,110,110,114,114, + 116,116,4,0,10,10,13,13,34,34,92,92,2,0,69,69,101,101,2,0,43,43, + 45,45,1,0,96,96,10,0,9,10,13,13,32,32,44,44,47,47,61,61,91,91,93, + 93,96,96,124,124,2,0,42,42,47,47,1112,0,10,1,0,0,0,0,12,1,0,0,0, + 0,14,1,0,0,0,0,16,1,0,0,0,0,18,1,0,0,0,0,20,1,0,0,0,0,22,1,0,0,0, + 0,24,1,0,0,0,0,26,1,0,0,0,0,28,1,0,0,0,0,30,1,0,0,0,0,32,1,0,0,0, + 0,34,1,0,0,0,0,36,1,0,0,0,0,38,1,0,0,0,0,40,1,0,0,0,0,42,1,0,0,0, + 0,44,1,0,0,0,0,46,1,0,0,0,0,48,1,0,0,0,0,50,1,0,0,0,0,52,1,0,0,0, + 1,54,1,0,0,0,1,56,1,0,0,0,1,58,1,0,0,0,1,60,1,0,0,0,1,62,1,0,0,0, + 2,64,1,0,0,0,2,86,1,0,0,0,2,88,1,0,0,0,2,90,1,0,0,0,2,92,1,0,0,0, + 2,94,1,0,0,0,2,96,1,0,0,0,2,98,1,0,0,0,2,100,1,0,0,0,2,102,1,0,0, + 0,2,104,1,0,0,0,2,106,1,0,0,0,2,108,1,0,0,0,2,110,1,0,0,0,2,112, + 1,0,0,0,2,114,1,0,0,0,2,116,1,0,0,0,2,118,1,0,0,0,2,120,1,0,0,0, + 2,122,1,0,0,0,2,124,1,0,0,0,2,126,1,0,0,0,2,128,1,0,0,0,2,130,1, + 0,0,0,2,132,1,0,0,0,2,134,1,0,0,0,2,136,1,0,0,0,2,138,1,0,0,0,2, + 140,1,0,0,0,2,142,1,0,0,0,2,144,1,0,0,0,2,146,1,0,0,0,2,148,1,0, + 0,0,2,150,1,0,0,0,2,152,1,0,0,0,2,154,1,0,0,0,2,156,1,0,0,0,2,158, + 1,0,0,0,2,160,1,0,0,0,2,162,1,0,0,0,2,164,1,0,0,0,2,166,1,0,0,0, + 2,168,1,0,0,0,2,170,1,0,0,0,3,172,1,0,0,0,3,174,1,0,0,0,3,176,1, + 0,0,0,3,178,1,0,0,0,3,180,1,0,0,0,3,182,1,0,0,0,3,186,1,0,0,0,3, + 188,1,0,0,0,3,190,1,0,0,0,3,192,1,0,0,0,3,194,1,0,0,0,4,196,1,0, + 0,0,4,198,1,0,0,0,4,200,1,0,0,0,4,204,1,0,0,0,4,206,1,0,0,0,4,208, + 1,0,0,0,4,210,1,0,0,0,4,212,1,0,0,0,5,214,1,0,0,0,5,216,1,0,0,0, + 5,218,1,0,0,0,5,220,1,0,0,0,5,222,1,0,0,0,5,224,1,0,0,0,5,226,1, + 0,0,0,5,228,1,0,0,0,5,230,1,0,0,0,5,232,1,0,0,0,6,234,1,0,0,0,6, + 236,1,0,0,0,6,238,1,0,0,0,6,240,1,0,0,0,6,242,1,0,0,0,6,244,1,0, + 0,0,6,246,1,0,0,0,6,248,1,0,0,0,7,250,1,0,0,0,7,252,1,0,0,0,7,254, + 1,0,0,0,7,256,1,0,0,0,7,258,1,0,0,0,7,260,1,0,0,0,7,262,1,0,0,0, + 7,264,1,0,0,0,7,266,1,0,0,0,7,268,1,0,0,0,8,270,1,0,0,0,8,272,1, + 0,0,0,8,274,1,0,0,0,8,276,1,0,0,0,8,278,1,0,0,0,8,280,1,0,0,0,8, + 282,1,0,0,0,9,284,1,0,0,0,9,286,1,0,0,0,9,288,1,0,0,0,9,290,1,0, + 0,0,9,292,1,0,0,0,9,294,1,0,0,0,10,296,1,0,0,0,12,306,1,0,0,0,14, + 313,1,0,0,0,16,322,1,0,0,0,18,329,1,0,0,0,20,339,1,0,0,0,22,346, + 1,0,0,0,24,353,1,0,0,0,26,367,1,0,0,0,28,374,1,0,0,0,30,382,1,0, + 0,0,32,394,1,0,0,0,34,404,1,0,0,0,36,413,1,0,0,0,38,419,1,0,0,0, + 40,426,1,0,0,0,42,433,1,0,0,0,44,441,1,0,0,0,46,450,1,0,0,0,48,456, + 1,0,0,0,50,473,1,0,0,0,52,489,1,0,0,0,54,495,1,0,0,0,56,500,1,0, + 0,0,58,505,1,0,0,0,60,509,1,0,0,0,62,513,1,0,0,0,64,517,1,0,0,0, + 66,521,1,0,0,0,68,523,1,0,0,0,70,525,1,0,0,0,72,528,1,0,0,0,74,530, + 1,0,0,0,76,539,1,0,0,0,78,541,1,0,0,0,80,546,1,0,0,0,82,548,1,0, + 0,0,84,553,1,0,0,0,86,584,1,0,0,0,88,587,1,0,0,0,90,633,1,0,0,0, + 92,635,1,0,0,0,94,638,1,0,0,0,96,642,1,0,0,0,98,646,1,0,0,0,100, + 648,1,0,0,0,102,650,1,0,0,0,104,655,1,0,0,0,106,657,1,0,0,0,108, + 663,1,0,0,0,110,669,1,0,0,0,112,674,1,0,0,0,114,676,1,0,0,0,116, + 679,1,0,0,0,118,682,1,0,0,0,120,687,1,0,0,0,122,691,1,0,0,0,124, + 696,1,0,0,0,126,702,1,0,0,0,128,705,1,0,0,0,130,707,1,0,0,0,132, + 713,1,0,0,0,134,715,1,0,0,0,136,720,1,0,0,0,138,723,1,0,0,0,140, + 726,1,0,0,0,142,728,1,0,0,0,144,731,1,0,0,0,146,733,1,0,0,0,148, + 736,1,0,0,0,150,738,1,0,0,0,152,740,1,0,0,0,154,742,1,0,0,0,156, + 744,1,0,0,0,158,746,1,0,0,0,160,751,1,0,0,0,162,772,1,0,0,0,164, + 774,1,0,0,0,166,782,1,0,0,0,168,786,1,0,0,0,170,790,1,0,0,0,172, + 794,1,0,0,0,174,799,1,0,0,0,176,805,1,0,0,0,178,811,1,0,0,0,180, + 815,1,0,0,0,182,819,1,0,0,0,184,831,1,0,0,0,186,834,1,0,0,0,188, + 838,1,0,0,0,190,842,1,0,0,0,192,846,1,0,0,0,194,850,1,0,0,0,196, + 854,1,0,0,0,198,859,1,0,0,0,200,863,1,0,0,0,202,871,1,0,0,0,204, + 892,1,0,0,0,206,894,1,0,0,0,208,898,1,0,0,0,210,902,1,0,0,0,212, + 906,1,0,0,0,214,910,1,0,0,0,216,915,1,0,0,0,218,919,1,0,0,0,220, + 923,1,0,0,0,222,927,1,0,0,0,224,930,1,0,0,0,226,934,1,0,0,0,228, + 938,1,0,0,0,230,942,1,0,0,0,232,946,1,0,0,0,234,950,1,0,0,0,236, + 955,1,0,0,0,238,960,1,0,0,0,240,967,1,0,0,0,242,971,1,0,0,0,244, + 975,1,0,0,0,246,979,1,0,0,0,248,983,1,0,0,0,250,987,1,0,0,0,252, + 993,1,0,0,0,254,997,1,0,0,0,256,1001,1,0,0,0,258,1005,1,0,0,0,260, + 1009,1,0,0,0,262,1013,1,0,0,0,264,1017,1,0,0,0,266,1021,1,0,0,0, + 268,1025,1,0,0,0,270,1029,1,0,0,0,272,1034,1,0,0,0,274,1038,1,0, + 0,0,276,1042,1,0,0,0,278,1046,1,0,0,0,280,1050,1,0,0,0,282,1054, + 1,0,0,0,284,1058,1,0,0,0,286,1063,1,0,0,0,288,1068,1,0,0,0,290,1078, + 1,0,0,0,292,1082,1,0,0,0,294,1086,1,0,0,0,296,297,5,100,0,0,297, + 298,5,105,0,0,298,299,5,115,0,0,299,300,5,115,0,0,300,301,5,101, + 0,0,301,302,5,99,0,0,302,303,5,116,0,0,303,304,1,0,0,0,304,305,6, + 0,0,0,305,11,1,0,0,0,306,307,5,100,0,0,307,308,5,114,0,0,308,309, + 5,111,0,0,309,310,5,112,0,0,310,311,1,0,0,0,311,312,6,1,1,0,312, + 13,1,0,0,0,313,314,5,101,0,0,314,315,5,110,0,0,315,316,5,114,0,0, + 316,317,5,105,0,0,317,318,5,99,0,0,318,319,5,104,0,0,319,320,1,0, + 0,0,320,321,6,2,2,0,321,15,1,0,0,0,322,323,5,101,0,0,323,324,5,118, + 0,0,324,325,5,97,0,0,325,326,5,108,0,0,326,327,1,0,0,0,327,328,6, + 3,0,0,328,17,1,0,0,0,329,330,5,101,0,0,330,331,5,120,0,0,331,332, + 5,112,0,0,332,333,5,108,0,0,333,334,5,97,0,0,334,335,5,105,0,0,335, + 336,5,110,0,0,336,337,1,0,0,0,337,338,6,4,3,0,338,19,1,0,0,0,339, + 340,5,102,0,0,340,341,5,114,0,0,341,342,5,111,0,0,342,343,5,109, + 0,0,343,344,1,0,0,0,344,345,6,5,4,0,345,21,1,0,0,0,346,347,5,103, + 0,0,347,348,5,114,0,0,348,349,5,111,0,0,349,350,5,107,0,0,350,351, + 1,0,0,0,351,352,6,6,0,0,352,23,1,0,0,0,353,354,5,105,0,0,354,355, + 5,110,0,0,355,356,5,108,0,0,356,357,5,105,0,0,357,358,5,110,0,0, + 358,359,5,101,0,0,359,360,5,115,0,0,360,361,5,116,0,0,361,362,5, + 97,0,0,362,363,5,116,0,0,363,364,5,115,0,0,364,365,1,0,0,0,365,366, + 6,7,0,0,366,25,1,0,0,0,367,368,5,107,0,0,368,369,5,101,0,0,369,370, + 5,101,0,0,370,371,5,112,0,0,371,372,1,0,0,0,372,373,6,8,1,0,373, + 27,1,0,0,0,374,375,5,108,0,0,375,376,5,105,0,0,376,377,5,109,0,0, + 377,378,5,105,0,0,378,379,5,116,0,0,379,380,1,0,0,0,380,381,6,9, + 0,0,381,29,1,0,0,0,382,383,5,109,0,0,383,384,5,118,0,0,384,385,5, + 95,0,0,385,386,5,101,0,0,386,387,5,120,0,0,387,388,5,112,0,0,388, + 389,5,97,0,0,389,390,5,110,0,0,390,391,5,100,0,0,391,392,1,0,0,0, + 392,393,6,10,5,0,393,31,1,0,0,0,394,395,5,112,0,0,395,396,5,114, + 0,0,396,397,5,111,0,0,397,398,5,106,0,0,398,399,5,101,0,0,399,400, + 5,99,0,0,400,401,5,116,0,0,401,402,1,0,0,0,402,403,6,11,1,0,403, + 33,1,0,0,0,404,405,5,114,0,0,405,406,5,101,0,0,406,407,5,110,0,0, + 407,408,5,97,0,0,408,409,5,109,0,0,409,410,5,101,0,0,410,411,1,0, + 0,0,411,412,6,12,6,0,412,35,1,0,0,0,413,414,5,114,0,0,414,415,5, + 111,0,0,415,416,5,119,0,0,416,417,1,0,0,0,417,418,6,13,0,0,418,37, + 1,0,0,0,419,420,5,115,0,0,420,421,5,104,0,0,421,422,5,111,0,0,422, + 423,5,119,0,0,423,424,1,0,0,0,424,425,6,14,7,0,425,39,1,0,0,0,426, + 427,5,115,0,0,427,428,5,111,0,0,428,429,5,114,0,0,429,430,5,116, + 0,0,430,431,1,0,0,0,431,432,6,15,0,0,432,41,1,0,0,0,433,434,5,115, + 0,0,434,435,5,116,0,0,435,436,5,97,0,0,436,437,5,116,0,0,437,438, + 5,115,0,0,438,439,1,0,0,0,439,440,6,16,0,0,440,43,1,0,0,0,441,442, + 5,119,0,0,442,443,5,104,0,0,443,444,5,101,0,0,444,445,5,114,0,0, + 445,446,5,101,0,0,446,447,1,0,0,0,447,448,6,17,0,0,448,45,1,0,0, + 0,449,451,8,0,0,0,450,449,1,0,0,0,451,452,1,0,0,0,452,450,1,0,0, + 0,452,453,1,0,0,0,453,454,1,0,0,0,454,455,6,18,0,0,455,47,1,0,0, + 0,456,457,5,47,0,0,457,458,5,47,0,0,458,462,1,0,0,0,459,461,8,1, + 0,0,460,459,1,0,0,0,461,464,1,0,0,0,462,460,1,0,0,0,462,463,1,0, + 0,0,463,466,1,0,0,0,464,462,1,0,0,0,465,467,5,13,0,0,466,465,1,0, + 0,0,466,467,1,0,0,0,467,469,1,0,0,0,468,470,5,10,0,0,469,468,1,0, + 0,0,469,470,1,0,0,0,470,471,1,0,0,0,471,472,6,19,8,0,472,49,1,0, + 0,0,473,474,5,47,0,0,474,475,5,42,0,0,475,480,1,0,0,0,476,479,3, + 50,20,0,477,479,9,0,0,0,478,476,1,0,0,0,478,477,1,0,0,0,479,482, + 1,0,0,0,480,481,1,0,0,0,480,478,1,0,0,0,481,483,1,0,0,0,482,480, + 1,0,0,0,483,484,5,42,0,0,484,485,5,47,0,0,485,486,1,0,0,0,486,487, + 6,20,8,0,487,51,1,0,0,0,488,490,7,2,0,0,489,488,1,0,0,0,490,491, + 1,0,0,0,491,489,1,0,0,0,491,492,1,0,0,0,492,493,1,0,0,0,493,494, + 6,21,8,0,494,53,1,0,0,0,495,496,3,158,74,0,496,497,1,0,0,0,497,498, + 6,22,9,0,498,499,6,22,10,0,499,55,1,0,0,0,500,501,3,64,27,0,501, + 502,1,0,0,0,502,503,6,23,11,0,503,504,6,23,12,0,504,57,1,0,0,0,505, + 506,3,52,21,0,506,507,1,0,0,0,507,508,6,24,8,0,508,59,1,0,0,0,509, + 510,3,48,19,0,510,511,1,0,0,0,511,512,6,25,8,0,512,61,1,0,0,0,513, + 514,3,50,20,0,514,515,1,0,0,0,515,516,6,26,8,0,516,63,1,0,0,0,517, + 518,5,124,0,0,518,519,1,0,0,0,519,520,6,27,12,0,520,65,1,0,0,0,521, + 522,7,3,0,0,522,67,1,0,0,0,523,524,7,4,0,0,524,69,1,0,0,0,525,526, + 5,92,0,0,526,527,7,5,0,0,527,71,1,0,0,0,528,529,8,6,0,0,529,73,1, + 0,0,0,530,532,7,7,0,0,531,533,7,8,0,0,532,531,1,0,0,0,532,533,1, + 0,0,0,533,535,1,0,0,0,534,536,3,66,28,0,535,534,1,0,0,0,536,537, + 1,0,0,0,537,535,1,0,0,0,537,538,1,0,0,0,538,75,1,0,0,0,539,540,5, + 64,0,0,540,77,1,0,0,0,541,542,5,96,0,0,542,79,1,0,0,0,543,547,8, + 9,0,0,544,545,5,96,0,0,545,547,5,96,0,0,546,543,1,0,0,0,546,544, + 1,0,0,0,547,81,1,0,0,0,548,549,5,95,0,0,549,83,1,0,0,0,550,554,3, + 68,29,0,551,554,3,66,28,0,552,554,3,82,36,0,553,550,1,0,0,0,553, + 551,1,0,0,0,553,552,1,0,0,0,554,85,1,0,0,0,555,560,5,34,0,0,556, + 559,3,70,30,0,557,559,3,72,31,0,558,556,1,0,0,0,558,557,1,0,0,0, + 559,562,1,0,0,0,560,558,1,0,0,0,560,561,1,0,0,0,561,563,1,0,0,0, + 562,560,1,0,0,0,563,585,5,34,0,0,564,565,5,34,0,0,565,566,5,34,0, + 0,566,567,5,34,0,0,567,571,1,0,0,0,568,570,8,1,0,0,569,568,1,0,0, + 0,570,573,1,0,0,0,571,572,1,0,0,0,571,569,1,0,0,0,572,574,1,0,0, + 0,573,571,1,0,0,0,574,575,5,34,0,0,575,576,5,34,0,0,576,577,5,34, + 0,0,577,579,1,0,0,0,578,580,5,34,0,0,579,578,1,0,0,0,579,580,1,0, + 0,0,580,582,1,0,0,0,581,583,5,34,0,0,582,581,1,0,0,0,582,583,1,0, + 0,0,583,585,1,0,0,0,584,555,1,0,0,0,584,564,1,0,0,0,585,87,1,0,0, + 0,586,588,3,66,28,0,587,586,1,0,0,0,588,589,1,0,0,0,589,587,1,0, + 0,0,589,590,1,0,0,0,590,89,1,0,0,0,591,593,3,66,28,0,592,591,1,0, + 0,0,593,594,1,0,0,0,594,592,1,0,0,0,594,595,1,0,0,0,595,596,1,0, + 0,0,596,600,3,104,47,0,597,599,3,66,28,0,598,597,1,0,0,0,599,602, + 1,0,0,0,600,598,1,0,0,0,600,601,1,0,0,0,601,634,1,0,0,0,602,600, + 1,0,0,0,603,605,3,104,47,0,604,606,3,66,28,0,605,604,1,0,0,0,606, + 607,1,0,0,0,607,605,1,0,0,0,607,608,1,0,0,0,608,634,1,0,0,0,609, + 611,3,66,28,0,610,609,1,0,0,0,611,612,1,0,0,0,612,610,1,0,0,0,612, + 613,1,0,0,0,613,621,1,0,0,0,614,618,3,104,47,0,615,617,3,66,28,0, + 616,615,1,0,0,0,617,620,1,0,0,0,618,616,1,0,0,0,618,619,1,0,0,0, + 619,622,1,0,0,0,620,618,1,0,0,0,621,614,1,0,0,0,621,622,1,0,0,0, + 622,623,1,0,0,0,623,624,3,74,32,0,624,634,1,0,0,0,625,627,3,104, + 47,0,626,628,3,66,28,0,627,626,1,0,0,0,628,629,1,0,0,0,629,627,1, + 0,0,0,629,630,1,0,0,0,630,631,1,0,0,0,631,632,3,74,32,0,632,634, + 1,0,0,0,633,592,1,0,0,0,633,603,1,0,0,0,633,610,1,0,0,0,633,625, + 1,0,0,0,634,91,1,0,0,0,635,636,5,98,0,0,636,637,5,121,0,0,637,93, + 1,0,0,0,638,639,5,97,0,0,639,640,5,110,0,0,640,641,5,100,0,0,641, + 95,1,0,0,0,642,643,5,97,0,0,643,644,5,115,0,0,644,645,5,99,0,0,645, + 97,1,0,0,0,646,647,5,61,0,0,647,99,1,0,0,0,648,649,5,44,0,0,649, + 101,1,0,0,0,650,651,5,100,0,0,651,652,5,101,0,0,652,653,5,115,0, + 0,653,654,5,99,0,0,654,103,1,0,0,0,655,656,5,46,0,0,656,105,1,0, + 0,0,657,658,5,102,0,0,658,659,5,97,0,0,659,660,5,108,0,0,660,661, + 5,115,0,0,661,662,5,101,0,0,662,107,1,0,0,0,663,664,5,102,0,0,664, + 665,5,105,0,0,665,666,5,114,0,0,666,667,5,115,0,0,667,668,5,116, + 0,0,668,109,1,0,0,0,669,670,5,108,0,0,670,671,5,97,0,0,671,672,5, + 115,0,0,672,673,5,116,0,0,673,111,1,0,0,0,674,675,5,40,0,0,675,113, + 1,0,0,0,676,677,5,105,0,0,677,678,5,110,0,0,678,115,1,0,0,0,679, + 680,5,105,0,0,680,681,5,115,0,0,681,117,1,0,0,0,682,683,5,108,0, + 0,683,684,5,105,0,0,684,685,5,107,0,0,685,686,5,101,0,0,686,119, + 1,0,0,0,687,688,5,110,0,0,688,689,5,111,0,0,689,690,5,116,0,0,690, + 121,1,0,0,0,691,692,5,110,0,0,692,693,5,117,0,0,693,694,5,108,0, + 0,694,695,5,108,0,0,695,123,1,0,0,0,696,697,5,110,0,0,697,698,5, + 117,0,0,698,699,5,108,0,0,699,700,5,108,0,0,700,701,5,115,0,0,701, + 125,1,0,0,0,702,703,5,111,0,0,703,704,5,114,0,0,704,127,1,0,0,0, + 705,706,5,63,0,0,706,129,1,0,0,0,707,708,5,114,0,0,708,709,5,108, + 0,0,709,710,5,105,0,0,710,711,5,107,0,0,711,712,5,101,0,0,712,131, + 1,0,0,0,713,714,5,41,0,0,714,133,1,0,0,0,715,716,5,116,0,0,716,717, + 5,114,0,0,717,718,5,117,0,0,718,719,5,101,0,0,719,135,1,0,0,0,720, + 721,5,61,0,0,721,722,5,61,0,0,722,137,1,0,0,0,723,724,5,33,0,0,724, + 725,5,61,0,0,725,139,1,0,0,0,726,727,5,60,0,0,727,141,1,0,0,0,728, + 729,5,60,0,0,729,730,5,61,0,0,730,143,1,0,0,0,731,732,5,62,0,0,732, + 145,1,0,0,0,733,734,5,62,0,0,734,735,5,61,0,0,735,147,1,0,0,0,736, + 737,5,43,0,0,737,149,1,0,0,0,738,739,5,45,0,0,739,151,1,0,0,0,740, + 741,5,42,0,0,741,153,1,0,0,0,742,743,5,47,0,0,743,155,1,0,0,0,744, + 745,5,37,0,0,745,157,1,0,0,0,746,747,5,91,0,0,747,748,1,0,0,0,748, + 749,6,74,0,0,749,750,6,74,0,0,750,159,1,0,0,0,751,752,5,93,0,0,752, + 753,1,0,0,0,753,754,6,75,12,0,754,755,6,75,12,0,755,161,1,0,0,0, + 756,760,3,68,29,0,757,759,3,84,37,0,758,757,1,0,0,0,759,762,1,0, + 0,0,760,758,1,0,0,0,760,761,1,0,0,0,761,773,1,0,0,0,762,760,1,0, + 0,0,763,766,3,82,36,0,764,766,3,76,33,0,765,763,1,0,0,0,765,764, + 1,0,0,0,766,768,1,0,0,0,767,769,3,84,37,0,768,767,1,0,0,0,769,770, + 1,0,0,0,770,768,1,0,0,0,770,771,1,0,0,0,771,773,1,0,0,0,772,756, + 1,0,0,0,772,765,1,0,0,0,773,163,1,0,0,0,774,776,3,78,34,0,775,777, + 3,80,35,0,776,775,1,0,0,0,777,778,1,0,0,0,778,776,1,0,0,0,778,779, + 1,0,0,0,779,780,1,0,0,0,780,781,3,78,34,0,781,165,1,0,0,0,782,783, + 3,48,19,0,783,784,1,0,0,0,784,785,6,78,8,0,785,167,1,0,0,0,786,787, + 3,50,20,0,787,788,1,0,0,0,788,789,6,79,8,0,789,169,1,0,0,0,790,791, + 3,52,21,0,791,792,1,0,0,0,792,793,6,80,8,0,793,171,1,0,0,0,794,795, + 3,64,27,0,795,796,1,0,0,0,796,797,6,81,11,0,797,798,6,81,12,0,798, + 173,1,0,0,0,799,800,3,158,74,0,800,801,1,0,0,0,801,802,6,82,9,0, + 802,803,6,82,4,0,803,804,6,82,4,0,804,175,1,0,0,0,805,806,3,160, + 75,0,806,807,1,0,0,0,807,808,6,83,13,0,808,809,6,83,12,0,809,810, + 6,83,12,0,810,177,1,0,0,0,811,812,3,100,45,0,812,813,1,0,0,0,813, + 814,6,84,14,0,814,179,1,0,0,0,815,816,3,98,44,0,816,817,1,0,0,0, + 817,818,6,85,15,0,818,181,1,0,0,0,819,820,5,109,0,0,820,821,5,101, + 0,0,821,822,5,116,0,0,822,823,5,97,0,0,823,824,5,100,0,0,824,825, + 5,97,0,0,825,826,5,116,0,0,826,827,5,97,0,0,827,183,1,0,0,0,828, + 832,8,10,0,0,829,830,5,47,0,0,830,832,8,11,0,0,831,828,1,0,0,0,831, + 829,1,0,0,0,832,185,1,0,0,0,833,835,3,184,87,0,834,833,1,0,0,0,835, + 836,1,0,0,0,836,834,1,0,0,0,836,837,1,0,0,0,837,187,1,0,0,0,838, + 839,3,164,77,0,839,840,1,0,0,0,840,841,6,89,16,0,841,189,1,0,0,0, + 842,843,3,48,19,0,843,844,1,0,0,0,844,845,6,90,8,0,845,191,1,0,0, + 0,846,847,3,50,20,0,847,848,1,0,0,0,848,849,6,91,8,0,849,193,1,0, + 0,0,850,851,3,52,21,0,851,852,1,0,0,0,852,853,6,92,8,0,853,195,1, + 0,0,0,854,855,3,64,27,0,855,856,1,0,0,0,856,857,6,93,11,0,857,858, + 6,93,12,0,858,197,1,0,0,0,859,860,3,104,47,0,860,861,1,0,0,0,861, + 862,6,94,17,0,862,199,1,0,0,0,863,864,3,100,45,0,864,865,1,0,0,0, + 865,866,6,95,14,0,866,201,1,0,0,0,867,872,3,68,29,0,868,872,3,66, + 28,0,869,872,3,82,36,0,870,872,3,152,71,0,871,867,1,0,0,0,871,868, + 1,0,0,0,871,869,1,0,0,0,871,870,1,0,0,0,872,203,1,0,0,0,873,876, + 3,68,29,0,874,876,3,152,71,0,875,873,1,0,0,0,875,874,1,0,0,0,876, + 880,1,0,0,0,877,879,3,202,96,0,878,877,1,0,0,0,879,882,1,0,0,0,880, + 878,1,0,0,0,880,881,1,0,0,0,881,893,1,0,0,0,882,880,1,0,0,0,883, + 886,3,82,36,0,884,886,3,76,33,0,885,883,1,0,0,0,885,884,1,0,0,0, + 886,888,1,0,0,0,887,889,3,202,96,0,888,887,1,0,0,0,889,890,1,0,0, + 0,890,888,1,0,0,0,890,891,1,0,0,0,891,893,1,0,0,0,892,875,1,0,0, + 0,892,885,1,0,0,0,893,205,1,0,0,0,894,895,3,164,77,0,895,896,1,0, + 0,0,896,897,6,98,16,0,897,207,1,0,0,0,898,899,3,48,19,0,899,900, + 1,0,0,0,900,901,6,99,8,0,901,209,1,0,0,0,902,903,3,50,20,0,903,904, + 1,0,0,0,904,905,6,100,8,0,905,211,1,0,0,0,906,907,3,52,21,0,907, + 908,1,0,0,0,908,909,6,101,8,0,909,213,1,0,0,0,910,911,3,64,27,0, + 911,912,1,0,0,0,912,913,6,102,11,0,913,914,6,102,12,0,914,215,1, + 0,0,0,915,916,3,98,44,0,916,917,1,0,0,0,917,918,6,103,15,0,918,217, + 1,0,0,0,919,920,3,100,45,0,920,921,1,0,0,0,921,922,6,104,14,0,922, + 219,1,0,0,0,923,924,3,104,47,0,924,925,1,0,0,0,925,926,6,105,17, + 0,926,221,1,0,0,0,927,928,5,97,0,0,928,929,5,115,0,0,929,223,1,0, + 0,0,930,931,3,164,77,0,931,932,1,0,0,0,932,933,6,107,16,0,933,225, + 1,0,0,0,934,935,3,204,97,0,935,936,1,0,0,0,936,937,6,108,18,0,937, + 227,1,0,0,0,938,939,3,48,19,0,939,940,1,0,0,0,940,941,6,109,8,0, + 941,229,1,0,0,0,942,943,3,50,20,0,943,944,1,0,0,0,944,945,6,110, + 8,0,945,231,1,0,0,0,946,947,3,52,21,0,947,948,1,0,0,0,948,949,6, + 111,8,0,949,233,1,0,0,0,950,951,3,64,27,0,951,952,1,0,0,0,952,953, + 6,112,11,0,953,954,6,112,12,0,954,235,1,0,0,0,955,956,5,111,0,0, + 956,957,5,110,0,0,957,958,1,0,0,0,958,959,6,113,19,0,959,237,1,0, + 0,0,960,961,5,119,0,0,961,962,5,105,0,0,962,963,5,116,0,0,963,964, + 5,104,0,0,964,965,1,0,0,0,965,966,6,114,19,0,966,239,1,0,0,0,967, + 968,3,186,88,0,968,969,1,0,0,0,969,970,6,115,20,0,970,241,1,0,0, + 0,971,972,3,164,77,0,972,973,1,0,0,0,973,974,6,116,16,0,974,243, + 1,0,0,0,975,976,3,48,19,0,976,977,1,0,0,0,977,978,6,117,8,0,978, + 245,1,0,0,0,979,980,3,50,20,0,980,981,1,0,0,0,981,982,6,118,8,0, + 982,247,1,0,0,0,983,984,3,52,21,0,984,985,1,0,0,0,985,986,6,119, + 8,0,986,249,1,0,0,0,987,988,3,64,27,0,988,989,1,0,0,0,989,990,6, + 120,11,0,990,991,6,120,12,0,991,992,6,120,12,0,992,251,1,0,0,0,993, + 994,3,98,44,0,994,995,1,0,0,0,995,996,6,121,15,0,996,253,1,0,0,0, + 997,998,3,100,45,0,998,999,1,0,0,0,999,1000,6,122,14,0,1000,255, + 1,0,0,0,1001,1002,3,104,47,0,1002,1003,1,0,0,0,1003,1004,6,123,17, + 0,1004,257,1,0,0,0,1005,1006,3,238,114,0,1006,1007,1,0,0,0,1007, + 1008,6,124,21,0,1008,259,1,0,0,0,1009,1010,3,204,97,0,1010,1011, + 1,0,0,0,1011,1012,6,125,18,0,1012,261,1,0,0,0,1013,1014,3,164,77, + 0,1014,1015,1,0,0,0,1015,1016,6,126,16,0,1016,263,1,0,0,0,1017,1018, + 3,48,19,0,1018,1019,1,0,0,0,1019,1020,6,127,8,0,1020,265,1,0,0,0, + 1021,1022,3,50,20,0,1022,1023,1,0,0,0,1023,1024,6,128,8,0,1024,267, + 1,0,0,0,1025,1026,3,52,21,0,1026,1027,1,0,0,0,1027,1028,6,129,8, + 0,1028,269,1,0,0,0,1029,1030,3,64,27,0,1030,1031,1,0,0,0,1031,1032, + 6,130,11,0,1032,1033,6,130,12,0,1033,271,1,0,0,0,1034,1035,3,104, + 47,0,1035,1036,1,0,0,0,1036,1037,6,131,17,0,1037,273,1,0,0,0,1038, + 1039,3,164,77,0,1039,1040,1,0,0,0,1040,1041,6,132,16,0,1041,275, + 1,0,0,0,1042,1043,3,162,76,0,1043,1044,1,0,0,0,1044,1045,6,133,22, + 0,1045,277,1,0,0,0,1046,1047,3,48,19,0,1047,1048,1,0,0,0,1048,1049, + 6,134,8,0,1049,279,1,0,0,0,1050,1051,3,50,20,0,1051,1052,1,0,0,0, + 1052,1053,6,135,8,0,1053,281,1,0,0,0,1054,1055,3,52,21,0,1055,1056, + 1,0,0,0,1056,1057,6,136,8,0,1057,283,1,0,0,0,1058,1059,3,64,27,0, + 1059,1060,1,0,0,0,1060,1061,6,137,11,0,1061,1062,6,137,12,0,1062, + 285,1,0,0,0,1063,1064,5,105,0,0,1064,1065,5,110,0,0,1065,1066,5, + 102,0,0,1066,1067,5,111,0,0,1067,287,1,0,0,0,1068,1069,5,102,0,0, + 1069,1070,5,117,0,0,1070,1071,5,110,0,0,1071,1072,5,99,0,0,1072, + 1073,5,116,0,0,1073,1074,5,105,0,0,1074,1075,5,111,0,0,1075,1076, + 5,110,0,0,1076,1077,5,115,0,0,1077,289,1,0,0,0,1078,1079,3,48,19, + 0,1079,1080,1,0,0,0,1080,1081,6,140,8,0,1081,291,1,0,0,0,1082,1083, + 3,50,20,0,1083,1084,1,0,0,0,1084,1085,6,141,8,0,1085,293,1,0,0,0, + 1086,1087,3,52,21,0,1087,1088,1,0,0,0,1088,1089,6,142,8,0,1089,295, + 1,0,0,0,49,0,1,2,3,4,5,6,7,8,9,452,462,466,469,478,480,491,532,537, + 546,553,558,560,571,579,582,584,589,594,600,607,612,618,621,629, + 633,760,765,770,772,778,831,836,871,875,880,885,890,892,23,5,2,0, + 5,4,0,5,6,0,5,1,0,5,3,0,5,8,0,5,5,0,5,9,0,0,1,0,7,63,0,5,0,0,7,26, + 0,4,0,0,7,64,0,7,34,0,7,33,0,7,66,0,7,36,0,7,75,0,5,7,0,7,71,0,7, + 84,0,7,65,0 + ]; + + private static __ATN: antlr.ATN; + public static get _ATN(): antlr.ATN { + if (!EsqlBaseLexer.__ATN) { + EsqlBaseLexer.__ATN = new antlr.ATNDeserializer().deserialize(EsqlBaseLexer._serializedATN); + } + + return EsqlBaseLexer.__ATN; + } + + + private static readonly vocabulary = new antlr.Vocabulary(EsqlBaseLexer.literalNames, EsqlBaseLexer.symbolicNames, []); + + public override get vocabulary(): antlr.Vocabulary { + return EsqlBaseLexer.vocabulary; + } + + private static readonly decisionsToDFA = EsqlBaseLexer._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) ); +} \ No newline at end of file diff --git a/esql-lsp/server/src/grammar/generated/EsqlBaseParser.interp b/esql-lsp/server/src/grammar/generated/EsqlBaseParser.interp new file mode 100644 index 0000000..3acc73b --- /dev/null +++ b/esql-lsp/server/src/grammar/generated/EsqlBaseParser.interp @@ -0,0 +1,256 @@ +token literal names: +null +'dissect' +'drop' +'enrich' +'eval' +'explain' +'from' +'grok' +'inlinestats' +'keep' +'limit' +'mv_expand' +'project' +'rename' +'row' +'show' +'sort' +'stats' +'where' +null +null +null +null +null +null +null +'|' +null +null +null +'by' +'and' +'asc' +'=' +',' +'desc' +'.' +'false' +'first' +'last' +'(' +'in' +'is' +'like' +'not' +'null' +'nulls' +'or' +'?' +'rlike' +')' +'true' +'==' +'!=' +'<' +'<=' +'>' +'>=' +'+' +'-' +'*' +'/' +'%' +null +']' +null +null +null +null +null +'metadata' +null +null +null +null +null +null +null +null +'as' +null +null +null +'on' +'with' +null +null +null +null +null +null +null +null +null +'info' +'functions' +null +null +null + +token symbolic names: +null +DISSECT +DROP +ENRICH +EVAL +EXPLAIN +FROM +GROK +INLINESTATS +KEEP +LIMIT +MV_EXPAND +PROJECT +RENAME +ROW +SHOW +SORT +STATS +WHERE +UNKNOWN_CMD +LINE_COMMENT +MULTILINE_COMMENT +WS +EXPLAIN_WS +EXPLAIN_LINE_COMMENT +EXPLAIN_MULTILINE_COMMENT +PIPE +STRING +INTEGER_LITERAL +DECIMAL_LITERAL +BY +AND +ASC +ASSIGN +COMMA +DESC +DOT +FALSE +FIRST +LAST +LP +IN +IS +LIKE +NOT +NULL +NULLS +OR +PARAM +RLIKE +RP +TRUE +EQ +NEQ +LT +LTE +GT +GTE +PLUS +MINUS +ASTERISK +SLASH +PERCENT +OPENING_BRACKET +CLOSING_BRACKET +UNQUOTED_IDENTIFIER +QUOTED_IDENTIFIER +EXPR_LINE_COMMENT +EXPR_MULTILINE_COMMENT +EXPR_WS +METADATA +FROM_UNQUOTED_IDENTIFIER +FROM_LINE_COMMENT +FROM_MULTILINE_COMMENT +FROM_WS +PROJECT_UNQUOTED_IDENTIFIER +PROJECT_LINE_COMMENT +PROJECT_MULTILINE_COMMENT +PROJECT_WS +AS +RENAME_LINE_COMMENT +RENAME_MULTILINE_COMMENT +RENAME_WS +ON +WITH +ENRICH_LINE_COMMENT +ENRICH_MULTILINE_COMMENT +ENRICH_WS +ENRICH_FIELD_LINE_COMMENT +ENRICH_FIELD_MULTILINE_COMMENT +ENRICH_FIELD_WS +MVEXPAND_LINE_COMMENT +MVEXPAND_MULTILINE_COMMENT +MVEXPAND_WS +INFO +FUNCTIONS +SHOW_LINE_COMMENT +SHOW_MULTILINE_COMMENT +SHOW_WS + +rule names: +singleStatement +query +sourceCommand +processingCommand +whereCommand +booleanExpression +regexBooleanExpression +valueExpression +operatorExpression +primaryExpression +functionExpression +rowCommand +fields +field +fromCommand +metadata +evalCommand +statsCommand +inlinestatsCommand +grouping +fromIdentifier +qualifiedName +qualifiedNamePattern +identifier +identifierPattern +constant +limitCommand +sortCommand +orderExpression +keepCommand +dropCommand +renameCommand +renameClause +dissectCommand +grokCommand +mvExpandCommand +commandOptions +commandOption +booleanValue +numericValue +decimalValue +integerValue +string +comparisonOperator +explainCommand +subqueryExpression +showCommand +enrichCommand +enrichWithClause + + +atn: +[4, 1, 98, 519, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 108, 8, 1, 10, 1, 12, 1, 111, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 117, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 132, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 144, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 151, 8, 5, 10, 5, 12, 5, 154, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 161, 8, 5, 1, 5, 1, 5, 3, 5, 165, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 173, 8, 5, 10, 5, 12, 5, 176, 9, 5, 1, 6, 1, 6, 3, 6, 180, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 187, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 192, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 199, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 205, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 213, 8, 8, 10, 8, 12, 8, 216, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 225, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 233, 8, 10, 10, 10, 12, 10, 236, 9, 10, 3, 10, 238, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 248, 8, 12, 10, 12, 12, 12, 251, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 258, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 264, 8, 14, 10, 14, 12, 14, 267, 9, 14, 1, 14, 3, 14, 270, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 277, 8, 15, 10, 15, 12, 15, 280, 9, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 3, 17, 289, 8, 17, 1, 17, 1, 17, 3, 17, 293, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 299, 8, 18, 1, 19, 1, 19, 1, 19, 5, 19, 304, 8, 19, 10, 19, 12, 19, 307, 9, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 5, 21, 314, 8, 21, 10, 21, 12, 21, 317, 9, 21, 1, 22, 1, 22, 1, 22, 5, 22, 322, 8, 22, 10, 22, 12, 22, 325, 9, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 344, 8, 25, 10, 25, 12, 25, 347, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 355, 8, 25, 10, 25, 12, 25, 358, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 366, 8, 25, 10, 25, 12, 25, 369, 9, 25, 1, 25, 1, 25, 3, 25, 373, 8, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 382, 8, 27, 10, 27, 12, 27, 385, 9, 27, 1, 28, 1, 28, 3, 28, 389, 8, 28, 1, 28, 1, 28, 3, 28, 393, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 399, 8, 29, 10, 29, 12, 29, 402, 9, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 408, 8, 29, 10, 29, 12, 29, 411, 9, 29, 3, 29, 413, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 419, 8, 30, 10, 30, 12, 30, 422, 9, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 428, 8, 31, 10, 31, 12, 31, 431, 9, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 441, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 5, 36, 453, 8, 36, 10, 36, 12, 36, 456, 9, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 466, 8, 39, 1, 40, 3, 40, 469, 8, 40, 1, 40, 1, 40, 1, 41, 3, 41, 474, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 493, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 499, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 505, 8, 47, 10, 47, 12, 47, 508, 9, 47, 3, 47, 510, 8, 47, 1, 48, 1, 48, 1, 48, 3, 48, 515, 8, 48, 1, 48, 1, 48, 1, 48, 0, 3, 2, 10, 16, 49, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 0, 9, 1, 0, 58, 59, 1, 0, 60, 62, 2, 0, 66, 66, 71, 71, 1, 0, 65, 66, 2, 0, 66, 66, 75, 75, 2, 0, 32, 32, 35, 35, 1, 0, 38, 39, 2, 0, 37, 37, 51, 51, 1, 0, 52, 57, 548, 0, 98, 1, 0, 0, 0, 2, 101, 1, 0, 0, 0, 4, 116, 1, 0, 0, 0, 6, 131, 1, 0, 0, 0, 8, 133, 1, 0, 0, 0, 10, 164, 1, 0, 0, 0, 12, 191, 1, 0, 0, 0, 14, 198, 1, 0, 0, 0, 16, 204, 1, 0, 0, 0, 18, 224, 1, 0, 0, 0, 20, 226, 1, 0, 0, 0, 22, 241, 1, 0, 0, 0, 24, 244, 1, 0, 0, 0, 26, 257, 1, 0, 0, 0, 28, 259, 1, 0, 0, 0, 30, 271, 1, 0, 0, 0, 32, 283, 1, 0, 0, 0, 34, 286, 1, 0, 0, 0, 36, 294, 1, 0, 0, 0, 38, 300, 1, 0, 0, 0, 40, 308, 1, 0, 0, 0, 42, 310, 1, 0, 0, 0, 44, 318, 1, 0, 0, 0, 46, 326, 1, 0, 0, 0, 48, 328, 1, 0, 0, 0, 50, 372, 1, 0, 0, 0, 52, 374, 1, 0, 0, 0, 54, 377, 1, 0, 0, 0, 56, 386, 1, 0, 0, 0, 58, 412, 1, 0, 0, 0, 60, 414, 1, 0, 0, 0, 62, 423, 1, 0, 0, 0, 64, 432, 1, 0, 0, 0, 66, 436, 1, 0, 0, 0, 68, 442, 1, 0, 0, 0, 70, 446, 1, 0, 0, 0, 72, 449, 1, 0, 0, 0, 74, 457, 1, 0, 0, 0, 76, 461, 1, 0, 0, 0, 78, 465, 1, 0, 0, 0, 80, 468, 1, 0, 0, 0, 82, 473, 1, 0, 0, 0, 84, 477, 1, 0, 0, 0, 86, 479, 1, 0, 0, 0, 88, 481, 1, 0, 0, 0, 90, 484, 1, 0, 0, 0, 92, 492, 1, 0, 0, 0, 94, 494, 1, 0, 0, 0, 96, 514, 1, 0, 0, 0, 98, 99, 3, 2, 1, 0, 99, 100, 5, 0, 0, 1, 100, 1, 1, 0, 0, 0, 101, 102, 6, 1, -1, 0, 102, 103, 3, 4, 2, 0, 103, 109, 1, 0, 0, 0, 104, 105, 10, 1, 0, 0, 105, 106, 5, 26, 0, 0, 106, 108, 3, 6, 3, 0, 107, 104, 1, 0, 0, 0, 108, 111, 1, 0, 0, 0, 109, 107, 1, 0, 0, 0, 109, 110, 1, 0, 0, 0, 110, 3, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 112, 117, 3, 88, 44, 0, 113, 117, 3, 28, 14, 0, 114, 117, 3, 22, 11, 0, 115, 117, 3, 92, 46, 0, 116, 112, 1, 0, 0, 0, 116, 113, 1, 0, 0, 0, 116, 114, 1, 0, 0, 0, 116, 115, 1, 0, 0, 0, 117, 5, 1, 0, 0, 0, 118, 132, 3, 32, 16, 0, 119, 132, 3, 36, 18, 0, 120, 132, 3, 52, 26, 0, 121, 132, 3, 58, 29, 0, 122, 132, 3, 54, 27, 0, 123, 132, 3, 34, 17, 0, 124, 132, 3, 8, 4, 0, 125, 132, 3, 60, 30, 0, 126, 132, 3, 62, 31, 0, 127, 132, 3, 66, 33, 0, 128, 132, 3, 68, 34, 0, 129, 132, 3, 94, 47, 0, 130, 132, 3, 70, 35, 0, 131, 118, 1, 0, 0, 0, 131, 119, 1, 0, 0, 0, 131, 120, 1, 0, 0, 0, 131, 121, 1, 0, 0, 0, 131, 122, 1, 0, 0, 0, 131, 123, 1, 0, 0, 0, 131, 124, 1, 0, 0, 0, 131, 125, 1, 0, 0, 0, 131, 126, 1, 0, 0, 0, 131, 127, 1, 0, 0, 0, 131, 128, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 131, 130, 1, 0, 0, 0, 132, 7, 1, 0, 0, 0, 133, 134, 5, 18, 0, 0, 134, 135, 3, 10, 5, 0, 135, 9, 1, 0, 0, 0, 136, 137, 6, 5, -1, 0, 137, 138, 5, 44, 0, 0, 138, 165, 3, 10, 5, 7, 139, 165, 3, 14, 7, 0, 140, 165, 3, 12, 6, 0, 141, 143, 3, 14, 7, 0, 142, 144, 5, 44, 0, 0, 143, 142, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 5, 41, 0, 0, 146, 147, 5, 40, 0, 0, 147, 152, 3, 14, 7, 0, 148, 149, 5, 34, 0, 0, 149, 151, 3, 14, 7, 0, 150, 148, 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 155, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 156, 5, 50, 0, 0, 156, 165, 1, 0, 0, 0, 157, 158, 3, 14, 7, 0, 158, 160, 5, 42, 0, 0, 159, 161, 5, 44, 0, 0, 160, 159, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 163, 5, 45, 0, 0, 163, 165, 1, 0, 0, 0, 164, 136, 1, 0, 0, 0, 164, 139, 1, 0, 0, 0, 164, 140, 1, 0, 0, 0, 164, 141, 1, 0, 0, 0, 164, 157, 1, 0, 0, 0, 165, 174, 1, 0, 0, 0, 166, 167, 10, 4, 0, 0, 167, 168, 5, 31, 0, 0, 168, 173, 3, 10, 5, 5, 169, 170, 10, 3, 0, 0, 170, 171, 5, 47, 0, 0, 171, 173, 3, 10, 5, 4, 172, 166, 1, 0, 0, 0, 172, 169, 1, 0, 0, 0, 173, 176, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 11, 1, 0, 0, 0, 176, 174, 1, 0, 0, 0, 177, 179, 3, 14, 7, 0, 178, 180, 5, 44, 0, 0, 179, 178, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 182, 5, 43, 0, 0, 182, 183, 3, 84, 42, 0, 183, 192, 1, 0, 0, 0, 184, 186, 3, 14, 7, 0, 185, 187, 5, 44, 0, 0, 186, 185, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 189, 5, 49, 0, 0, 189, 190, 3, 84, 42, 0, 190, 192, 1, 0, 0, 0, 191, 177, 1, 0, 0, 0, 191, 184, 1, 0, 0, 0, 192, 13, 1, 0, 0, 0, 193, 199, 3, 16, 8, 0, 194, 195, 3, 16, 8, 0, 195, 196, 3, 86, 43, 0, 196, 197, 3, 16, 8, 0, 197, 199, 1, 0, 0, 0, 198, 193, 1, 0, 0, 0, 198, 194, 1, 0, 0, 0, 199, 15, 1, 0, 0, 0, 200, 201, 6, 8, -1, 0, 201, 205, 3, 18, 9, 0, 202, 203, 7, 0, 0, 0, 203, 205, 3, 16, 8, 3, 204, 200, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 205, 214, 1, 0, 0, 0, 206, 207, 10, 2, 0, 0, 207, 208, 7, 1, 0, 0, 208, 213, 3, 16, 8, 3, 209, 210, 10, 1, 0, 0, 210, 211, 7, 0, 0, 0, 211, 213, 3, 16, 8, 2, 212, 206, 1, 0, 0, 0, 212, 209, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 17, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 217, 225, 3, 50, 25, 0, 218, 225, 3, 42, 21, 0, 219, 225, 3, 20, 10, 0, 220, 221, 5, 40, 0, 0, 221, 222, 3, 10, 5, 0, 222, 223, 5, 50, 0, 0, 223, 225, 1, 0, 0, 0, 224, 217, 1, 0, 0, 0, 224, 218, 1, 0, 0, 0, 224, 219, 1, 0, 0, 0, 224, 220, 1, 0, 0, 0, 225, 19, 1, 0, 0, 0, 226, 227, 3, 46, 23, 0, 227, 237, 5, 40, 0, 0, 228, 238, 5, 60, 0, 0, 229, 234, 3, 10, 5, 0, 230, 231, 5, 34, 0, 0, 231, 233, 3, 10, 5, 0, 232, 230, 1, 0, 0, 0, 233, 236, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 238, 1, 0, 0, 0, 236, 234, 1, 0, 0, 0, 237, 228, 1, 0, 0, 0, 237, 229, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 240, 5, 50, 0, 0, 240, 21, 1, 0, 0, 0, 241, 242, 5, 14, 0, 0, 242, 243, 3, 24, 12, 0, 243, 23, 1, 0, 0, 0, 244, 249, 3, 26, 13, 0, 245, 246, 5, 34, 0, 0, 246, 248, 3, 26, 13, 0, 247, 245, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 25, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 252, 258, 3, 10, 5, 0, 253, 254, 3, 42, 21, 0, 254, 255, 5, 33, 0, 0, 255, 256, 3, 10, 5, 0, 256, 258, 1, 0, 0, 0, 257, 252, 1, 0, 0, 0, 257, 253, 1, 0, 0, 0, 258, 27, 1, 0, 0, 0, 259, 260, 5, 6, 0, 0, 260, 265, 3, 40, 20, 0, 261, 262, 5, 34, 0, 0, 262, 264, 3, 40, 20, 0, 263, 261, 1, 0, 0, 0, 264, 267, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, 265, 266, 1, 0, 0, 0, 266, 269, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 268, 270, 3, 30, 15, 0, 269, 268, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 29, 1, 0, 0, 0, 271, 272, 5, 63, 0, 0, 272, 273, 5, 70, 0, 0, 273, 278, 3, 40, 20, 0, 274, 275, 5, 34, 0, 0, 275, 277, 3, 40, 20, 0, 276, 274, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 282, 5, 64, 0, 0, 282, 31, 1, 0, 0, 0, 283, 284, 5, 4, 0, 0, 284, 285, 3, 24, 12, 0, 285, 33, 1, 0, 0, 0, 286, 288, 5, 17, 0, 0, 287, 289, 3, 24, 12, 0, 288, 287, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 292, 1, 0, 0, 0, 290, 291, 5, 30, 0, 0, 291, 293, 3, 38, 19, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 35, 1, 0, 0, 0, 294, 295, 5, 8, 0, 0, 295, 298, 3, 24, 12, 0, 296, 297, 5, 30, 0, 0, 297, 299, 3, 38, 19, 0, 298, 296, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 37, 1, 0, 0, 0, 300, 305, 3, 42, 21, 0, 301, 302, 5, 34, 0, 0, 302, 304, 3, 42, 21, 0, 303, 301, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 39, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 309, 7, 2, 0, 0, 309, 41, 1, 0, 0, 0, 310, 315, 3, 46, 23, 0, 311, 312, 5, 36, 0, 0, 312, 314, 3, 46, 23, 0, 313, 311, 1, 0, 0, 0, 314, 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 43, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 323, 3, 48, 24, 0, 319, 320, 5, 36, 0, 0, 320, 322, 3, 48, 24, 0, 321, 319, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 45, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 326, 327, 7, 3, 0, 0, 327, 47, 1, 0, 0, 0, 328, 329, 7, 4, 0, 0, 329, 49, 1, 0, 0, 0, 330, 373, 5, 45, 0, 0, 331, 332, 3, 82, 41, 0, 332, 333, 5, 65, 0, 0, 333, 373, 1, 0, 0, 0, 334, 373, 3, 80, 40, 0, 335, 373, 3, 82, 41, 0, 336, 373, 3, 76, 38, 0, 337, 373, 5, 48, 0, 0, 338, 373, 3, 84, 42, 0, 339, 340, 5, 63, 0, 0, 340, 345, 3, 78, 39, 0, 341, 342, 5, 34, 0, 0, 342, 344, 3, 78, 39, 0, 343, 341, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 349, 5, 64, 0, 0, 349, 373, 1, 0, 0, 0, 350, 351, 5, 63, 0, 0, 351, 356, 3, 76, 38, 0, 352, 353, 5, 34, 0, 0, 353, 355, 3, 76, 38, 0, 354, 352, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 359, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 359, 360, 5, 64, 0, 0, 360, 373, 1, 0, 0, 0, 361, 362, 5, 63, 0, 0, 362, 367, 3, 84, 42, 0, 363, 364, 5, 34, 0, 0, 364, 366, 3, 84, 42, 0, 365, 363, 1, 0, 0, 0, 366, 369, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 370, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 370, 371, 5, 64, 0, 0, 371, 373, 1, 0, 0, 0, 372, 330, 1, 0, 0, 0, 372, 331, 1, 0, 0, 0, 372, 334, 1, 0, 0, 0, 372, 335, 1, 0, 0, 0, 372, 336, 1, 0, 0, 0, 372, 337, 1, 0, 0, 0, 372, 338, 1, 0, 0, 0, 372, 339, 1, 0, 0, 0, 372, 350, 1, 0, 0, 0, 372, 361, 1, 0, 0, 0, 373, 51, 1, 0, 0, 0, 374, 375, 5, 10, 0, 0, 375, 376, 5, 28, 0, 0, 376, 53, 1, 0, 0, 0, 377, 378, 5, 16, 0, 0, 378, 383, 3, 56, 28, 0, 379, 380, 5, 34, 0, 0, 380, 382, 3, 56, 28, 0, 381, 379, 1, 0, 0, 0, 382, 385, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 55, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 386, 388, 3, 10, 5, 0, 387, 389, 7, 5, 0, 0, 388, 387, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 391, 5, 46, 0, 0, 391, 393, 7, 6, 0, 0, 392, 390, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 57, 1, 0, 0, 0, 394, 395, 5, 9, 0, 0, 395, 400, 3, 44, 22, 0, 396, 397, 5, 34, 0, 0, 397, 399, 3, 44, 22, 0, 398, 396, 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 413, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 403, 404, 5, 12, 0, 0, 404, 409, 3, 44, 22, 0, 405, 406, 5, 34, 0, 0, 406, 408, 3, 44, 22, 0, 407, 405, 1, 0, 0, 0, 408, 411, 1, 0, 0, 0, 409, 407, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 413, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 412, 394, 1, 0, 0, 0, 412, 403, 1, 0, 0, 0, 413, 59, 1, 0, 0, 0, 414, 415, 5, 2, 0, 0, 415, 420, 3, 44, 22, 0, 416, 417, 5, 34, 0, 0, 417, 419, 3, 44, 22, 0, 418, 416, 1, 0, 0, 0, 419, 422, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 61, 1, 0, 0, 0, 422, 420, 1, 0, 0, 0, 423, 424, 5, 13, 0, 0, 424, 429, 3, 64, 32, 0, 425, 426, 5, 34, 0, 0, 426, 428, 3, 64, 32, 0, 427, 425, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 63, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 432, 433, 3, 44, 22, 0, 433, 434, 5, 79, 0, 0, 434, 435, 3, 44, 22, 0, 435, 65, 1, 0, 0, 0, 436, 437, 5, 1, 0, 0, 437, 438, 3, 18, 9, 0, 438, 440, 3, 84, 42, 0, 439, 441, 3, 72, 36, 0, 440, 439, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 67, 1, 0, 0, 0, 442, 443, 5, 7, 0, 0, 443, 444, 3, 18, 9, 0, 444, 445, 3, 84, 42, 0, 445, 69, 1, 0, 0, 0, 446, 447, 5, 11, 0, 0, 447, 448, 3, 42, 21, 0, 448, 71, 1, 0, 0, 0, 449, 454, 3, 74, 37, 0, 450, 451, 5, 34, 0, 0, 451, 453, 3, 74, 37, 0, 452, 450, 1, 0, 0, 0, 453, 456, 1, 0, 0, 0, 454, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 73, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 458, 3, 46, 23, 0, 458, 459, 5, 33, 0, 0, 459, 460, 3, 50, 25, 0, 460, 75, 1, 0, 0, 0, 461, 462, 7, 7, 0, 0, 462, 77, 1, 0, 0, 0, 463, 466, 3, 80, 40, 0, 464, 466, 3, 82, 41, 0, 465, 463, 1, 0, 0, 0, 465, 464, 1, 0, 0, 0, 466, 79, 1, 0, 0, 0, 467, 469, 7, 0, 0, 0, 468, 467, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 471, 5, 29, 0, 0, 471, 81, 1, 0, 0, 0, 472, 474, 7, 0, 0, 0, 473, 472, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 5, 28, 0, 0, 476, 83, 1, 0, 0, 0, 477, 478, 5, 27, 0, 0, 478, 85, 1, 0, 0, 0, 479, 480, 7, 8, 0, 0, 480, 87, 1, 0, 0, 0, 481, 482, 5, 5, 0, 0, 482, 483, 3, 90, 45, 0, 483, 89, 1, 0, 0, 0, 484, 485, 5, 63, 0, 0, 485, 486, 3, 2, 1, 0, 486, 487, 5, 64, 0, 0, 487, 91, 1, 0, 0, 0, 488, 489, 5, 15, 0, 0, 489, 493, 5, 94, 0, 0, 490, 491, 5, 15, 0, 0, 491, 493, 5, 95, 0, 0, 492, 488, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 493, 93, 1, 0, 0, 0, 494, 495, 5, 3, 0, 0, 495, 498, 3, 40, 20, 0, 496, 497, 5, 83, 0, 0, 497, 499, 3, 44, 22, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 509, 1, 0, 0, 0, 500, 501, 5, 84, 0, 0, 501, 506, 3, 96, 48, 0, 502, 503, 5, 34, 0, 0, 503, 505, 3, 96, 48, 0, 504, 502, 1, 0, 0, 0, 505, 508, 1, 0, 0, 0, 506, 504, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 510, 1, 0, 0, 0, 508, 506, 1, 0, 0, 0, 509, 500, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 95, 1, 0, 0, 0, 511, 512, 3, 44, 22, 0, 512, 513, 5, 33, 0, 0, 513, 515, 1, 0, 0, 0, 514, 511, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, 3, 44, 22, 0, 517, 97, 1, 0, 0, 0, 52, 109, 116, 131, 143, 152, 160, 164, 172, 174, 179, 186, 191, 198, 204, 212, 214, 224, 234, 237, 249, 257, 265, 269, 278, 288, 292, 298, 305, 315, 323, 345, 356, 367, 372, 383, 388, 392, 400, 409, 412, 420, 429, 440, 454, 465, 468, 473, 492, 498, 506, 509, 514] \ No newline at end of file diff --git a/esql-lsp/server/src/grammar/generated/EsqlBaseParser.tokens b/esql-lsp/server/src/grammar/generated/EsqlBaseParser.tokens new file mode 100644 index 0000000..d94530c --- /dev/null +++ b/esql-lsp/server/src/grammar/generated/EsqlBaseParser.tokens @@ -0,0 +1,157 @@ +DISSECT=1 +DROP=2 +ENRICH=3 +EVAL=4 +EXPLAIN=5 +FROM=6 +GROK=7 +INLINESTATS=8 +KEEP=9 +LIMIT=10 +MV_EXPAND=11 +PROJECT=12 +RENAME=13 +ROW=14 +SHOW=15 +SORT=16 +STATS=17 +WHERE=18 +UNKNOWN_CMD=19 +LINE_COMMENT=20 +MULTILINE_COMMENT=21 +WS=22 +EXPLAIN_WS=23 +EXPLAIN_LINE_COMMENT=24 +EXPLAIN_MULTILINE_COMMENT=25 +PIPE=26 +STRING=27 +INTEGER_LITERAL=28 +DECIMAL_LITERAL=29 +BY=30 +AND=31 +ASC=32 +ASSIGN=33 +COMMA=34 +DESC=35 +DOT=36 +FALSE=37 +FIRST=38 +LAST=39 +LP=40 +IN=41 +IS=42 +LIKE=43 +NOT=44 +NULL=45 +NULLS=46 +OR=47 +PARAM=48 +RLIKE=49 +RP=50 +TRUE=51 +EQ=52 +NEQ=53 +LT=54 +LTE=55 +GT=56 +GTE=57 +PLUS=58 +MINUS=59 +ASTERISK=60 +SLASH=61 +PERCENT=62 +OPENING_BRACKET=63 +CLOSING_BRACKET=64 +UNQUOTED_IDENTIFIER=65 +QUOTED_IDENTIFIER=66 +EXPR_LINE_COMMENT=67 +EXPR_MULTILINE_COMMENT=68 +EXPR_WS=69 +METADATA=70 +FROM_UNQUOTED_IDENTIFIER=71 +FROM_LINE_COMMENT=72 +FROM_MULTILINE_COMMENT=73 +FROM_WS=74 +PROJECT_UNQUOTED_IDENTIFIER=75 +PROJECT_LINE_COMMENT=76 +PROJECT_MULTILINE_COMMENT=77 +PROJECT_WS=78 +AS=79 +RENAME_LINE_COMMENT=80 +RENAME_MULTILINE_COMMENT=81 +RENAME_WS=82 +ON=83 +WITH=84 +ENRICH_LINE_COMMENT=85 +ENRICH_MULTILINE_COMMENT=86 +ENRICH_WS=87 +ENRICH_FIELD_LINE_COMMENT=88 +ENRICH_FIELD_MULTILINE_COMMENT=89 +ENRICH_FIELD_WS=90 +MVEXPAND_LINE_COMMENT=91 +MVEXPAND_MULTILINE_COMMENT=92 +MVEXPAND_WS=93 +INFO=94 +FUNCTIONS=95 +SHOW_LINE_COMMENT=96 +SHOW_MULTILINE_COMMENT=97 +SHOW_WS=98 +'dissect'=1 +'drop'=2 +'enrich'=3 +'eval'=4 +'explain'=5 +'from'=6 +'grok'=7 +'inlinestats'=8 +'keep'=9 +'limit'=10 +'mv_expand'=11 +'project'=12 +'rename'=13 +'row'=14 +'show'=15 +'sort'=16 +'stats'=17 +'where'=18 +'|'=26 +'by'=30 +'and'=31 +'asc'=32 +'='=33 +','=34 +'desc'=35 +'.'=36 +'false'=37 +'first'=38 +'last'=39 +'('=40 +'in'=41 +'is'=42 +'like'=43 +'not'=44 +'null'=45 +'nulls'=46 +'or'=47 +'?'=48 +'rlike'=49 +')'=50 +'true'=51 +'=='=52 +'!='=53 +'<'=54 +'<='=55 +'>'=56 +'>='=57 +'+'=58 +'-'=59 +'*'=60 +'/'=61 +'%'=62 +']'=64 +'metadata'=70 +'as'=79 +'on'=83 +'with'=84 +'info'=94 +'functions'=95 diff --git a/esql-lsp/server/src/grammar/generated/EsqlBaseParser.ts b/esql-lsp/server/src/grammar/generated/EsqlBaseParser.ts new file mode 100644 index 0000000..5d88646 --- /dev/null +++ b/esql-lsp/server/src/grammar/generated/EsqlBaseParser.ts @@ -0,0 +1,5706 @@ +// Generated from ./src/grammar/EsqlBaseParser.g4 by ANTLR 4.13.1 + +import * as antlr from "antlr4ng"; +import { Token } from "antlr4ng"; + +import { EsqlBaseParserListener } from "./EsqlBaseParserListener.js"; +import { EsqlBaseParserVisitor } from "./EsqlBaseParserVisitor.js"; + +// for running tests with parameters, TODO: discuss strategy for typed parameters in CI +// eslint-disable-next-line no-unused-vars +type int = number; + + +export class EsqlBaseParser extends antlr.Parser { + public static readonly DISSECT = 1; + public static readonly DROP = 2; + public static readonly ENRICH = 3; + public static readonly EVAL = 4; + public static readonly EXPLAIN = 5; + public static readonly FROM = 6; + public static readonly GROK = 7; + public static readonly INLINESTATS = 8; + public static readonly KEEP = 9; + public static readonly LIMIT = 10; + public static readonly MV_EXPAND = 11; + public static readonly PROJECT = 12; + public static readonly RENAME = 13; + public static readonly ROW = 14; + public static readonly SHOW = 15; + public static readonly SORT = 16; + public static readonly STATS = 17; + public static readonly WHERE = 18; + public static readonly UNKNOWN_CMD = 19; + public static readonly LINE_COMMENT = 20; + public static readonly MULTILINE_COMMENT = 21; + public static readonly WS = 22; + public static readonly EXPLAIN_WS = 23; + public static readonly EXPLAIN_LINE_COMMENT = 24; + public static readonly EXPLAIN_MULTILINE_COMMENT = 25; + public static readonly PIPE = 26; + public static readonly STRING = 27; + public static readonly INTEGER_LITERAL = 28; + public static readonly DECIMAL_LITERAL = 29; + public static readonly BY = 30; + public static readonly AND = 31; + public static readonly ASC = 32; + public static readonly ASSIGN = 33; + public static readonly COMMA = 34; + public static readonly DESC = 35; + public static readonly DOT = 36; + public static readonly FALSE = 37; + public static readonly FIRST = 38; + public static readonly LAST = 39; + public static readonly LP = 40; + public static readonly IN = 41; + public static readonly IS = 42; + public static readonly LIKE = 43; + public static readonly NOT = 44; + public static readonly NULL = 45; + public static readonly NULLS = 46; + public static readonly OR = 47; + public static readonly PARAM = 48; + public static readonly RLIKE = 49; + public static readonly RP = 50; + public static readonly TRUE = 51; + public static readonly EQ = 52; + public static readonly NEQ = 53; + public static readonly LT = 54; + public static readonly LTE = 55; + public static readonly GT = 56; + public static readonly GTE = 57; + public static readonly PLUS = 58; + public static readonly MINUS = 59; + public static readonly ASTERISK = 60; + public static readonly SLASH = 61; + public static readonly PERCENT = 62; + public static readonly OPENING_BRACKET = 63; + public static readonly CLOSING_BRACKET = 64; + public static readonly UNQUOTED_IDENTIFIER = 65; + public static readonly QUOTED_IDENTIFIER = 66; + public static readonly EXPR_LINE_COMMENT = 67; + public static readonly EXPR_MULTILINE_COMMENT = 68; + public static readonly EXPR_WS = 69; + public static readonly METADATA = 70; + public static readonly FROM_UNQUOTED_IDENTIFIER = 71; + public static readonly FROM_LINE_COMMENT = 72; + public static readonly FROM_MULTILINE_COMMENT = 73; + public static readonly FROM_WS = 74; + public static readonly PROJECT_UNQUOTED_IDENTIFIER = 75; + public static readonly PROJECT_LINE_COMMENT = 76; + public static readonly PROJECT_MULTILINE_COMMENT = 77; + public static readonly PROJECT_WS = 78; + public static readonly AS = 79; + public static readonly RENAME_LINE_COMMENT = 80; + public static readonly RENAME_MULTILINE_COMMENT = 81; + public static readonly RENAME_WS = 82; + public static readonly ON = 83; + public static readonly WITH = 84; + public static readonly ENRICH_LINE_COMMENT = 85; + public static readonly ENRICH_MULTILINE_COMMENT = 86; + public static readonly ENRICH_WS = 87; + public static readonly ENRICH_FIELD_LINE_COMMENT = 88; + public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 89; + public static readonly ENRICH_FIELD_WS = 90; + public static readonly MVEXPAND_LINE_COMMENT = 91; + public static readonly MVEXPAND_MULTILINE_COMMENT = 92; + public static readonly MVEXPAND_WS = 93; + public static readonly INFO = 94; + public static readonly FUNCTIONS = 95; + public static readonly SHOW_LINE_COMMENT = 96; + public static readonly SHOW_MULTILINE_COMMENT = 97; + public static readonly SHOW_WS = 98; + public static readonly RULE_singleStatement = 0; + public static readonly RULE_query = 1; + public static readonly RULE_sourceCommand = 2; + public static readonly RULE_processingCommand = 3; + public static readonly RULE_whereCommand = 4; + public static readonly RULE_booleanExpression = 5; + public static readonly RULE_regexBooleanExpression = 6; + public static readonly RULE_valueExpression = 7; + public static readonly RULE_operatorExpression = 8; + public static readonly RULE_primaryExpression = 9; + public static readonly RULE_functionExpression = 10; + public static readonly RULE_rowCommand = 11; + public static readonly RULE_fields = 12; + public static readonly RULE_field = 13; + public static readonly RULE_fromCommand = 14; + public static readonly RULE_metadata = 15; + public static readonly RULE_evalCommand = 16; + public static readonly RULE_statsCommand = 17; + public static readonly RULE_inlinestatsCommand = 18; + public static readonly RULE_grouping = 19; + public static readonly RULE_fromIdentifier = 20; + public static readonly RULE_qualifiedName = 21; + public static readonly RULE_qualifiedNamePattern = 22; + public static readonly RULE_identifier = 23; + public static readonly RULE_identifierPattern = 24; + public static readonly RULE_constant = 25; + public static readonly RULE_limitCommand = 26; + public static readonly RULE_sortCommand = 27; + public static readonly RULE_orderExpression = 28; + public static readonly RULE_keepCommand = 29; + public static readonly RULE_dropCommand = 30; + public static readonly RULE_renameCommand = 31; + public static readonly RULE_renameClause = 32; + public static readonly RULE_dissectCommand = 33; + public static readonly RULE_grokCommand = 34; + public static readonly RULE_mvExpandCommand = 35; + public static readonly RULE_commandOptions = 36; + public static readonly RULE_commandOption = 37; + public static readonly RULE_booleanValue = 38; + public static readonly RULE_numericValue = 39; + public static readonly RULE_decimalValue = 40; + public static readonly RULE_integerValue = 41; + public static readonly RULE_string = 42; + public static readonly RULE_comparisonOperator = 43; + public static readonly RULE_explainCommand = 44; + public static readonly RULE_subqueryExpression = 45; + public static readonly RULE_showCommand = 46; + public static readonly RULE_enrichCommand = 47; + public static readonly RULE_enrichWithClause = 48; + + public static readonly literalNames = [ + null, "'dissect'", "'drop'", "'enrich'", "'eval'", "'explain'", + "'from'", "'grok'", "'inlinestats'", "'keep'", "'limit'", "'mv_expand'", + "'project'", "'rename'", "'row'", "'show'", "'sort'", "'stats'", + "'where'", null, null, null, null, null, null, null, "'|'", null, + null, null, "'by'", "'and'", "'asc'", "'='", "','", "'desc'", "'.'", + "'false'", "'first'", "'last'", "'('", "'in'", "'is'", "'like'", + "'not'", "'null'", "'nulls'", "'or'", "'?'", "'rlike'", "')'", "'true'", + "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", + "'/'", "'%'", null, "']'", null, null, null, null, null, "'metadata'", + null, null, null, null, null, null, null, null, "'as'", null, null, + null, "'on'", "'with'", null, null, null, null, null, null, null, + null, null, "'info'", "'functions'" + ]; + + public static readonly symbolicNames = [ + null, "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", + "INLINESTATS", "KEEP", "LIMIT", "MV_EXPAND", "PROJECT", "RENAME", + "ROW", "SHOW", "SORT", "STATS", "WHERE", "UNKNOWN_CMD", "LINE_COMMENT", + "MULTILINE_COMMENT", "WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", + "EXPLAIN_MULTILINE_COMMENT", "PIPE", "STRING", "INTEGER_LITERAL", + "DECIMAL_LITERAL", "BY", "AND", "ASC", "ASSIGN", "COMMA", "DESC", + "DOT", "FALSE", "FIRST", "LAST", "LP", "IN", "IS", "LIKE", "NOT", + "NULL", "NULLS", "OR", "PARAM", "RLIKE", "RP", "TRUE", "EQ", "NEQ", + "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", + "PERCENT", "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", + "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", + "EXPR_WS", "METADATA", "FROM_UNQUOTED_IDENTIFIER", "FROM_LINE_COMMENT", + "FROM_MULTILINE_COMMENT", "FROM_WS", "PROJECT_UNQUOTED_IDENTIFIER", + "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", "PROJECT_WS", + "AS", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS", + "ON", "WITH", "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT", + "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT", + "ENRICH_FIELD_WS", "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT", + "MVEXPAND_WS", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", "SHOW_MULTILINE_COMMENT", + "SHOW_WS" + ]; + public static readonly ruleNames = [ + "singleStatement", "query", "sourceCommand", "processingCommand", + "whereCommand", "booleanExpression", "regexBooleanExpression", "valueExpression", + "operatorExpression", "primaryExpression", "functionExpression", + "rowCommand", "fields", "field", "fromCommand", "metadata", "evalCommand", + "statsCommand", "inlinestatsCommand", "grouping", "fromIdentifier", + "qualifiedName", "qualifiedNamePattern", "identifier", "identifierPattern", + "constant", "limitCommand", "sortCommand", "orderExpression", "keepCommand", + "dropCommand", "renameCommand", "renameClause", "dissectCommand", + "grokCommand", "mvExpandCommand", "commandOptions", "commandOption", + "booleanValue", "numericValue", "decimalValue", "integerValue", + "string", "comparisonOperator", "explainCommand", "subqueryExpression", + "showCommand", "enrichCommand", "enrichWithClause", + ]; + + public get grammarFileName(): string { return "EsqlBaseParser.g4"; } + public get literalNames(): (string | null)[] { return EsqlBaseParser.literalNames; } + public get symbolicNames(): (string | null)[] { return EsqlBaseParser.symbolicNames; } + public get ruleNames(): string[] { return EsqlBaseParser.ruleNames; } + public get serializedATN(): number[] { return EsqlBaseParser._serializedATN; } + + protected createFailedPredicateException(predicate?: string, message?: string): antlr.FailedPredicateException { + return new antlr.FailedPredicateException(this, predicate, message); + } + + public constructor(input: antlr.TokenStream) { + super(input); + this.interpreter = new antlr.ParserATNSimulator(this, EsqlBaseParser._ATN, EsqlBaseParser.decisionsToDFA, new antlr.PredictionContextCache()); + } + public singleStatement(): SingleStatementContext { + let localContext = new SingleStatementContext(this.context, this.state); + this.enterRule(localContext, 0, EsqlBaseParser.RULE_singleStatement); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 98; + this.query(0); + this.state = 99; + this.match(EsqlBaseParser.EOF); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + + public query(): QueryContext; + public query(_p: number): QueryContext; + public query(_p?: number): QueryContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new QueryContext(this.context, parentState); + let previousContext = localContext; + let _startState = 2; + this.enterRecursionRule(localContext, 2, EsqlBaseParser.RULE_query, _p); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + { + localContext = new SingleCommandQueryContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 102; + this.sourceCommand(); + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 109; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 0, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + { + localContext = new CompositeQueryContext(new QueryContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, EsqlBaseParser.RULE_query); + this.state = 104; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); + } + this.state = 105; + this.match(EsqlBaseParser.PIPE); + this.state = 106; + this.processingCommand(); + } + } + } + this.state = 111; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 0, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(parentContext); + } + return localContext; + } + public sourceCommand(): SourceCommandContext { + let localContext = new SourceCommandContext(this.context, this.state); + this.enterRule(localContext, 4, EsqlBaseParser.RULE_sourceCommand); + try { + this.state = 116; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case EsqlBaseParser.EXPLAIN: + this.enterOuterAlt(localContext, 1); + { + this.state = 112; + this.explainCommand(); + } + break; + case EsqlBaseParser.FROM: + this.enterOuterAlt(localContext, 2); + { + this.state = 113; + this.fromCommand(); + } + break; + case EsqlBaseParser.ROW: + this.enterOuterAlt(localContext, 3); + { + this.state = 114; + this.rowCommand(); + } + break; + case EsqlBaseParser.SHOW: + this.enterOuterAlt(localContext, 4); + { + this.state = 115; + this.showCommand(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public processingCommand(): ProcessingCommandContext { + let localContext = new ProcessingCommandContext(this.context, this.state); + this.enterRule(localContext, 6, EsqlBaseParser.RULE_processingCommand); + try { + this.state = 131; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case EsqlBaseParser.EVAL: + this.enterOuterAlt(localContext, 1); + { + this.state = 118; + this.evalCommand(); + } + break; + case EsqlBaseParser.INLINESTATS: + this.enterOuterAlt(localContext, 2); + { + this.state = 119; + this.inlinestatsCommand(); + } + break; + case EsqlBaseParser.LIMIT: + this.enterOuterAlt(localContext, 3); + { + this.state = 120; + this.limitCommand(); + } + break; + case EsqlBaseParser.KEEP: + case EsqlBaseParser.PROJECT: + this.enterOuterAlt(localContext, 4); + { + this.state = 121; + this.keepCommand(); + } + break; + case EsqlBaseParser.SORT: + this.enterOuterAlt(localContext, 5); + { + this.state = 122; + this.sortCommand(); + } + break; + case EsqlBaseParser.STATS: + this.enterOuterAlt(localContext, 6); + { + this.state = 123; + this.statsCommand(); + } + break; + case EsqlBaseParser.WHERE: + this.enterOuterAlt(localContext, 7); + { + this.state = 124; + this.whereCommand(); + } + break; + case EsqlBaseParser.DROP: + this.enterOuterAlt(localContext, 8); + { + this.state = 125; + this.dropCommand(); + } + break; + case EsqlBaseParser.RENAME: + this.enterOuterAlt(localContext, 9); + { + this.state = 126; + this.renameCommand(); + } + break; + case EsqlBaseParser.DISSECT: + this.enterOuterAlt(localContext, 10); + { + this.state = 127; + this.dissectCommand(); + } + break; + case EsqlBaseParser.GROK: + this.enterOuterAlt(localContext, 11); + { + this.state = 128; + this.grokCommand(); + } + break; + case EsqlBaseParser.ENRICH: + this.enterOuterAlt(localContext, 12); + { + this.state = 129; + this.enrichCommand(); + } + break; + case EsqlBaseParser.MV_EXPAND: + this.enterOuterAlt(localContext, 13); + { + this.state = 130; + this.mvExpandCommand(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public whereCommand(): WhereCommandContext { + let localContext = new WhereCommandContext(this.context, this.state); + this.enterRule(localContext, 8, EsqlBaseParser.RULE_whereCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 133; + this.match(EsqlBaseParser.WHERE); + this.state = 134; + this.booleanExpression(0); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + + public booleanExpression(): BooleanExpressionContext; + public booleanExpression(_p: number): BooleanExpressionContext; + public booleanExpression(_p?: number): BooleanExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new BooleanExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 10; + this.enterRecursionRule(localContext, 10, EsqlBaseParser.RULE_booleanExpression, _p); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 164; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 6, this.context) ) { + case 1: + { + localContext = new LogicalNotContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 137; + this.match(EsqlBaseParser.NOT); + this.state = 138; + this.booleanExpression(7); + } + break; + case 2: + { + localContext = new BooleanDefaultContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 139; + this.valueExpression(); + } + break; + case 3: + { + localContext = new RegexExpressionContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 140; + this.regexBooleanExpression(); + } + break; + case 4: + { + localContext = new LogicalInContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 141; + this.valueExpression(); + this.state = 143; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 44) { + { + this.state = 142; + this.match(EsqlBaseParser.NOT); + } + } + + this.state = 145; + this.match(EsqlBaseParser.IN); + this.state = 146; + this.match(EsqlBaseParser.LP); + this.state = 147; + this.valueExpression(); + this.state = 152; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 34) { + { + { + this.state = 148; + this.match(EsqlBaseParser.COMMA); + this.state = 149; + this.valueExpression(); + } + } + this.state = 154; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 155; + this.match(EsqlBaseParser.RP); + } + break; + case 5: + { + localContext = new IsNullContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 157; + this.valueExpression(); + this.state = 158; + this.match(EsqlBaseParser.IS); + this.state = 160; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 44) { + { + this.state = 159; + this.match(EsqlBaseParser.NOT); + } + } + + this.state = 162; + this.match(EsqlBaseParser.NULL); + } + break; + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 174; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 8, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + this.state = 172; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { + case 1: + { + localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); + (localContext as LogicalBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, EsqlBaseParser.RULE_booleanExpression); + this.state = 166; + if (!(this.precpred(this.context, 4))) { + throw this.createFailedPredicateException("this.precpred(this.context, 4)"); + } + this.state = 167; + (localContext as LogicalBinaryContext)._operator = this.match(EsqlBaseParser.AND); + this.state = 168; + (localContext as LogicalBinaryContext)._right = this.booleanExpression(5); + } + break; + case 2: + { + localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); + (localContext as LogicalBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, EsqlBaseParser.RULE_booleanExpression); + this.state = 169; + if (!(this.precpred(this.context, 3))) { + throw this.createFailedPredicateException("this.precpred(this.context, 3)"); + } + this.state = 170; + (localContext as LogicalBinaryContext)._operator = this.match(EsqlBaseParser.OR); + this.state = 171; + (localContext as LogicalBinaryContext)._right = this.booleanExpression(4); + } + break; + } + } + } + this.state = 176; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 8, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(parentContext); + } + return localContext; + } + public regexBooleanExpression(): RegexBooleanExpressionContext { + let localContext = new RegexBooleanExpressionContext(this.context, this.state); + this.enterRule(localContext, 12, EsqlBaseParser.RULE_regexBooleanExpression); + let _la: number; + try { + this.state = 191; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 11, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 177; + this.valueExpression(); + this.state = 179; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 44) { + { + this.state = 178; + this.match(EsqlBaseParser.NOT); + } + } + + this.state = 181; + localContext._kind = this.match(EsqlBaseParser.LIKE); + this.state = 182; + localContext._pattern = this.string_(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 184; + this.valueExpression(); + this.state = 186; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 44) { + { + this.state = 185; + this.match(EsqlBaseParser.NOT); + } + } + + this.state = 188; + localContext._kind = this.match(EsqlBaseParser.RLIKE); + this.state = 189; + localContext._pattern = this.string_(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public valueExpression(): ValueExpressionContext { + let localContext = new ValueExpressionContext(this.context, this.state); + this.enterRule(localContext, 14, EsqlBaseParser.RULE_valueExpression); + try { + this.state = 198; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 12, this.context) ) { + case 1: + localContext = new ValueExpressionDefaultContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 193; + this.operatorExpression(0); + } + break; + case 2: + localContext = new ComparisonContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 194; + (localContext as ComparisonContext)._left = this.operatorExpression(0); + this.state = 195; + this.comparisonOperator(); + this.state = 196; + (localContext as ComparisonContext)._right = this.operatorExpression(0); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + + public operatorExpression(): OperatorExpressionContext; + public operatorExpression(_p: number): OperatorExpressionContext; + public operatorExpression(_p?: number): OperatorExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new OperatorExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 16; + this.enterRecursionRule(localContext, 16, EsqlBaseParser.RULE_operatorExpression, _p); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 204; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 13, this.context) ) { + case 1: + { + localContext = new OperatorExpressionDefaultContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 201; + this.primaryExpression(); + } + break; + case 2: + { + localContext = new ArithmeticUnaryContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 202; + (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 58 || _la === 59)) { + (localContext as ArithmeticUnaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 203; + this.operatorExpression(3); + } + break; + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 214; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 15, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + this.state = 212; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 14, this.context) ) { + case 1: + { + localContext = new ArithmeticBinaryContext(new OperatorExpressionContext(parentContext, parentState)); + (localContext as ArithmeticBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, EsqlBaseParser.RULE_operatorExpression); + this.state = 206; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + } + this.state = 207; + (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(((((_la - 60)) & ~0x1F) === 0 && ((1 << (_la - 60)) & 7) !== 0))) { + (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 208; + (localContext as ArithmeticBinaryContext)._right = this.operatorExpression(3); + } + break; + case 2: + { + localContext = new ArithmeticBinaryContext(new OperatorExpressionContext(parentContext, parentState)); + (localContext as ArithmeticBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, EsqlBaseParser.RULE_operatorExpression); + this.state = 209; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); + } + this.state = 210; + (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 58 || _la === 59)) { + (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 211; + (localContext as ArithmeticBinaryContext)._right = this.operatorExpression(2); + } + break; + } + } + } + this.state = 216; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 15, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(parentContext); + } + return localContext; + } + public primaryExpression(): PrimaryExpressionContext { + let localContext = new PrimaryExpressionContext(this.context, this.state); + this.enterRule(localContext, 18, EsqlBaseParser.RULE_primaryExpression); + try { + this.state = 224; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 16, this.context) ) { + case 1: + localContext = new ConstantDefaultContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 217; + this.constant(); + } + break; + case 2: + localContext = new DereferenceContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 218; + this.qualifiedName(); + } + break; + case 3: + localContext = new FunctionContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 219; + this.functionExpression(); + } + break; + case 4: + localContext = new ParenthesizedExpressionContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 220; + this.match(EsqlBaseParser.LP); + this.state = 221; + this.booleanExpression(0); + this.state = 222; + this.match(EsqlBaseParser.RP); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionExpression(): FunctionExpressionContext { + let localContext = new FunctionExpressionContext(this.context, this.state); + this.enterRule(localContext, 20, EsqlBaseParser.RULE_functionExpression); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 226; + this.identifier(); + this.state = 227; + this.match(EsqlBaseParser.LP); + this.state = 237; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case EsqlBaseParser.ASTERISK: + { + this.state = 228; + this.match(EsqlBaseParser.ASTERISK); + } + break; + case EsqlBaseParser.STRING: + case EsqlBaseParser.INTEGER_LITERAL: + case EsqlBaseParser.DECIMAL_LITERAL: + case EsqlBaseParser.FALSE: + case EsqlBaseParser.LP: + case EsqlBaseParser.NOT: + case EsqlBaseParser.NULL: + case EsqlBaseParser.PARAM: + case EsqlBaseParser.TRUE: + case EsqlBaseParser.PLUS: + case EsqlBaseParser.MINUS: + case EsqlBaseParser.OPENING_BRACKET: + case EsqlBaseParser.UNQUOTED_IDENTIFIER: + case EsqlBaseParser.QUOTED_IDENTIFIER: + { + { + this.state = 229; + this.booleanExpression(0); + this.state = 234; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 34) { + { + { + this.state = 230; + this.match(EsqlBaseParser.COMMA); + this.state = 231; + this.booleanExpression(0); + } + } + this.state = 236; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + break; + case EsqlBaseParser.RP: + break; + default: + break; + } + this.state = 239; + this.match(EsqlBaseParser.RP); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public rowCommand(): RowCommandContext { + let localContext = new RowCommandContext(this.context, this.state); + this.enterRule(localContext, 22, EsqlBaseParser.RULE_rowCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 241; + this.match(EsqlBaseParser.ROW); + this.state = 242; + this.fields(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public fields(): FieldsContext { + let localContext = new FieldsContext(this.context, this.state); + this.enterRule(localContext, 24, EsqlBaseParser.RULE_fields); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 244; + this.field(); + this.state = 249; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 19, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 245; + this.match(EsqlBaseParser.COMMA); + this.state = 246; + this.field(); + } + } + } + this.state = 251; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 19, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public field(): FieldContext { + let localContext = new FieldContext(this.context, this.state); + this.enterRule(localContext, 26, EsqlBaseParser.RULE_field); + try { + this.state = 257; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 20, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 252; + this.booleanExpression(0); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 253; + this.qualifiedName(); + this.state = 254; + this.match(EsqlBaseParser.ASSIGN); + this.state = 255; + this.booleanExpression(0); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public fromCommand(): FromCommandContext { + let localContext = new FromCommandContext(this.context, this.state); + this.enterRule(localContext, 28, EsqlBaseParser.RULE_fromCommand); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 259; + this.match(EsqlBaseParser.FROM); + this.state = 260; + this.fromIdentifier(); + this.state = 265; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 21, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 261; + this.match(EsqlBaseParser.COMMA); + this.state = 262; + this.fromIdentifier(); + } + } + } + this.state = 267; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 21, this.context); + } + this.state = 269; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) { + case 1: + { + this.state = 268; + this.metadata(); + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public metadata(): MetadataContext { + let localContext = new MetadataContext(this.context, this.state); + this.enterRule(localContext, 30, EsqlBaseParser.RULE_metadata); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 271; + this.match(EsqlBaseParser.OPENING_BRACKET); + this.state = 272; + this.match(EsqlBaseParser.METADATA); + this.state = 273; + this.fromIdentifier(); + this.state = 278; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 34) { + { + { + this.state = 274; + this.match(EsqlBaseParser.COMMA); + this.state = 275; + this.fromIdentifier(); + } + } + this.state = 280; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 281; + this.match(EsqlBaseParser.CLOSING_BRACKET); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public evalCommand(): EvalCommandContext { + let localContext = new EvalCommandContext(this.context, this.state); + this.enterRule(localContext, 32, EsqlBaseParser.RULE_evalCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 283; + this.match(EsqlBaseParser.EVAL); + this.state = 284; + this.fields(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public statsCommand(): StatsCommandContext { + let localContext = new StatsCommandContext(this.context, this.state); + this.enterRule(localContext, 34, EsqlBaseParser.RULE_statsCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 286; + this.match(EsqlBaseParser.STATS); + this.state = 288; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 24, this.context) ) { + case 1: + { + this.state = 287; + this.fields(); + } + break; + } + this.state = 292; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 25, this.context) ) { + case 1: + { + this.state = 290; + this.match(EsqlBaseParser.BY); + this.state = 291; + this.grouping(); + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public inlinestatsCommand(): InlinestatsCommandContext { + let localContext = new InlinestatsCommandContext(this.context, this.state); + this.enterRule(localContext, 36, EsqlBaseParser.RULE_inlinestatsCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 294; + this.match(EsqlBaseParser.INLINESTATS); + this.state = 295; + this.fields(); + this.state = 298; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { + case 1: + { + this.state = 296; + this.match(EsqlBaseParser.BY); + this.state = 297; + this.grouping(); + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public grouping(): GroupingContext { + let localContext = new GroupingContext(this.context, this.state); + this.enterRule(localContext, 38, EsqlBaseParser.RULE_grouping); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 300; + this.qualifiedName(); + this.state = 305; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 301; + this.match(EsqlBaseParser.COMMA); + this.state = 302; + this.qualifiedName(); + } + } + } + this.state = 307; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public fromIdentifier(): FromIdentifierContext { + let localContext = new FromIdentifierContext(this.context, this.state); + this.enterRule(localContext, 40, EsqlBaseParser.RULE_fromIdentifier); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 308; + _la = this.tokenStream.LA(1); + if(!(_la === 66 || _la === 71)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public qualifiedName(): QualifiedNameContext { + let localContext = new QualifiedNameContext(this.context, this.state); + this.enterRule(localContext, 42, EsqlBaseParser.RULE_qualifiedName); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 310; + this.identifier(); + this.state = 315; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 28, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 311; + this.match(EsqlBaseParser.DOT); + this.state = 312; + this.identifier(); + } + } + } + this.state = 317; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 28, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public qualifiedNamePattern(): QualifiedNamePatternContext { + let localContext = new QualifiedNamePatternContext(this.context, this.state); + this.enterRule(localContext, 44, EsqlBaseParser.RULE_qualifiedNamePattern); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 318; + this.identifierPattern(); + this.state = 323; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 319; + this.match(EsqlBaseParser.DOT); + this.state = 320; + this.identifierPattern(); + } + } + } + this.state = 325; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public identifier(): IdentifierContext { + let localContext = new IdentifierContext(this.context, this.state); + this.enterRule(localContext, 46, EsqlBaseParser.RULE_identifier); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 326; + _la = this.tokenStream.LA(1); + if(!(_la === 65 || _la === 66)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public identifierPattern(): IdentifierPatternContext { + let localContext = new IdentifierPatternContext(this.context, this.state); + this.enterRule(localContext, 48, EsqlBaseParser.RULE_identifierPattern); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 328; + _la = this.tokenStream.LA(1); + if(!(_la === 66 || _la === 75)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public constant(): ConstantContext { + let localContext = new ConstantContext(this.context, this.state); + this.enterRule(localContext, 50, EsqlBaseParser.RULE_constant); + let _la: number; + try { + this.state = 372; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context) ) { + case 1: + localContext = new NullLiteralContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 330; + this.match(EsqlBaseParser.NULL); + } + break; + case 2: + localContext = new QualifiedIntegerLiteralContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 331; + this.integerValue(); + this.state = 332; + this.match(EsqlBaseParser.UNQUOTED_IDENTIFIER); + } + break; + case 3: + localContext = new DecimalLiteralContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 334; + this.decimalValue(); + } + break; + case 4: + localContext = new IntegerLiteralContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 335; + this.integerValue(); + } + break; + case 5: + localContext = new BooleanLiteralContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 336; + this.booleanValue(); + } + break; + case 6: + localContext = new InputParamContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 337; + this.match(EsqlBaseParser.PARAM); + } + break; + case 7: + localContext = new StringLiteralContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 338; + this.string_(); + } + break; + case 8: + localContext = new NumericArrayLiteralContext(localContext); + this.enterOuterAlt(localContext, 8); + { + this.state = 339; + this.match(EsqlBaseParser.OPENING_BRACKET); + this.state = 340; + this.numericValue(); + this.state = 345; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 34) { + { + { + this.state = 341; + this.match(EsqlBaseParser.COMMA); + this.state = 342; + this.numericValue(); + } + } + this.state = 347; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 348; + this.match(EsqlBaseParser.CLOSING_BRACKET); + } + break; + case 9: + localContext = new BooleanArrayLiteralContext(localContext); + this.enterOuterAlt(localContext, 9); + { + this.state = 350; + this.match(EsqlBaseParser.OPENING_BRACKET); + this.state = 351; + this.booleanValue(); + this.state = 356; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 34) { + { + { + this.state = 352; + this.match(EsqlBaseParser.COMMA); + this.state = 353; + this.booleanValue(); + } + } + this.state = 358; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 359; + this.match(EsqlBaseParser.CLOSING_BRACKET); + } + break; + case 10: + localContext = new StringArrayLiteralContext(localContext); + this.enterOuterAlt(localContext, 10); + { + this.state = 361; + this.match(EsqlBaseParser.OPENING_BRACKET); + this.state = 362; + this.string_(); + this.state = 367; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 34) { + { + { + this.state = 363; + this.match(EsqlBaseParser.COMMA); + this.state = 364; + this.string_(); + } + } + this.state = 369; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 370; + this.match(EsqlBaseParser.CLOSING_BRACKET); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public limitCommand(): LimitCommandContext { + let localContext = new LimitCommandContext(this.context, this.state); + this.enterRule(localContext, 52, EsqlBaseParser.RULE_limitCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 374; + this.match(EsqlBaseParser.LIMIT); + this.state = 375; + this.match(EsqlBaseParser.INTEGER_LITERAL); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public sortCommand(): SortCommandContext { + let localContext = new SortCommandContext(this.context, this.state); + this.enterRule(localContext, 54, EsqlBaseParser.RULE_sortCommand); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 377; + this.match(EsqlBaseParser.SORT); + this.state = 378; + this.orderExpression(); + this.state = 383; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 34, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 379; + this.match(EsqlBaseParser.COMMA); + this.state = 380; + this.orderExpression(); + } + } + } + this.state = 385; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 34, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public orderExpression(): OrderExpressionContext { + let localContext = new OrderExpressionContext(this.context, this.state); + this.enterRule(localContext, 56, EsqlBaseParser.RULE_orderExpression); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 386; + this.booleanExpression(0); + this.state = 388; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 35, this.context) ) { + case 1: + { + this.state = 387; + localContext._ordering = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 32 || _la === 35)) { + localContext._ordering = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + this.state = 392; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 36, this.context) ) { + case 1: + { + this.state = 390; + this.match(EsqlBaseParser.NULLS); + this.state = 391; + localContext._nullOrdering = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 38 || _la === 39)) { + localContext._nullOrdering = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public keepCommand(): KeepCommandContext { + let localContext = new KeepCommandContext(this.context, this.state); + this.enterRule(localContext, 58, EsqlBaseParser.RULE_keepCommand); + try { + let alternative: number; + this.state = 412; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case EsqlBaseParser.KEEP: + this.enterOuterAlt(localContext, 1); + { + this.state = 394; + this.match(EsqlBaseParser.KEEP); + this.state = 395; + this.qualifiedNamePattern(); + this.state = 400; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 37, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 396; + this.match(EsqlBaseParser.COMMA); + this.state = 397; + this.qualifiedNamePattern(); + } + } + } + this.state = 402; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 37, this.context); + } + } + break; + case EsqlBaseParser.PROJECT: + this.enterOuterAlt(localContext, 2); + { + this.state = 403; + this.match(EsqlBaseParser.PROJECT); + this.state = 404; + this.qualifiedNamePattern(); + this.state = 409; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 38, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 405; + this.match(EsqlBaseParser.COMMA); + this.state = 406; + this.qualifiedNamePattern(); + } + } + } + this.state = 411; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 38, this.context); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public dropCommand(): DropCommandContext { + let localContext = new DropCommandContext(this.context, this.state); + this.enterRule(localContext, 60, EsqlBaseParser.RULE_dropCommand); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 414; + this.match(EsqlBaseParser.DROP); + this.state = 415; + this.qualifiedNamePattern(); + this.state = 420; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 40, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 416; + this.match(EsqlBaseParser.COMMA); + this.state = 417; + this.qualifiedNamePattern(); + } + } + } + this.state = 422; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 40, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public renameCommand(): RenameCommandContext { + let localContext = new RenameCommandContext(this.context, this.state); + this.enterRule(localContext, 62, EsqlBaseParser.RULE_renameCommand); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 423; + this.match(EsqlBaseParser.RENAME); + this.state = 424; + this.renameClause(); + this.state = 429; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 425; + this.match(EsqlBaseParser.COMMA); + this.state = 426; + this.renameClause(); + } + } + } + this.state = 431; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public renameClause(): RenameClauseContext { + let localContext = new RenameClauseContext(this.context, this.state); + this.enterRule(localContext, 64, EsqlBaseParser.RULE_renameClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 432; + localContext._oldName = this.qualifiedNamePattern(); + this.state = 433; + this.match(EsqlBaseParser.AS); + this.state = 434; + localContext._newName = this.qualifiedNamePattern(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public dissectCommand(): DissectCommandContext { + let localContext = new DissectCommandContext(this.context, this.state); + this.enterRule(localContext, 66, EsqlBaseParser.RULE_dissectCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 436; + this.match(EsqlBaseParser.DISSECT); + this.state = 437; + this.primaryExpression(); + this.state = 438; + this.string_(); + this.state = 440; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 42, this.context) ) { + case 1: + { + this.state = 439; + this.commandOptions(); + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public grokCommand(): GrokCommandContext { + let localContext = new GrokCommandContext(this.context, this.state); + this.enterRule(localContext, 68, EsqlBaseParser.RULE_grokCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 442; + this.match(EsqlBaseParser.GROK); + this.state = 443; + this.primaryExpression(); + this.state = 444; + this.string_(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public mvExpandCommand(): MvExpandCommandContext { + let localContext = new MvExpandCommandContext(this.context, this.state); + this.enterRule(localContext, 70, EsqlBaseParser.RULE_mvExpandCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 446; + this.match(EsqlBaseParser.MV_EXPAND); + this.state = 447; + this.qualifiedName(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public commandOptions(): CommandOptionsContext { + let localContext = new CommandOptionsContext(this.context, this.state); + this.enterRule(localContext, 72, EsqlBaseParser.RULE_commandOptions); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 449; + this.commandOption(); + this.state = 454; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 43, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 450; + this.match(EsqlBaseParser.COMMA); + this.state = 451; + this.commandOption(); + } + } + } + this.state = 456; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 43, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public commandOption(): CommandOptionContext { + let localContext = new CommandOptionContext(this.context, this.state); + this.enterRule(localContext, 74, EsqlBaseParser.RULE_commandOption); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 457; + this.identifier(); + this.state = 458; + this.match(EsqlBaseParser.ASSIGN); + this.state = 459; + this.constant(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public booleanValue(): BooleanValueContext { + let localContext = new BooleanValueContext(this.context, this.state); + this.enterRule(localContext, 76, EsqlBaseParser.RULE_booleanValue); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 461; + _la = this.tokenStream.LA(1); + if(!(_la === 37 || _la === 51)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public numericValue(): NumericValueContext { + let localContext = new NumericValueContext(this.context, this.state); + this.enterRule(localContext, 78, EsqlBaseParser.RULE_numericValue); + try { + this.state = 465; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 463; + this.decimalValue(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 464; + this.integerValue(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public decimalValue(): DecimalValueContext { + let localContext = new DecimalValueContext(this.context, this.state); + this.enterRule(localContext, 80, EsqlBaseParser.RULE_decimalValue); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 468; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 58 || _la === 59) { + { + this.state = 467; + _la = this.tokenStream.LA(1); + if(!(_la === 58 || _la === 59)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 470; + this.match(EsqlBaseParser.DECIMAL_LITERAL); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public integerValue(): IntegerValueContext { + let localContext = new IntegerValueContext(this.context, this.state); + this.enterRule(localContext, 82, EsqlBaseParser.RULE_integerValue); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 473; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 58 || _la === 59) { + { + this.state = 472; + _la = this.tokenStream.LA(1); + if(!(_la === 58 || _la === 59)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 475; + this.match(EsqlBaseParser.INTEGER_LITERAL); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public string_(): StringContext { + let localContext = new StringContext(this.context, this.state); + this.enterRule(localContext, 84, EsqlBaseParser.RULE_string); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 477; + this.match(EsqlBaseParser.STRING); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public comparisonOperator(): ComparisonOperatorContext { + let localContext = new ComparisonOperatorContext(this.context, this.state); + this.enterRule(localContext, 86, EsqlBaseParser.RULE_comparisonOperator); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 479; + _la = this.tokenStream.LA(1); + if(!(((((_la - 52)) & ~0x1F) === 0 && ((1 << (_la - 52)) & 63) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public explainCommand(): ExplainCommandContext { + let localContext = new ExplainCommandContext(this.context, this.state); + this.enterRule(localContext, 88, EsqlBaseParser.RULE_explainCommand); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 481; + this.match(EsqlBaseParser.EXPLAIN); + this.state = 482; + this.subqueryExpression(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public subqueryExpression(): SubqueryExpressionContext { + let localContext = new SubqueryExpressionContext(this.context, this.state); + this.enterRule(localContext, 90, EsqlBaseParser.RULE_subqueryExpression); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 484; + this.match(EsqlBaseParser.OPENING_BRACKET); + this.state = 485; + this.query(0); + this.state = 486; + this.match(EsqlBaseParser.CLOSING_BRACKET); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public showCommand(): ShowCommandContext { + let localContext = new ShowCommandContext(this.context, this.state); + this.enterRule(localContext, 92, EsqlBaseParser.RULE_showCommand); + try { + this.state = 492; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { + case 1: + localContext = new ShowInfoContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 488; + this.match(EsqlBaseParser.SHOW); + this.state = 489; + this.match(EsqlBaseParser.INFO); + } + break; + case 2: + localContext = new ShowFunctionsContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 490; + this.match(EsqlBaseParser.SHOW); + this.state = 491; + this.match(EsqlBaseParser.FUNCTIONS); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public enrichCommand(): EnrichCommandContext { + let localContext = new EnrichCommandContext(this.context, this.state); + this.enterRule(localContext, 94, EsqlBaseParser.RULE_enrichCommand); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 494; + this.match(EsqlBaseParser.ENRICH); + this.state = 495; + localContext._policyName = this.fromIdentifier(); + this.state = 498; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context) ) { + case 1: + { + this.state = 496; + this.match(EsqlBaseParser.ON); + this.state = 497; + localContext._matchField = this.qualifiedNamePattern(); + } + break; + } + this.state = 509; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 50, this.context) ) { + case 1: + { + this.state = 500; + this.match(EsqlBaseParser.WITH); + this.state = 501; + this.enrichWithClause(); + this.state = 506; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 49, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 502; + this.match(EsqlBaseParser.COMMA); + this.state = 503; + this.enrichWithClause(); + } + } + } + this.state = 508; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 49, this.context); + } + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public enrichWithClause(): EnrichWithClauseContext { + let localContext = new EnrichWithClauseContext(this.context, this.state); + this.enterRule(localContext, 96, EsqlBaseParser.RULE_enrichWithClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 514; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 51, this.context) ) { + case 1: + { + this.state = 511; + localContext._newName = this.qualifiedNamePattern(); + this.state = 512; + this.match(EsqlBaseParser.ASSIGN); + } + break; + } + this.state = 516; + localContext._enrichField = this.qualifiedNamePattern(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + + public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { + switch (ruleIndex) { + case 1: + return this.query_sempred(localContext as QueryContext, predIndex); + case 5: + return this.booleanExpression_sempred(localContext as BooleanExpressionContext, predIndex); + case 8: + return this.operatorExpression_sempred(localContext as OperatorExpressionContext, predIndex); + } + return true; + } + private query_sempred(localContext: QueryContext | null, predIndex: number): boolean { + switch (predIndex) { + case 0: + return this.precpred(this.context, 1); + } + return true; + } + private booleanExpression_sempred(localContext: BooleanExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 1: + return this.precpred(this.context, 4); + case 2: + return this.precpred(this.context, 3); + } + return true; + } + private operatorExpression_sempred(localContext: OperatorExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 3: + return this.precpred(this.context, 2); + case 4: + return this.precpred(this.context, 1); + } + return true; + } + + public static readonly _serializedATN: number[] = [ + 4,1,98,519,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13, + 2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20, + 7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26, + 2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33, + 7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39, + 2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46, + 7,46,2,47,7,47,2,48,7,48,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,5,1, + 108,8,1,10,1,12,1,111,9,1,1,2,1,2,1,2,1,2,3,2,117,8,2,1,3,1,3,1, + 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,132,8,3,1,4,1,4,1, + 4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,144,8,5,1,5,1,5,1,5,1,5,1,5,5, + 5,151,8,5,10,5,12,5,154,9,5,1,5,1,5,1,5,1,5,1,5,3,5,161,8,5,1,5, + 1,5,3,5,165,8,5,1,5,1,5,1,5,1,5,1,5,1,5,5,5,173,8,5,10,5,12,5,176, + 9,5,1,6,1,6,3,6,180,8,6,1,6,1,6,1,6,1,6,1,6,3,6,187,8,6,1,6,1,6, + 1,6,3,6,192,8,6,1,7,1,7,1,7,1,7,1,7,3,7,199,8,7,1,8,1,8,1,8,1,8, + 3,8,205,8,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,213,8,8,10,8,12,8,216,9, + 8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9,225,8,9,1,10,1,10,1,10,1,10,1, + 10,1,10,5,10,233,8,10,10,10,12,10,236,9,10,3,10,238,8,10,1,10,1, + 10,1,11,1,11,1,11,1,12,1,12,1,12,5,12,248,8,12,10,12,12,12,251,9, + 12,1,13,1,13,1,13,1,13,1,13,3,13,258,8,13,1,14,1,14,1,14,1,14,5, + 14,264,8,14,10,14,12,14,267,9,14,1,14,3,14,270,8,14,1,15,1,15,1, + 15,1,15,1,15,5,15,277,8,15,10,15,12,15,280,9,15,1,15,1,15,1,16,1, + 16,1,16,1,17,1,17,3,17,289,8,17,1,17,1,17,3,17,293,8,17,1,18,1,18, + 1,18,1,18,3,18,299,8,18,1,19,1,19,1,19,5,19,304,8,19,10,19,12,19, + 307,9,19,1,20,1,20,1,21,1,21,1,21,5,21,314,8,21,10,21,12,21,317, + 9,21,1,22,1,22,1,22,5,22,322,8,22,10,22,12,22,325,9,22,1,23,1,23, + 1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,5,25,344,8,25,10,25,12,25,347,9,25,1,25,1,25,1,25,1,25, + 1,25,1,25,5,25,355,8,25,10,25,12,25,358,9,25,1,25,1,25,1,25,1,25, + 1,25,1,25,5,25,366,8,25,10,25,12,25,369,9,25,1,25,1,25,3,25,373, + 8,25,1,26,1,26,1,26,1,27,1,27,1,27,1,27,5,27,382,8,27,10,27,12,27, + 385,9,27,1,28,1,28,3,28,389,8,28,1,28,1,28,3,28,393,8,28,1,29,1, + 29,1,29,1,29,5,29,399,8,29,10,29,12,29,402,9,29,1,29,1,29,1,29,1, + 29,5,29,408,8,29,10,29,12,29,411,9,29,3,29,413,8,29,1,30,1,30,1, + 30,1,30,5,30,419,8,30,10,30,12,30,422,9,30,1,31,1,31,1,31,1,31,5, + 31,428,8,31,10,31,12,31,431,9,31,1,32,1,32,1,32,1,32,1,33,1,33,1, + 33,1,33,3,33,441,8,33,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,36,1, + 36,1,36,5,36,453,8,36,10,36,12,36,456,9,36,1,37,1,37,1,37,1,37,1, + 38,1,38,1,39,1,39,3,39,466,8,39,1,40,3,40,469,8,40,1,40,1,40,1,41, + 3,41,474,8,41,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,44,1,45, + 1,45,1,45,1,45,1,46,1,46,1,46,1,46,3,46,493,8,46,1,47,1,47,1,47, + 1,47,3,47,499,8,47,1,47,1,47,1,47,1,47,5,47,505,8,47,10,47,12,47, + 508,9,47,3,47,510,8,47,1,48,1,48,1,48,3,48,515,8,48,1,48,1,48,1, + 48,0,3,2,10,16,49,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32, + 34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76, + 78,80,82,84,86,88,90,92,94,96,0,9,1,0,58,59,1,0,60,62,2,0,66,66, + 71,71,1,0,65,66,2,0,66,66,75,75,2,0,32,32,35,35,1,0,38,39,2,0,37, + 37,51,51,1,0,52,57,548,0,98,1,0,0,0,2,101,1,0,0,0,4,116,1,0,0,0, + 6,131,1,0,0,0,8,133,1,0,0,0,10,164,1,0,0,0,12,191,1,0,0,0,14,198, + 1,0,0,0,16,204,1,0,0,0,18,224,1,0,0,0,20,226,1,0,0,0,22,241,1,0, + 0,0,24,244,1,0,0,0,26,257,1,0,0,0,28,259,1,0,0,0,30,271,1,0,0,0, + 32,283,1,0,0,0,34,286,1,0,0,0,36,294,1,0,0,0,38,300,1,0,0,0,40,308, + 1,0,0,0,42,310,1,0,0,0,44,318,1,0,0,0,46,326,1,0,0,0,48,328,1,0, + 0,0,50,372,1,0,0,0,52,374,1,0,0,0,54,377,1,0,0,0,56,386,1,0,0,0, + 58,412,1,0,0,0,60,414,1,0,0,0,62,423,1,0,0,0,64,432,1,0,0,0,66,436, + 1,0,0,0,68,442,1,0,0,0,70,446,1,0,0,0,72,449,1,0,0,0,74,457,1,0, + 0,0,76,461,1,0,0,0,78,465,1,0,0,0,80,468,1,0,0,0,82,473,1,0,0,0, + 84,477,1,0,0,0,86,479,1,0,0,0,88,481,1,0,0,0,90,484,1,0,0,0,92,492, + 1,0,0,0,94,494,1,0,0,0,96,514,1,0,0,0,98,99,3,2,1,0,99,100,5,0,0, + 1,100,1,1,0,0,0,101,102,6,1,-1,0,102,103,3,4,2,0,103,109,1,0,0,0, + 104,105,10,1,0,0,105,106,5,26,0,0,106,108,3,6,3,0,107,104,1,0,0, + 0,108,111,1,0,0,0,109,107,1,0,0,0,109,110,1,0,0,0,110,3,1,0,0,0, + 111,109,1,0,0,0,112,117,3,88,44,0,113,117,3,28,14,0,114,117,3,22, + 11,0,115,117,3,92,46,0,116,112,1,0,0,0,116,113,1,0,0,0,116,114,1, + 0,0,0,116,115,1,0,0,0,117,5,1,0,0,0,118,132,3,32,16,0,119,132,3, + 36,18,0,120,132,3,52,26,0,121,132,3,58,29,0,122,132,3,54,27,0,123, + 132,3,34,17,0,124,132,3,8,4,0,125,132,3,60,30,0,126,132,3,62,31, + 0,127,132,3,66,33,0,128,132,3,68,34,0,129,132,3,94,47,0,130,132, + 3,70,35,0,131,118,1,0,0,0,131,119,1,0,0,0,131,120,1,0,0,0,131,121, + 1,0,0,0,131,122,1,0,0,0,131,123,1,0,0,0,131,124,1,0,0,0,131,125, + 1,0,0,0,131,126,1,0,0,0,131,127,1,0,0,0,131,128,1,0,0,0,131,129, + 1,0,0,0,131,130,1,0,0,0,132,7,1,0,0,0,133,134,5,18,0,0,134,135,3, + 10,5,0,135,9,1,0,0,0,136,137,6,5,-1,0,137,138,5,44,0,0,138,165,3, + 10,5,7,139,165,3,14,7,0,140,165,3,12,6,0,141,143,3,14,7,0,142,144, + 5,44,0,0,143,142,1,0,0,0,143,144,1,0,0,0,144,145,1,0,0,0,145,146, + 5,41,0,0,146,147,5,40,0,0,147,152,3,14,7,0,148,149,5,34,0,0,149, + 151,3,14,7,0,150,148,1,0,0,0,151,154,1,0,0,0,152,150,1,0,0,0,152, + 153,1,0,0,0,153,155,1,0,0,0,154,152,1,0,0,0,155,156,5,50,0,0,156, + 165,1,0,0,0,157,158,3,14,7,0,158,160,5,42,0,0,159,161,5,44,0,0,160, + 159,1,0,0,0,160,161,1,0,0,0,161,162,1,0,0,0,162,163,5,45,0,0,163, + 165,1,0,0,0,164,136,1,0,0,0,164,139,1,0,0,0,164,140,1,0,0,0,164, + 141,1,0,0,0,164,157,1,0,0,0,165,174,1,0,0,0,166,167,10,4,0,0,167, + 168,5,31,0,0,168,173,3,10,5,5,169,170,10,3,0,0,170,171,5,47,0,0, + 171,173,3,10,5,4,172,166,1,0,0,0,172,169,1,0,0,0,173,176,1,0,0,0, + 174,172,1,0,0,0,174,175,1,0,0,0,175,11,1,0,0,0,176,174,1,0,0,0,177, + 179,3,14,7,0,178,180,5,44,0,0,179,178,1,0,0,0,179,180,1,0,0,0,180, + 181,1,0,0,0,181,182,5,43,0,0,182,183,3,84,42,0,183,192,1,0,0,0,184, + 186,3,14,7,0,185,187,5,44,0,0,186,185,1,0,0,0,186,187,1,0,0,0,187, + 188,1,0,0,0,188,189,5,49,0,0,189,190,3,84,42,0,190,192,1,0,0,0,191, + 177,1,0,0,0,191,184,1,0,0,0,192,13,1,0,0,0,193,199,3,16,8,0,194, + 195,3,16,8,0,195,196,3,86,43,0,196,197,3,16,8,0,197,199,1,0,0,0, + 198,193,1,0,0,0,198,194,1,0,0,0,199,15,1,0,0,0,200,201,6,8,-1,0, + 201,205,3,18,9,0,202,203,7,0,0,0,203,205,3,16,8,3,204,200,1,0,0, + 0,204,202,1,0,0,0,205,214,1,0,0,0,206,207,10,2,0,0,207,208,7,1,0, + 0,208,213,3,16,8,3,209,210,10,1,0,0,210,211,7,0,0,0,211,213,3,16, + 8,2,212,206,1,0,0,0,212,209,1,0,0,0,213,216,1,0,0,0,214,212,1,0, + 0,0,214,215,1,0,0,0,215,17,1,0,0,0,216,214,1,0,0,0,217,225,3,50, + 25,0,218,225,3,42,21,0,219,225,3,20,10,0,220,221,5,40,0,0,221,222, + 3,10,5,0,222,223,5,50,0,0,223,225,1,0,0,0,224,217,1,0,0,0,224,218, + 1,0,0,0,224,219,1,0,0,0,224,220,1,0,0,0,225,19,1,0,0,0,226,227,3, + 46,23,0,227,237,5,40,0,0,228,238,5,60,0,0,229,234,3,10,5,0,230,231, + 5,34,0,0,231,233,3,10,5,0,232,230,1,0,0,0,233,236,1,0,0,0,234,232, + 1,0,0,0,234,235,1,0,0,0,235,238,1,0,0,0,236,234,1,0,0,0,237,228, + 1,0,0,0,237,229,1,0,0,0,237,238,1,0,0,0,238,239,1,0,0,0,239,240, + 5,50,0,0,240,21,1,0,0,0,241,242,5,14,0,0,242,243,3,24,12,0,243,23, + 1,0,0,0,244,249,3,26,13,0,245,246,5,34,0,0,246,248,3,26,13,0,247, + 245,1,0,0,0,248,251,1,0,0,0,249,247,1,0,0,0,249,250,1,0,0,0,250, + 25,1,0,0,0,251,249,1,0,0,0,252,258,3,10,5,0,253,254,3,42,21,0,254, + 255,5,33,0,0,255,256,3,10,5,0,256,258,1,0,0,0,257,252,1,0,0,0,257, + 253,1,0,0,0,258,27,1,0,0,0,259,260,5,6,0,0,260,265,3,40,20,0,261, + 262,5,34,0,0,262,264,3,40,20,0,263,261,1,0,0,0,264,267,1,0,0,0,265, + 263,1,0,0,0,265,266,1,0,0,0,266,269,1,0,0,0,267,265,1,0,0,0,268, + 270,3,30,15,0,269,268,1,0,0,0,269,270,1,0,0,0,270,29,1,0,0,0,271, + 272,5,63,0,0,272,273,5,70,0,0,273,278,3,40,20,0,274,275,5,34,0,0, + 275,277,3,40,20,0,276,274,1,0,0,0,277,280,1,0,0,0,278,276,1,0,0, + 0,278,279,1,0,0,0,279,281,1,0,0,0,280,278,1,0,0,0,281,282,5,64,0, + 0,282,31,1,0,0,0,283,284,5,4,0,0,284,285,3,24,12,0,285,33,1,0,0, + 0,286,288,5,17,0,0,287,289,3,24,12,0,288,287,1,0,0,0,288,289,1,0, + 0,0,289,292,1,0,0,0,290,291,5,30,0,0,291,293,3,38,19,0,292,290,1, + 0,0,0,292,293,1,0,0,0,293,35,1,0,0,0,294,295,5,8,0,0,295,298,3,24, + 12,0,296,297,5,30,0,0,297,299,3,38,19,0,298,296,1,0,0,0,298,299, + 1,0,0,0,299,37,1,0,0,0,300,305,3,42,21,0,301,302,5,34,0,0,302,304, + 3,42,21,0,303,301,1,0,0,0,304,307,1,0,0,0,305,303,1,0,0,0,305,306, + 1,0,0,0,306,39,1,0,0,0,307,305,1,0,0,0,308,309,7,2,0,0,309,41,1, + 0,0,0,310,315,3,46,23,0,311,312,5,36,0,0,312,314,3,46,23,0,313,311, + 1,0,0,0,314,317,1,0,0,0,315,313,1,0,0,0,315,316,1,0,0,0,316,43,1, + 0,0,0,317,315,1,0,0,0,318,323,3,48,24,0,319,320,5,36,0,0,320,322, + 3,48,24,0,321,319,1,0,0,0,322,325,1,0,0,0,323,321,1,0,0,0,323,324, + 1,0,0,0,324,45,1,0,0,0,325,323,1,0,0,0,326,327,7,3,0,0,327,47,1, + 0,0,0,328,329,7,4,0,0,329,49,1,0,0,0,330,373,5,45,0,0,331,332,3, + 82,41,0,332,333,5,65,0,0,333,373,1,0,0,0,334,373,3,80,40,0,335,373, + 3,82,41,0,336,373,3,76,38,0,337,373,5,48,0,0,338,373,3,84,42,0,339, + 340,5,63,0,0,340,345,3,78,39,0,341,342,5,34,0,0,342,344,3,78,39, + 0,343,341,1,0,0,0,344,347,1,0,0,0,345,343,1,0,0,0,345,346,1,0,0, + 0,346,348,1,0,0,0,347,345,1,0,0,0,348,349,5,64,0,0,349,373,1,0,0, + 0,350,351,5,63,0,0,351,356,3,76,38,0,352,353,5,34,0,0,353,355,3, + 76,38,0,354,352,1,0,0,0,355,358,1,0,0,0,356,354,1,0,0,0,356,357, + 1,0,0,0,357,359,1,0,0,0,358,356,1,0,0,0,359,360,5,64,0,0,360,373, + 1,0,0,0,361,362,5,63,0,0,362,367,3,84,42,0,363,364,5,34,0,0,364, + 366,3,84,42,0,365,363,1,0,0,0,366,369,1,0,0,0,367,365,1,0,0,0,367, + 368,1,0,0,0,368,370,1,0,0,0,369,367,1,0,0,0,370,371,5,64,0,0,371, + 373,1,0,0,0,372,330,1,0,0,0,372,331,1,0,0,0,372,334,1,0,0,0,372, + 335,1,0,0,0,372,336,1,0,0,0,372,337,1,0,0,0,372,338,1,0,0,0,372, + 339,1,0,0,0,372,350,1,0,0,0,372,361,1,0,0,0,373,51,1,0,0,0,374,375, + 5,10,0,0,375,376,5,28,0,0,376,53,1,0,0,0,377,378,5,16,0,0,378,383, + 3,56,28,0,379,380,5,34,0,0,380,382,3,56,28,0,381,379,1,0,0,0,382, + 385,1,0,0,0,383,381,1,0,0,0,383,384,1,0,0,0,384,55,1,0,0,0,385,383, + 1,0,0,0,386,388,3,10,5,0,387,389,7,5,0,0,388,387,1,0,0,0,388,389, + 1,0,0,0,389,392,1,0,0,0,390,391,5,46,0,0,391,393,7,6,0,0,392,390, + 1,0,0,0,392,393,1,0,0,0,393,57,1,0,0,0,394,395,5,9,0,0,395,400,3, + 44,22,0,396,397,5,34,0,0,397,399,3,44,22,0,398,396,1,0,0,0,399,402, + 1,0,0,0,400,398,1,0,0,0,400,401,1,0,0,0,401,413,1,0,0,0,402,400, + 1,0,0,0,403,404,5,12,0,0,404,409,3,44,22,0,405,406,5,34,0,0,406, + 408,3,44,22,0,407,405,1,0,0,0,408,411,1,0,0,0,409,407,1,0,0,0,409, + 410,1,0,0,0,410,413,1,0,0,0,411,409,1,0,0,0,412,394,1,0,0,0,412, + 403,1,0,0,0,413,59,1,0,0,0,414,415,5,2,0,0,415,420,3,44,22,0,416, + 417,5,34,0,0,417,419,3,44,22,0,418,416,1,0,0,0,419,422,1,0,0,0,420, + 418,1,0,0,0,420,421,1,0,0,0,421,61,1,0,0,0,422,420,1,0,0,0,423,424, + 5,13,0,0,424,429,3,64,32,0,425,426,5,34,0,0,426,428,3,64,32,0,427, + 425,1,0,0,0,428,431,1,0,0,0,429,427,1,0,0,0,429,430,1,0,0,0,430, + 63,1,0,0,0,431,429,1,0,0,0,432,433,3,44,22,0,433,434,5,79,0,0,434, + 435,3,44,22,0,435,65,1,0,0,0,436,437,5,1,0,0,437,438,3,18,9,0,438, + 440,3,84,42,0,439,441,3,72,36,0,440,439,1,0,0,0,440,441,1,0,0,0, + 441,67,1,0,0,0,442,443,5,7,0,0,443,444,3,18,9,0,444,445,3,84,42, + 0,445,69,1,0,0,0,446,447,5,11,0,0,447,448,3,42,21,0,448,71,1,0,0, + 0,449,454,3,74,37,0,450,451,5,34,0,0,451,453,3,74,37,0,452,450,1, + 0,0,0,453,456,1,0,0,0,454,452,1,0,0,0,454,455,1,0,0,0,455,73,1,0, + 0,0,456,454,1,0,0,0,457,458,3,46,23,0,458,459,5,33,0,0,459,460,3, + 50,25,0,460,75,1,0,0,0,461,462,7,7,0,0,462,77,1,0,0,0,463,466,3, + 80,40,0,464,466,3,82,41,0,465,463,1,0,0,0,465,464,1,0,0,0,466,79, + 1,0,0,0,467,469,7,0,0,0,468,467,1,0,0,0,468,469,1,0,0,0,469,470, + 1,0,0,0,470,471,5,29,0,0,471,81,1,0,0,0,472,474,7,0,0,0,473,472, + 1,0,0,0,473,474,1,0,0,0,474,475,1,0,0,0,475,476,5,28,0,0,476,83, + 1,0,0,0,477,478,5,27,0,0,478,85,1,0,0,0,479,480,7,8,0,0,480,87,1, + 0,0,0,481,482,5,5,0,0,482,483,3,90,45,0,483,89,1,0,0,0,484,485,5, + 63,0,0,485,486,3,2,1,0,486,487,5,64,0,0,487,91,1,0,0,0,488,489,5, + 15,0,0,489,493,5,94,0,0,490,491,5,15,0,0,491,493,5,95,0,0,492,488, + 1,0,0,0,492,490,1,0,0,0,493,93,1,0,0,0,494,495,5,3,0,0,495,498,3, + 40,20,0,496,497,5,83,0,0,497,499,3,44,22,0,498,496,1,0,0,0,498,499, + 1,0,0,0,499,509,1,0,0,0,500,501,5,84,0,0,501,506,3,96,48,0,502,503, + 5,34,0,0,503,505,3,96,48,0,504,502,1,0,0,0,505,508,1,0,0,0,506,504, + 1,0,0,0,506,507,1,0,0,0,507,510,1,0,0,0,508,506,1,0,0,0,509,500, + 1,0,0,0,509,510,1,0,0,0,510,95,1,0,0,0,511,512,3,44,22,0,512,513, + 5,33,0,0,513,515,1,0,0,0,514,511,1,0,0,0,514,515,1,0,0,0,515,516, + 1,0,0,0,516,517,3,44,22,0,517,97,1,0,0,0,52,109,116,131,143,152, + 160,164,172,174,179,186,191,198,204,212,214,224,234,237,249,257, + 265,269,278,288,292,298,305,315,323,345,356,367,372,383,388,392, + 400,409,412,420,429,440,454,465,468,473,492,498,506,509,514 + ]; + + private static __ATN: antlr.ATN; + public static get _ATN(): antlr.ATN { + if (!EsqlBaseParser.__ATN) { + EsqlBaseParser.__ATN = new antlr.ATNDeserializer().deserialize(EsqlBaseParser._serializedATN); + } + + return EsqlBaseParser.__ATN; + } + + + private static readonly vocabulary = new antlr.Vocabulary(EsqlBaseParser.literalNames, EsqlBaseParser.symbolicNames, []); + + public override get vocabulary(): antlr.Vocabulary { + return EsqlBaseParser.vocabulary; + } + + private static readonly decisionsToDFA = EsqlBaseParser._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) ); +} + +export class SingleStatementContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; + } + public EOF(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.EOF, 0)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_singleStatement; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterSingleStatement) { + listener.enterSingleStatement(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitSingleStatement) { + listener.exitSingleStatement(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitSingleStatement) { + return visitor.visitSingleStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class QueryContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_query; + } + public override copyFrom(ctx: QueryContext): void { + super.copyFrom(ctx); + } +} +export class CompositeQueryContext extends QueryContext { + public constructor(ctx: QueryContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; + } + public PIPE(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.PIPE, 0)!; + } + public processingCommand(): ProcessingCommandContext { + return this.getRuleContext(0, ProcessingCommandContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterCompositeQuery) { + listener.enterCompositeQuery(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitCompositeQuery) { + listener.exitCompositeQuery(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitCompositeQuery) { + return visitor.visitCompositeQuery(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SingleCommandQueryContext extends QueryContext { + public constructor(ctx: QueryContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public sourceCommand(): SourceCommandContext { + return this.getRuleContext(0, SourceCommandContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterSingleCommandQuery) { + listener.enterSingleCommandQuery(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitSingleCommandQuery) { + listener.exitSingleCommandQuery(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitSingleCommandQuery) { + return visitor.visitSingleCommandQuery(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SourceCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public explainCommand(): ExplainCommandContext | null { + return this.getRuleContext(0, ExplainCommandContext); + } + public fromCommand(): FromCommandContext | null { + return this.getRuleContext(0, FromCommandContext); + } + public rowCommand(): RowCommandContext | null { + return this.getRuleContext(0, RowCommandContext); + } + public showCommand(): ShowCommandContext | null { + return this.getRuleContext(0, ShowCommandContext); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_sourceCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterSourceCommand) { + listener.enterSourceCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitSourceCommand) { + listener.exitSourceCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitSourceCommand) { + return visitor.visitSourceCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ProcessingCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public evalCommand(): EvalCommandContext | null { + return this.getRuleContext(0, EvalCommandContext); + } + public inlinestatsCommand(): InlinestatsCommandContext | null { + return this.getRuleContext(0, InlinestatsCommandContext); + } + public limitCommand(): LimitCommandContext | null { + return this.getRuleContext(0, LimitCommandContext); + } + public keepCommand(): KeepCommandContext | null { + return this.getRuleContext(0, KeepCommandContext); + } + public sortCommand(): SortCommandContext | null { + return this.getRuleContext(0, SortCommandContext); + } + public statsCommand(): StatsCommandContext | null { + return this.getRuleContext(0, StatsCommandContext); + } + public whereCommand(): WhereCommandContext | null { + return this.getRuleContext(0, WhereCommandContext); + } + public dropCommand(): DropCommandContext | null { + return this.getRuleContext(0, DropCommandContext); + } + public renameCommand(): RenameCommandContext | null { + return this.getRuleContext(0, RenameCommandContext); + } + public dissectCommand(): DissectCommandContext | null { + return this.getRuleContext(0, DissectCommandContext); + } + public grokCommand(): GrokCommandContext | null { + return this.getRuleContext(0, GrokCommandContext); + } + public enrichCommand(): EnrichCommandContext | null { + return this.getRuleContext(0, EnrichCommandContext); + } + public mvExpandCommand(): MvExpandCommandContext | null { + return this.getRuleContext(0, MvExpandCommandContext); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_processingCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterProcessingCommand) { + listener.enterProcessingCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitProcessingCommand) { + listener.exitProcessingCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitProcessingCommand) { + return visitor.visitProcessingCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class WhereCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public WHERE(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.WHERE, 0)!; + } + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_whereCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterWhereCommand) { + listener.enterWhereCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitWhereCommand) { + listener.exitWhereCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitWhereCommand) { + return visitor.visitWhereCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class BooleanExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_booleanExpression; + } + public override copyFrom(ctx: BooleanExpressionContext): void { + super.copyFrom(ctx); + } +} +export class LogicalNotContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public NOT(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.NOT, 0)!; + } + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterLogicalNot) { + listener.enterLogicalNot(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitLogicalNot) { + listener.exitLogicalNot(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitLogicalNot) { + return visitor.visitLogicalNot(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class BooleanDefaultContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterBooleanDefault) { + listener.enterBooleanDefault(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitBooleanDefault) { + listener.exitBooleanDefault(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitBooleanDefault) { + return visitor.visitBooleanDefault(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class IsNullContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public IS(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.IS, 0)!; + } + public NULL(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.NULL, 0)!; + } + public NOT(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.NOT, 0); + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterIsNull) { + listener.enterIsNull(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitIsNull) { + listener.exitIsNull(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitIsNull) { + return visitor.visitIsNull(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RegexExpressionContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public regexBooleanExpression(): RegexBooleanExpressionContext { + return this.getRuleContext(0, RegexBooleanExpressionContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterRegexExpression) { + listener.enterRegexExpression(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitRegexExpression) { + listener.exitRegexExpression(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitRegexExpression) { + return visitor.visitRegexExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class LogicalInContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ValueExpressionContext); + } + + return this.getRuleContext(i, ValueExpressionContext); + } + public IN(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.IN, 0)!; + } + public LP(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.LP, 0)!; + } + public RP(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.RP, 0)!; + } + public NOT(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.NOT, 0); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterLogicalIn) { + listener.enterLogicalIn(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitLogicalIn) { + listener.exitLogicalIn(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitLogicalIn) { + return visitor.visitLogicalIn(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class LogicalBinaryContext extends BooleanExpressionContext { + public _left?: BooleanExpressionContext; + public _operator?: Token | null; + public _right?: BooleanExpressionContext; + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public booleanExpression(): BooleanExpressionContext[]; + public booleanExpression(i: number): BooleanExpressionContext | null; + public booleanExpression(i?: number): BooleanExpressionContext[] | BooleanExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(BooleanExpressionContext); + } + + return this.getRuleContext(i, BooleanExpressionContext); + } + public AND(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.AND, 0); + } + public OR(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.OR, 0); + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterLogicalBinary) { + listener.enterLogicalBinary(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitLogicalBinary) { + listener.exitLogicalBinary(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitLogicalBinary) { + return visitor.visitLogicalBinary(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RegexBooleanExpressionContext extends antlr.ParserRuleContext { + public _kind?: Token | null; + public _pattern?: StringContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public LIKE(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.LIKE, 0); + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public NOT(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.NOT, 0); + } + public RLIKE(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.RLIKE, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_regexBooleanExpression; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterRegexBooleanExpression) { + listener.enterRegexBooleanExpression(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitRegexBooleanExpression) { + listener.exitRegexBooleanExpression(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitRegexBooleanExpression) { + return visitor.visitRegexBooleanExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ValueExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_valueExpression; + } + public override copyFrom(ctx: ValueExpressionContext): void { + super.copyFrom(ctx); + } +} +export class ValueExpressionDefaultContext extends ValueExpressionContext { + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public operatorExpression(): OperatorExpressionContext { + return this.getRuleContext(0, OperatorExpressionContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterValueExpressionDefault) { + listener.enterValueExpressionDefault(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitValueExpressionDefault) { + listener.exitValueExpressionDefault(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitValueExpressionDefault) { + return visitor.visitValueExpressionDefault(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ComparisonContext extends ValueExpressionContext { + public _left?: OperatorExpressionContext; + public _right?: OperatorExpressionContext; + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public comparisonOperator(): ComparisonOperatorContext { + return this.getRuleContext(0, ComparisonOperatorContext)!; + } + public operatorExpression(): OperatorExpressionContext[]; + public operatorExpression(i: number): OperatorExpressionContext | null; + public operatorExpression(i?: number): OperatorExpressionContext[] | OperatorExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(OperatorExpressionContext); + } + + return this.getRuleContext(i, OperatorExpressionContext); + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterComparison) { + listener.enterComparison(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitComparison) { + listener.exitComparison(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitComparison) { + return visitor.visitComparison(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class OperatorExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_operatorExpression; + } + public override copyFrom(ctx: OperatorExpressionContext): void { + super.copyFrom(ctx); + } +} +export class OperatorExpressionDefaultContext extends OperatorExpressionContext { + public constructor(ctx: OperatorExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterOperatorExpressionDefault) { + listener.enterOperatorExpressionDefault(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitOperatorExpressionDefault) { + listener.exitOperatorExpressionDefault(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitOperatorExpressionDefault) { + return visitor.visitOperatorExpressionDefault(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ArithmeticBinaryContext extends OperatorExpressionContext { + public _left?: OperatorExpressionContext; + public _operator?: Token | null; + public _right?: OperatorExpressionContext; + public constructor(ctx: OperatorExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public operatorExpression(): OperatorExpressionContext[]; + public operatorExpression(i: number): OperatorExpressionContext | null; + public operatorExpression(i?: number): OperatorExpressionContext[] | OperatorExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(OperatorExpressionContext); + } + + return this.getRuleContext(i, OperatorExpressionContext); + } + public ASTERISK(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.ASTERISK, 0); + } + public SLASH(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.SLASH, 0); + } + public PERCENT(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.PERCENT, 0); + } + public PLUS(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.PLUS, 0); + } + public MINUS(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.MINUS, 0); + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterArithmeticBinary) { + listener.enterArithmeticBinary(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitArithmeticBinary) { + listener.exitArithmeticBinary(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitArithmeticBinary) { + return visitor.visitArithmeticBinary(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ArithmeticUnaryContext extends OperatorExpressionContext { + public _operator?: Token | null; + public constructor(ctx: OperatorExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public operatorExpression(): OperatorExpressionContext { + return this.getRuleContext(0, OperatorExpressionContext)!; + } + public MINUS(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.MINUS, 0); + } + public PLUS(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.PLUS, 0); + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterArithmeticUnary) { + listener.enterArithmeticUnary(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitArithmeticUnary) { + listener.exitArithmeticUnary(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitArithmeticUnary) { + return visitor.visitArithmeticUnary(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class PrimaryExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_primaryExpression; + } + public override copyFrom(ctx: PrimaryExpressionContext): void { + super.copyFrom(ctx); + } +} +export class DereferenceContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterDereference) { + listener.enterDereference(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitDereference) { + listener.exitDereference(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitDereference) { + return visitor.visitDereference(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ConstantDefaultContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public constant(): ConstantContext { + return this.getRuleContext(0, ConstantContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterConstantDefault) { + listener.enterConstantDefault(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitConstantDefault) { + listener.exitConstantDefault(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitConstantDefault) { + return visitor.visitConstantDefault(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ParenthesizedExpressionContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public LP(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.LP, 0)!; + } + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; + } + public RP(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.RP, 0)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterParenthesizedExpression) { + listener.enterParenthesizedExpression(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitParenthesizedExpression) { + listener.exitParenthesizedExpression(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitParenthesizedExpression) { + return visitor.visitParenthesizedExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class FunctionContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public functionExpression(): FunctionExpressionContext { + return this.getRuleContext(0, FunctionExpressionContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterFunction) { + listener.enterFunction(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitFunction) { + listener.exitFunction(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitFunction) { + return visitor.visitFunction(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FunctionExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public LP(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.LP, 0)!; + } + public RP(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.RP, 0)!; + } + public ASTERISK(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.ASTERISK, 0); + } + public booleanExpression(): BooleanExpressionContext[]; + public booleanExpression(i: number): BooleanExpressionContext | null; + public booleanExpression(i?: number): BooleanExpressionContext[] | BooleanExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(BooleanExpressionContext); + } + + return this.getRuleContext(i, BooleanExpressionContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_functionExpression; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterFunctionExpression) { + listener.enterFunctionExpression(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitFunctionExpression) { + listener.exitFunctionExpression(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitFunctionExpression) { + return visitor.visitFunctionExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RowCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public ROW(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.ROW, 0)!; + } + public fields(): FieldsContext { + return this.getRuleContext(0, FieldsContext)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_rowCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterRowCommand) { + listener.enterRowCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitRowCommand) { + listener.exitRowCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitRowCommand) { + return visitor.visitRowCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FieldsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public field(): FieldContext[]; + public field(i: number): FieldContext | null; + public field(i?: number): FieldContext[] | FieldContext | null { + if (i === undefined) { + return this.getRuleContexts(FieldContext); + } + + return this.getRuleContext(i, FieldContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_fields; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterFields) { + listener.enterFields(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitFields) { + listener.exitFields(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitFields) { + return visitor.visitFields(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FieldContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; + } + public qualifiedName(): QualifiedNameContext | null { + return this.getRuleContext(0, QualifiedNameContext); + } + public ASSIGN(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.ASSIGN, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_field; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterField) { + listener.enterField(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitField) { + listener.exitField(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitField) { + return visitor.visitField(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FromCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public FROM(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.FROM, 0)!; + } + public fromIdentifier(): FromIdentifierContext[]; + public fromIdentifier(i: number): FromIdentifierContext | null; + public fromIdentifier(i?: number): FromIdentifierContext[] | FromIdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(FromIdentifierContext); + } + + return this.getRuleContext(i, FromIdentifierContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public metadata(): MetadataContext | null { + return this.getRuleContext(0, MetadataContext); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_fromCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterFromCommand) { + listener.enterFromCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitFromCommand) { + listener.exitFromCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitFromCommand) { + return visitor.visitFromCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class MetadataContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public OPENING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.OPENING_BRACKET, 0)!; + } + public METADATA(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.METADATA, 0)!; + } + public fromIdentifier(): FromIdentifierContext[]; + public fromIdentifier(i: number): FromIdentifierContext | null; + public fromIdentifier(i?: number): FromIdentifierContext[] | FromIdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(FromIdentifierContext); + } + + return this.getRuleContext(i, FromIdentifierContext); + } + public CLOSING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.CLOSING_BRACKET, 0)!; + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_metadata; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterMetadata) { + listener.enterMetadata(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitMetadata) { + listener.exitMetadata(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitMetadata) { + return visitor.visitMetadata(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class EvalCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public EVAL(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.EVAL, 0)!; + } + public fields(): FieldsContext { + return this.getRuleContext(0, FieldsContext)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_evalCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterEvalCommand) { + listener.enterEvalCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitEvalCommand) { + listener.exitEvalCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitEvalCommand) { + return visitor.visitEvalCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StatsCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public STATS(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.STATS, 0)!; + } + public fields(): FieldsContext | null { + return this.getRuleContext(0, FieldsContext); + } + public BY(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.BY, 0); + } + public grouping(): GroupingContext | null { + return this.getRuleContext(0, GroupingContext); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_statsCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterStatsCommand) { + listener.enterStatsCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitStatsCommand) { + listener.exitStatsCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitStatsCommand) { + return visitor.visitStatsCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class InlinestatsCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public INLINESTATS(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.INLINESTATS, 0)!; + } + public fields(): FieldsContext { + return this.getRuleContext(0, FieldsContext)!; + } + public BY(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.BY, 0); + } + public grouping(): GroupingContext | null { + return this.getRuleContext(0, GroupingContext); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_inlinestatsCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterInlinestatsCommand) { + listener.enterInlinestatsCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitInlinestatsCommand) { + listener.exitInlinestatsCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitInlinestatsCommand) { + return visitor.visitInlinestatsCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class GroupingContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public qualifiedName(): QualifiedNameContext[]; + public qualifiedName(i: number): QualifiedNameContext | null; + public qualifiedName(i?: number): QualifiedNameContext[] | QualifiedNameContext | null { + if (i === undefined) { + return this.getRuleContexts(QualifiedNameContext); + } + + return this.getRuleContext(i, QualifiedNameContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_grouping; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterGrouping) { + listener.enterGrouping(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitGrouping) { + listener.exitGrouping(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitGrouping) { + return visitor.visitGrouping(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FromIdentifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public FROM_UNQUOTED_IDENTIFIER(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.FROM_UNQUOTED_IDENTIFIER, 0); + } + public QUOTED_IDENTIFIER(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.QUOTED_IDENTIFIER, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_fromIdentifier; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterFromIdentifier) { + listener.enterFromIdentifier(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitFromIdentifier) { + listener.exitFromIdentifier(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitFromIdentifier) { + return visitor.visitFromIdentifier(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class QualifiedNameContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); + } + public DOT(): antlr.TerminalNode[]; + public DOT(i: number): antlr.TerminalNode | null; + public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.DOT); + } else { + return this.getToken(EsqlBaseParser.DOT, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_qualifiedName; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterQualifiedName) { + listener.enterQualifiedName(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitQualifiedName) { + listener.exitQualifiedName(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitQualifiedName) { + return visitor.visitQualifiedName(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class QualifiedNamePatternContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public identifierPattern(): IdentifierPatternContext[]; + public identifierPattern(i: number): IdentifierPatternContext | null; + public identifierPattern(i?: number): IdentifierPatternContext[] | IdentifierPatternContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierPatternContext); + } + + return this.getRuleContext(i, IdentifierPatternContext); + } + public DOT(): antlr.TerminalNode[]; + public DOT(i: number): antlr.TerminalNode | null; + public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.DOT); + } else { + return this.getToken(EsqlBaseParser.DOT, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_qualifiedNamePattern; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterQualifiedNamePattern) { + listener.enterQualifiedNamePattern(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitQualifiedNamePattern) { + listener.exitQualifiedNamePattern(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitQualifiedNamePattern) { + return visitor.visitQualifiedNamePattern(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class IdentifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public UNQUOTED_IDENTIFIER(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.UNQUOTED_IDENTIFIER, 0); + } + public QUOTED_IDENTIFIER(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.QUOTED_IDENTIFIER, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_identifier; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterIdentifier) { + listener.enterIdentifier(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitIdentifier) { + listener.exitIdentifier(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitIdentifier) { + return visitor.visitIdentifier(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class IdentifierPatternContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public PROJECT_UNQUOTED_IDENTIFIER(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.PROJECT_UNQUOTED_IDENTIFIER, 0); + } + public QUOTED_IDENTIFIER(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.QUOTED_IDENTIFIER, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_identifierPattern; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterIdentifierPattern) { + listener.enterIdentifierPattern(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitIdentifierPattern) { + listener.exitIdentifierPattern(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitIdentifierPattern) { + return visitor.visitIdentifierPattern(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ConstantContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_constant; + } + public override copyFrom(ctx: ConstantContext): void { + super.copyFrom(ctx); + } +} +export class BooleanArrayLiteralContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public OPENING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.OPENING_BRACKET, 0)!; + } + public booleanValue(): BooleanValueContext[]; + public booleanValue(i: number): BooleanValueContext | null; + public booleanValue(i?: number): BooleanValueContext[] | BooleanValueContext | null { + if (i === undefined) { + return this.getRuleContexts(BooleanValueContext); + } + + return this.getRuleContext(i, BooleanValueContext); + } + public CLOSING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.CLOSING_BRACKET, 0)!; + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterBooleanArrayLiteral) { + listener.enterBooleanArrayLiteral(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitBooleanArrayLiteral) { + listener.exitBooleanArrayLiteral(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitBooleanArrayLiteral) { + return visitor.visitBooleanArrayLiteral(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DecimalLiteralContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public decimalValue(): DecimalValueContext { + return this.getRuleContext(0, DecimalValueContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterDecimalLiteral) { + listener.enterDecimalLiteral(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitDecimalLiteral) { + listener.exitDecimalLiteral(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitDecimalLiteral) { + return visitor.visitDecimalLiteral(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class NullLiteralContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public NULL(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.NULL, 0)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterNullLiteral) { + listener.enterNullLiteral(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitNullLiteral) { + listener.exitNullLiteral(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitNullLiteral) { + return visitor.visitNullLiteral(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class QualifiedIntegerLiteralContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public integerValue(): IntegerValueContext { + return this.getRuleContext(0, IntegerValueContext)!; + } + public UNQUOTED_IDENTIFIER(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.UNQUOTED_IDENTIFIER, 0)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterQualifiedIntegerLiteral) { + listener.enterQualifiedIntegerLiteral(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitQualifiedIntegerLiteral) { + listener.exitQualifiedIntegerLiteral(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitQualifiedIntegerLiteral) { + return visitor.visitQualifiedIntegerLiteral(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class StringArrayLiteralContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public OPENING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.OPENING_BRACKET, 0)!; + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); + } + public CLOSING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.CLOSING_BRACKET, 0)!; + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterStringArrayLiteral) { + listener.enterStringArrayLiteral(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitStringArrayLiteral) { + listener.exitStringArrayLiteral(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitStringArrayLiteral) { + return visitor.visitStringArrayLiteral(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class StringLiteralContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterStringLiteral) { + listener.enterStringLiteral(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitStringLiteral) { + listener.exitStringLiteral(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitStringLiteral) { + return visitor.visitStringLiteral(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class NumericArrayLiteralContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public OPENING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.OPENING_BRACKET, 0)!; + } + public numericValue(): NumericValueContext[]; + public numericValue(i: number): NumericValueContext | null; + public numericValue(i?: number): NumericValueContext[] | NumericValueContext | null { + if (i === undefined) { + return this.getRuleContexts(NumericValueContext); + } + + return this.getRuleContext(i, NumericValueContext); + } + public CLOSING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.CLOSING_BRACKET, 0)!; + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterNumericArrayLiteral) { + listener.enterNumericArrayLiteral(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitNumericArrayLiteral) { + listener.exitNumericArrayLiteral(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitNumericArrayLiteral) { + return visitor.visitNumericArrayLiteral(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class InputParamContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public PARAM(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.PARAM, 0)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterInputParam) { + listener.enterInputParam(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitInputParam) { + listener.exitInputParam(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitInputParam) { + return visitor.visitInputParam(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class IntegerLiteralContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public integerValue(): IntegerValueContext { + return this.getRuleContext(0, IntegerValueContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterIntegerLiteral) { + listener.enterIntegerLiteral(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitIntegerLiteral) { + listener.exitIntegerLiteral(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitIntegerLiteral) { + return visitor.visitIntegerLiteral(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class BooleanLiteralContext extends ConstantContext { + public constructor(ctx: ConstantContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public booleanValue(): BooleanValueContext { + return this.getRuleContext(0, BooleanValueContext)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterBooleanLiteral) { + listener.enterBooleanLiteral(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitBooleanLiteral) { + listener.exitBooleanLiteral(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitBooleanLiteral) { + return visitor.visitBooleanLiteral(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class LimitCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public LIMIT(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.LIMIT, 0)!; + } + public INTEGER_LITERAL(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.INTEGER_LITERAL, 0)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_limitCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterLimitCommand) { + listener.enterLimitCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitLimitCommand) { + listener.exitLimitCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitLimitCommand) { + return visitor.visitLimitCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SortCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public SORT(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.SORT, 0)!; + } + public orderExpression(): OrderExpressionContext[]; + public orderExpression(i: number): OrderExpressionContext | null; + public orderExpression(i?: number): OrderExpressionContext[] | OrderExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(OrderExpressionContext); + } + + return this.getRuleContext(i, OrderExpressionContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_sortCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterSortCommand) { + listener.enterSortCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitSortCommand) { + listener.exitSortCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitSortCommand) { + return visitor.visitSortCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class OrderExpressionContext extends antlr.ParserRuleContext { + public _ordering?: Token | null; + public _nullOrdering?: Token | null; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; + } + public NULLS(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.NULLS, 0); + } + public ASC(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.ASC, 0); + } + public DESC(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.DESC, 0); + } + public FIRST(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.FIRST, 0); + } + public LAST(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.LAST, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_orderExpression; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterOrderExpression) { + listener.enterOrderExpression(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitOrderExpression) { + listener.exitOrderExpression(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitOrderExpression) { + return visitor.visitOrderExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class KeepCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KEEP(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.KEEP, 0); + } + public qualifiedNamePattern(): QualifiedNamePatternContext[]; + public qualifiedNamePattern(i: number): QualifiedNamePatternContext | null; + public qualifiedNamePattern(i?: number): QualifiedNamePatternContext[] | QualifiedNamePatternContext | null { + if (i === undefined) { + return this.getRuleContexts(QualifiedNamePatternContext); + } + + return this.getRuleContext(i, QualifiedNamePatternContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public PROJECT(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.PROJECT, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_keepCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterKeepCommand) { + listener.enterKeepCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitKeepCommand) { + listener.exitKeepCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitKeepCommand) { + return visitor.visitKeepCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class DropCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public DROP(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.DROP, 0)!; + } + public qualifiedNamePattern(): QualifiedNamePatternContext[]; + public qualifiedNamePattern(i: number): QualifiedNamePatternContext | null; + public qualifiedNamePattern(i?: number): QualifiedNamePatternContext[] | QualifiedNamePatternContext | null { + if (i === undefined) { + return this.getRuleContexts(QualifiedNamePatternContext); + } + + return this.getRuleContext(i, QualifiedNamePatternContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_dropCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterDropCommand) { + listener.enterDropCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitDropCommand) { + listener.exitDropCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitDropCommand) { + return visitor.visitDropCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RenameCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public RENAME(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.RENAME, 0)!; + } + public renameClause(): RenameClauseContext[]; + public renameClause(i: number): RenameClauseContext | null; + public renameClause(i?: number): RenameClauseContext[] | RenameClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(RenameClauseContext); + } + + return this.getRuleContext(i, RenameClauseContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_renameCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterRenameCommand) { + listener.enterRenameCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitRenameCommand) { + listener.exitRenameCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitRenameCommand) { + return visitor.visitRenameCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RenameClauseContext extends antlr.ParserRuleContext { + public _oldName?: QualifiedNamePatternContext; + public _newName?: QualifiedNamePatternContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public AS(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.AS, 0)!; + } + public qualifiedNamePattern(): QualifiedNamePatternContext[]; + public qualifiedNamePattern(i: number): QualifiedNamePatternContext | null; + public qualifiedNamePattern(i?: number): QualifiedNamePatternContext[] | QualifiedNamePatternContext | null { + if (i === undefined) { + return this.getRuleContexts(QualifiedNamePatternContext); + } + + return this.getRuleContext(i, QualifiedNamePatternContext); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_renameClause; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterRenameClause) { + listener.enterRenameClause(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitRenameClause) { + listener.exitRenameClause(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitRenameClause) { + return visitor.visitRenameClause(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class DissectCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public DISSECT(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.DISSECT, 0)!; + } + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public commandOptions(): CommandOptionsContext | null { + return this.getRuleContext(0, CommandOptionsContext); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_dissectCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterDissectCommand) { + listener.enterDissectCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitDissectCommand) { + listener.exitDissectCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitDissectCommand) { + return visitor.visitDissectCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class GrokCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public GROK(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.GROK, 0)!; + } + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_grokCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterGrokCommand) { + listener.enterGrokCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitGrokCommand) { + listener.exitGrokCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitGrokCommand) { + return visitor.visitGrokCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class MvExpandCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public MV_EXPAND(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.MV_EXPAND, 0)!; + } + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_mvExpandCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterMvExpandCommand) { + listener.enterMvExpandCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitMvExpandCommand) { + listener.exitMvExpandCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitMvExpandCommand) { + return visitor.visitMvExpandCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class CommandOptionsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public commandOption(): CommandOptionContext[]; + public commandOption(i: number): CommandOptionContext | null; + public commandOption(i?: number): CommandOptionContext[] | CommandOptionContext | null { + if (i === undefined) { + return this.getRuleContexts(CommandOptionContext); + } + + return this.getRuleContext(i, CommandOptionContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_commandOptions; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterCommandOptions) { + listener.enterCommandOptions(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitCommandOptions) { + listener.exitCommandOptions(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitCommandOptions) { + return visitor.visitCommandOptions(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class CommandOptionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public ASSIGN(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.ASSIGN, 0)!; + } + public constant(): ConstantContext { + return this.getRuleContext(0, ConstantContext)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_commandOption; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterCommandOption) { + listener.enterCommandOption(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitCommandOption) { + listener.exitCommandOption(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitCommandOption) { + return visitor.visitCommandOption(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class BooleanValueContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public TRUE(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.TRUE, 0); + } + public FALSE(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.FALSE, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_booleanValue; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterBooleanValue) { + listener.enterBooleanValue(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitBooleanValue) { + listener.exitBooleanValue(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitBooleanValue) { + return visitor.visitBooleanValue(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class NumericValueContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public decimalValue(): DecimalValueContext | null { + return this.getRuleContext(0, DecimalValueContext); + } + public integerValue(): IntegerValueContext | null { + return this.getRuleContext(0, IntegerValueContext); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_numericValue; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterNumericValue) { + listener.enterNumericValue(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitNumericValue) { + listener.exitNumericValue(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitNumericValue) { + return visitor.visitNumericValue(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class DecimalValueContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public DECIMAL_LITERAL(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.DECIMAL_LITERAL, 0)!; + } + public PLUS(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.PLUS, 0); + } + public MINUS(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.MINUS, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_decimalValue; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterDecimalValue) { + listener.enterDecimalValue(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitDecimalValue) { + listener.exitDecimalValue(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitDecimalValue) { + return visitor.visitDecimalValue(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class IntegerValueContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public INTEGER_LITERAL(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.INTEGER_LITERAL, 0)!; + } + public PLUS(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.PLUS, 0); + } + public MINUS(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.MINUS, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_integerValue; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterIntegerValue) { + listener.enterIntegerValue(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitIntegerValue) { + listener.exitIntegerValue(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitIntegerValue) { + return visitor.visitIntegerValue(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StringContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public STRING(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.STRING, 0)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_string; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterString) { + listener.enterString(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitString) { + listener.exitString(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitString) { + return visitor.visitString(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ComparisonOperatorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public EQ(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.EQ, 0); + } + public NEQ(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.NEQ, 0); + } + public LT(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.LT, 0); + } + public LTE(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.LTE, 0); + } + public GT(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.GT, 0); + } + public GTE(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.GTE, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_comparisonOperator; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterComparisonOperator) { + listener.enterComparisonOperator(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitComparisonOperator) { + listener.exitComparisonOperator(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitComparisonOperator) { + return visitor.visitComparisonOperator(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ExplainCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public EXPLAIN(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.EXPLAIN, 0)!; + } + public subqueryExpression(): SubqueryExpressionContext { + return this.getRuleContext(0, SubqueryExpressionContext)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_explainCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterExplainCommand) { + listener.enterExplainCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitExplainCommand) { + listener.exitExplainCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitExplainCommand) { + return visitor.visitExplainCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SubqueryExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public OPENING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.OPENING_BRACKET, 0)!; + } + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; + } + public CLOSING_BRACKET(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.CLOSING_BRACKET, 0)!; + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_subqueryExpression; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterSubqueryExpression) { + listener.enterSubqueryExpression(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitSubqueryExpression) { + listener.exitSubqueryExpression(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitSubqueryExpression) { + return visitor.visitSubqueryExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ShowCommandContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_showCommand; + } + public override copyFrom(ctx: ShowCommandContext): void { + super.copyFrom(ctx); + } +} +export class ShowInfoContext extends ShowCommandContext { + public constructor(ctx: ShowCommandContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public SHOW(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.SHOW, 0)!; + } + public INFO(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.INFO, 0)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterShowInfo) { + listener.enterShowInfo(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitShowInfo) { + listener.exitShowInfo(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitShowInfo) { + return visitor.visitShowInfo(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowFunctionsContext extends ShowCommandContext { + public constructor(ctx: ShowCommandContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public SHOW(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.SHOW, 0)!; + } + public FUNCTIONS(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.FUNCTIONS, 0)!; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterShowFunctions) { + listener.enterShowFunctions(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitShowFunctions) { + listener.exitShowFunctions(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitShowFunctions) { + return visitor.visitShowFunctions(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class EnrichCommandContext extends antlr.ParserRuleContext { + public _policyName?: FromIdentifierContext; + public _matchField?: QualifiedNamePatternContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public ENRICH(): antlr.TerminalNode { + return this.getToken(EsqlBaseParser.ENRICH, 0)!; + } + public fromIdentifier(): FromIdentifierContext { + return this.getRuleContext(0, FromIdentifierContext)!; + } + public ON(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.ON, 0); + } + public WITH(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.WITH, 0); + } + public enrichWithClause(): EnrichWithClauseContext[]; + public enrichWithClause(i: number): EnrichWithClauseContext | null; + public enrichWithClause(i?: number): EnrichWithClauseContext[] | EnrichWithClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(EnrichWithClauseContext); + } + + return this.getRuleContext(i, EnrichWithClauseContext); + } + public qualifiedNamePattern(): QualifiedNamePatternContext | null { + return this.getRuleContext(0, QualifiedNamePatternContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(EsqlBaseParser.COMMA); + } else { + return this.getToken(EsqlBaseParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_enrichCommand; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterEnrichCommand) { + listener.enterEnrichCommand(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitEnrichCommand) { + listener.exitEnrichCommand(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitEnrichCommand) { + return visitor.visitEnrichCommand(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class EnrichWithClauseContext extends antlr.ParserRuleContext { + public _newName?: QualifiedNamePatternContext; + public _enrichField?: QualifiedNamePatternContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public qualifiedNamePattern(): QualifiedNamePatternContext[]; + public qualifiedNamePattern(i: number): QualifiedNamePatternContext | null; + public qualifiedNamePattern(i?: number): QualifiedNamePatternContext[] | QualifiedNamePatternContext | null { + if (i === undefined) { + return this.getRuleContexts(QualifiedNamePatternContext); + } + + return this.getRuleContext(i, QualifiedNamePatternContext); + } + public ASSIGN(): antlr.TerminalNode | null { + return this.getToken(EsqlBaseParser.ASSIGN, 0); + } + public override get ruleIndex(): number { + return EsqlBaseParser.RULE_enrichWithClause; + } + public override enterRule(listener: EsqlBaseParserListener): void { + if(listener.enterEnrichWithClause) { + listener.enterEnrichWithClause(this); + } + } + public override exitRule(listener: EsqlBaseParserListener): void { + if(listener.exitEnrichWithClause) { + listener.exitEnrichWithClause(this); + } + } + public override accept(visitor: EsqlBaseParserVisitor): Result | null { + if (visitor.visitEnrichWithClause) { + return visitor.visitEnrichWithClause(this); + } else { + return visitor.visitChildren(this); + } + } +} diff --git a/esql-lsp/server/src/grammar/generated/EsqlBaseParserListener.ts b/esql-lsp/server/src/grammar/generated/EsqlBaseParserListener.ts new file mode 100644 index 0000000..c010e50 --- /dev/null +++ b/esql-lsp/server/src/grammar/generated/EsqlBaseParserListener.ts @@ -0,0 +1,858 @@ +// Generated from ./src/grammar/EsqlBaseParser.g4 by ANTLR 4.13.1 + +import { ErrorNode, ParseTreeListener, ParserRuleContext, TerminalNode } from "antlr4ng"; + + +import { SingleStatementContext } from "./EsqlBaseParser.js"; +import { CompositeQueryContext } from "./EsqlBaseParser.js"; +import { SingleCommandQueryContext } from "./EsqlBaseParser.js"; +import { SourceCommandContext } from "./EsqlBaseParser.js"; +import { ProcessingCommandContext } from "./EsqlBaseParser.js"; +import { WhereCommandContext } from "./EsqlBaseParser.js"; +import { LogicalNotContext } from "./EsqlBaseParser.js"; +import { BooleanDefaultContext } from "./EsqlBaseParser.js"; +import { IsNullContext } from "./EsqlBaseParser.js"; +import { RegexExpressionContext } from "./EsqlBaseParser.js"; +import { LogicalInContext } from "./EsqlBaseParser.js"; +import { LogicalBinaryContext } from "./EsqlBaseParser.js"; +import { RegexBooleanExpressionContext } from "./EsqlBaseParser.js"; +import { ValueExpressionDefaultContext } from "./EsqlBaseParser.js"; +import { ComparisonContext } from "./EsqlBaseParser.js"; +import { OperatorExpressionDefaultContext } from "./EsqlBaseParser.js"; +import { ArithmeticBinaryContext } from "./EsqlBaseParser.js"; +import { ArithmeticUnaryContext } from "./EsqlBaseParser.js"; +import { ConstantDefaultContext } from "./EsqlBaseParser.js"; +import { DereferenceContext } from "./EsqlBaseParser.js"; +import { FunctionContext } from "./EsqlBaseParser.js"; +import { ParenthesizedExpressionContext } from "./EsqlBaseParser.js"; +import { FunctionExpressionContext } from "./EsqlBaseParser.js"; +import { RowCommandContext } from "./EsqlBaseParser.js"; +import { FieldsContext } from "./EsqlBaseParser.js"; +import { FieldContext } from "./EsqlBaseParser.js"; +import { FromCommandContext } from "./EsqlBaseParser.js"; +import { MetadataContext } from "./EsqlBaseParser.js"; +import { EvalCommandContext } from "./EsqlBaseParser.js"; +import { StatsCommandContext } from "./EsqlBaseParser.js"; +import { InlinestatsCommandContext } from "./EsqlBaseParser.js"; +import { GroupingContext } from "./EsqlBaseParser.js"; +import { FromIdentifierContext } from "./EsqlBaseParser.js"; +import { QualifiedNameContext } from "./EsqlBaseParser.js"; +import { QualifiedNamePatternContext } from "./EsqlBaseParser.js"; +import { IdentifierContext } from "./EsqlBaseParser.js"; +import { IdentifierPatternContext } from "./EsqlBaseParser.js"; +import { NullLiteralContext } from "./EsqlBaseParser.js"; +import { QualifiedIntegerLiteralContext } from "./EsqlBaseParser.js"; +import { DecimalLiteralContext } from "./EsqlBaseParser.js"; +import { IntegerLiteralContext } from "./EsqlBaseParser.js"; +import { BooleanLiteralContext } from "./EsqlBaseParser.js"; +import { InputParamContext } from "./EsqlBaseParser.js"; +import { StringLiteralContext } from "./EsqlBaseParser.js"; +import { NumericArrayLiteralContext } from "./EsqlBaseParser.js"; +import { BooleanArrayLiteralContext } from "./EsqlBaseParser.js"; +import { StringArrayLiteralContext } from "./EsqlBaseParser.js"; +import { LimitCommandContext } from "./EsqlBaseParser.js"; +import { SortCommandContext } from "./EsqlBaseParser.js"; +import { OrderExpressionContext } from "./EsqlBaseParser.js"; +import { KeepCommandContext } from "./EsqlBaseParser.js"; +import { DropCommandContext } from "./EsqlBaseParser.js"; +import { RenameCommandContext } from "./EsqlBaseParser.js"; +import { RenameClauseContext } from "./EsqlBaseParser.js"; +import { DissectCommandContext } from "./EsqlBaseParser.js"; +import { GrokCommandContext } from "./EsqlBaseParser.js"; +import { MvExpandCommandContext } from "./EsqlBaseParser.js"; +import { CommandOptionsContext } from "./EsqlBaseParser.js"; +import { CommandOptionContext } from "./EsqlBaseParser.js"; +import { BooleanValueContext } from "./EsqlBaseParser.js"; +import { NumericValueContext } from "./EsqlBaseParser.js"; +import { DecimalValueContext } from "./EsqlBaseParser.js"; +import { IntegerValueContext } from "./EsqlBaseParser.js"; +import { StringContext } from "./EsqlBaseParser.js"; +import { ComparisonOperatorContext } from "./EsqlBaseParser.js"; +import { ExplainCommandContext } from "./EsqlBaseParser.js"; +import { SubqueryExpressionContext } from "./EsqlBaseParser.js"; +import { ShowInfoContext } from "./EsqlBaseParser.js"; +import { ShowFunctionsContext } from "./EsqlBaseParser.js"; +import { EnrichCommandContext } from "./EsqlBaseParser.js"; +import { EnrichWithClauseContext } from "./EsqlBaseParser.js"; + + +/** + * This interface defines a complete listener for a parse tree produced by + * `EsqlBaseParser`. + */ +export class EsqlBaseParserListener implements ParseTreeListener { + /** + * Enter a parse tree produced by `EsqlBaseParser.singleStatement`. + * @param ctx the parse tree + */ + enterSingleStatement?: (ctx: SingleStatementContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.singleStatement`. + * @param ctx the parse tree + */ + exitSingleStatement?: (ctx: SingleStatementContext) => void; + /** + * Enter a parse tree produced by the `compositeQuery` + * labeled alternative in `EsqlBaseParser.query`. + * @param ctx the parse tree + */ + enterCompositeQuery?: (ctx: CompositeQueryContext) => void; + /** + * Exit a parse tree produced by the `compositeQuery` + * labeled alternative in `EsqlBaseParser.query`. + * @param ctx the parse tree + */ + exitCompositeQuery?: (ctx: CompositeQueryContext) => void; + /** + * Enter a parse tree produced by the `singleCommandQuery` + * labeled alternative in `EsqlBaseParser.query`. + * @param ctx the parse tree + */ + enterSingleCommandQuery?: (ctx: SingleCommandQueryContext) => void; + /** + * Exit a parse tree produced by the `singleCommandQuery` + * labeled alternative in `EsqlBaseParser.query`. + * @param ctx the parse tree + */ + exitSingleCommandQuery?: (ctx: SingleCommandQueryContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.sourceCommand`. + * @param ctx the parse tree + */ + enterSourceCommand?: (ctx: SourceCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.sourceCommand`. + * @param ctx the parse tree + */ + exitSourceCommand?: (ctx: SourceCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.processingCommand`. + * @param ctx the parse tree + */ + enterProcessingCommand?: (ctx: ProcessingCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.processingCommand`. + * @param ctx the parse tree + */ + exitProcessingCommand?: (ctx: ProcessingCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.whereCommand`. + * @param ctx the parse tree + */ + enterWhereCommand?: (ctx: WhereCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.whereCommand`. + * @param ctx the parse tree + */ + exitWhereCommand?: (ctx: WhereCommandContext) => void; + /** + * Enter a parse tree produced by the `logicalNot` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + enterLogicalNot?: (ctx: LogicalNotContext) => void; + /** + * Exit a parse tree produced by the `logicalNot` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + exitLogicalNot?: (ctx: LogicalNotContext) => void; + /** + * Enter a parse tree produced by the `booleanDefault` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + enterBooleanDefault?: (ctx: BooleanDefaultContext) => void; + /** + * Exit a parse tree produced by the `booleanDefault` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + exitBooleanDefault?: (ctx: BooleanDefaultContext) => void; + /** + * Enter a parse tree produced by the `isNull` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + enterIsNull?: (ctx: IsNullContext) => void; + /** + * Exit a parse tree produced by the `isNull` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + exitIsNull?: (ctx: IsNullContext) => void; + /** + * Enter a parse tree produced by the `regexExpression` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + enterRegexExpression?: (ctx: RegexExpressionContext) => void; + /** + * Exit a parse tree produced by the `regexExpression` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + exitRegexExpression?: (ctx: RegexExpressionContext) => void; + /** + * Enter a parse tree produced by the `logicalIn` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + enterLogicalIn?: (ctx: LogicalInContext) => void; + /** + * Exit a parse tree produced by the `logicalIn` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + exitLogicalIn?: (ctx: LogicalInContext) => void; + /** + * Enter a parse tree produced by the `logicalBinary` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + enterLogicalBinary?: (ctx: LogicalBinaryContext) => void; + /** + * Exit a parse tree produced by the `logicalBinary` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + */ + exitLogicalBinary?: (ctx: LogicalBinaryContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.regexBooleanExpression`. + * @param ctx the parse tree + */ + enterRegexBooleanExpression?: (ctx: RegexBooleanExpressionContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.regexBooleanExpression`. + * @param ctx the parse tree + */ + exitRegexBooleanExpression?: (ctx: RegexBooleanExpressionContext) => void; + /** + * Enter a parse tree produced by the `valueExpressionDefault` + * labeled alternative in `EsqlBaseParser.valueExpression`. + * @param ctx the parse tree + */ + enterValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => void; + /** + * Exit a parse tree produced by the `valueExpressionDefault` + * labeled alternative in `EsqlBaseParser.valueExpression`. + * @param ctx the parse tree + */ + exitValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => void; + /** + * Enter a parse tree produced by the `comparison` + * labeled alternative in `EsqlBaseParser.valueExpression`. + * @param ctx the parse tree + */ + enterComparison?: (ctx: ComparisonContext) => void; + /** + * Exit a parse tree produced by the `comparison` + * labeled alternative in `EsqlBaseParser.valueExpression`. + * @param ctx the parse tree + */ + exitComparison?: (ctx: ComparisonContext) => void; + /** + * Enter a parse tree produced by the `operatorExpressionDefault` + * labeled alternative in `EsqlBaseParser.operatorExpression`. + * @param ctx the parse tree + */ + enterOperatorExpressionDefault?: (ctx: OperatorExpressionDefaultContext) => void; + /** + * Exit a parse tree produced by the `operatorExpressionDefault` + * labeled alternative in `EsqlBaseParser.operatorExpression`. + * @param ctx the parse tree + */ + exitOperatorExpressionDefault?: (ctx: OperatorExpressionDefaultContext) => void; + /** + * Enter a parse tree produced by the `arithmeticBinary` + * labeled alternative in `EsqlBaseParser.operatorExpression`. + * @param ctx the parse tree + */ + enterArithmeticBinary?: (ctx: ArithmeticBinaryContext) => void; + /** + * Exit a parse tree produced by the `arithmeticBinary` + * labeled alternative in `EsqlBaseParser.operatorExpression`. + * @param ctx the parse tree + */ + exitArithmeticBinary?: (ctx: ArithmeticBinaryContext) => void; + /** + * Enter a parse tree produced by the `arithmeticUnary` + * labeled alternative in `EsqlBaseParser.operatorExpression`. + * @param ctx the parse tree + */ + enterArithmeticUnary?: (ctx: ArithmeticUnaryContext) => void; + /** + * Exit a parse tree produced by the `arithmeticUnary` + * labeled alternative in `EsqlBaseParser.operatorExpression`. + * @param ctx the parse tree + */ + exitArithmeticUnary?: (ctx: ArithmeticUnaryContext) => void; + /** + * Enter a parse tree produced by the `constantDefault` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + */ + enterConstantDefault?: (ctx: ConstantDefaultContext) => void; + /** + * Exit a parse tree produced by the `constantDefault` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + */ + exitConstantDefault?: (ctx: ConstantDefaultContext) => void; + /** + * Enter a parse tree produced by the `dereference` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + */ + enterDereference?: (ctx: DereferenceContext) => void; + /** + * Exit a parse tree produced by the `dereference` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + */ + exitDereference?: (ctx: DereferenceContext) => void; + /** + * Enter a parse tree produced by the `function` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + */ + enterFunction?: (ctx: FunctionContext) => void; + /** + * Exit a parse tree produced by the `function` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + */ + exitFunction?: (ctx: FunctionContext) => void; + /** + * Enter a parse tree produced by the `parenthesizedExpression` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + */ + enterParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + /** + * Exit a parse tree produced by the `parenthesizedExpression` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + */ + exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.functionExpression`. + * @param ctx the parse tree + */ + enterFunctionExpression?: (ctx: FunctionExpressionContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.functionExpression`. + * @param ctx the parse tree + */ + exitFunctionExpression?: (ctx: FunctionExpressionContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.rowCommand`. + * @param ctx the parse tree + */ + enterRowCommand?: (ctx: RowCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.rowCommand`. + * @param ctx the parse tree + */ + exitRowCommand?: (ctx: RowCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.fields`. + * @param ctx the parse tree + */ + enterFields?: (ctx: FieldsContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.fields`. + * @param ctx the parse tree + */ + exitFields?: (ctx: FieldsContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.field`. + * @param ctx the parse tree + */ + enterField?: (ctx: FieldContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.field`. + * @param ctx the parse tree + */ + exitField?: (ctx: FieldContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.fromCommand`. + * @param ctx the parse tree + */ + enterFromCommand?: (ctx: FromCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.fromCommand`. + * @param ctx the parse tree + */ + exitFromCommand?: (ctx: FromCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.metadata`. + * @param ctx the parse tree + */ + enterMetadata?: (ctx: MetadataContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.metadata`. + * @param ctx the parse tree + */ + exitMetadata?: (ctx: MetadataContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.evalCommand`. + * @param ctx the parse tree + */ + enterEvalCommand?: (ctx: EvalCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.evalCommand`. + * @param ctx the parse tree + */ + exitEvalCommand?: (ctx: EvalCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.statsCommand`. + * @param ctx the parse tree + */ + enterStatsCommand?: (ctx: StatsCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.statsCommand`. + * @param ctx the parse tree + */ + exitStatsCommand?: (ctx: StatsCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.inlinestatsCommand`. + * @param ctx the parse tree + */ + enterInlinestatsCommand?: (ctx: InlinestatsCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.inlinestatsCommand`. + * @param ctx the parse tree + */ + exitInlinestatsCommand?: (ctx: InlinestatsCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.grouping`. + * @param ctx the parse tree + */ + enterGrouping?: (ctx: GroupingContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.grouping`. + * @param ctx the parse tree + */ + exitGrouping?: (ctx: GroupingContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.fromIdentifier`. + * @param ctx the parse tree + */ + enterFromIdentifier?: (ctx: FromIdentifierContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.fromIdentifier`. + * @param ctx the parse tree + */ + exitFromIdentifier?: (ctx: FromIdentifierContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.qualifiedName`. + * @param ctx the parse tree + */ + enterQualifiedName?: (ctx: QualifiedNameContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.qualifiedName`. + * @param ctx the parse tree + */ + exitQualifiedName?: (ctx: QualifiedNameContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.qualifiedNamePattern`. + * @param ctx the parse tree + */ + enterQualifiedNamePattern?: (ctx: QualifiedNamePatternContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.qualifiedNamePattern`. + * @param ctx the parse tree + */ + exitQualifiedNamePattern?: (ctx: QualifiedNamePatternContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.identifier`. + * @param ctx the parse tree + */ + enterIdentifier?: (ctx: IdentifierContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.identifier`. + * @param ctx the parse tree + */ + exitIdentifier?: (ctx: IdentifierContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.identifierPattern`. + * @param ctx the parse tree + */ + enterIdentifierPattern?: (ctx: IdentifierPatternContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.identifierPattern`. + * @param ctx the parse tree + */ + exitIdentifierPattern?: (ctx: IdentifierPatternContext) => void; + /** + * Enter a parse tree produced by the `nullLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterNullLiteral?: (ctx: NullLiteralContext) => void; + /** + * Exit a parse tree produced by the `nullLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitNullLiteral?: (ctx: NullLiteralContext) => void; + /** + * Enter a parse tree produced by the `qualifiedIntegerLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterQualifiedIntegerLiteral?: (ctx: QualifiedIntegerLiteralContext) => void; + /** + * Exit a parse tree produced by the `qualifiedIntegerLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitQualifiedIntegerLiteral?: (ctx: QualifiedIntegerLiteralContext) => void; + /** + * Enter a parse tree produced by the `decimalLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterDecimalLiteral?: (ctx: DecimalLiteralContext) => void; + /** + * Exit a parse tree produced by the `decimalLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitDecimalLiteral?: (ctx: DecimalLiteralContext) => void; + /** + * Enter a parse tree produced by the `integerLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterIntegerLiteral?: (ctx: IntegerLiteralContext) => void; + /** + * Exit a parse tree produced by the `integerLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitIntegerLiteral?: (ctx: IntegerLiteralContext) => void; + /** + * Enter a parse tree produced by the `booleanLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterBooleanLiteral?: (ctx: BooleanLiteralContext) => void; + /** + * Exit a parse tree produced by the `booleanLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitBooleanLiteral?: (ctx: BooleanLiteralContext) => void; + /** + * Enter a parse tree produced by the `inputParam` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterInputParam?: (ctx: InputParamContext) => void; + /** + * Exit a parse tree produced by the `inputParam` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitInputParam?: (ctx: InputParamContext) => void; + /** + * Enter a parse tree produced by the `stringLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterStringLiteral?: (ctx: StringLiteralContext) => void; + /** + * Exit a parse tree produced by the `stringLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitStringLiteral?: (ctx: StringLiteralContext) => void; + /** + * Enter a parse tree produced by the `numericArrayLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterNumericArrayLiteral?: (ctx: NumericArrayLiteralContext) => void; + /** + * Exit a parse tree produced by the `numericArrayLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitNumericArrayLiteral?: (ctx: NumericArrayLiteralContext) => void; + /** + * Enter a parse tree produced by the `booleanArrayLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterBooleanArrayLiteral?: (ctx: BooleanArrayLiteralContext) => void; + /** + * Exit a parse tree produced by the `booleanArrayLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitBooleanArrayLiteral?: (ctx: BooleanArrayLiteralContext) => void; + /** + * Enter a parse tree produced by the `stringArrayLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + enterStringArrayLiteral?: (ctx: StringArrayLiteralContext) => void; + /** + * Exit a parse tree produced by the `stringArrayLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + */ + exitStringArrayLiteral?: (ctx: StringArrayLiteralContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.limitCommand`. + * @param ctx the parse tree + */ + enterLimitCommand?: (ctx: LimitCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.limitCommand`. + * @param ctx the parse tree + */ + exitLimitCommand?: (ctx: LimitCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.sortCommand`. + * @param ctx the parse tree + */ + enterSortCommand?: (ctx: SortCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.sortCommand`. + * @param ctx the parse tree + */ + exitSortCommand?: (ctx: SortCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.orderExpression`. + * @param ctx the parse tree + */ + enterOrderExpression?: (ctx: OrderExpressionContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.orderExpression`. + * @param ctx the parse tree + */ + exitOrderExpression?: (ctx: OrderExpressionContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.keepCommand`. + * @param ctx the parse tree + */ + enterKeepCommand?: (ctx: KeepCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.keepCommand`. + * @param ctx the parse tree + */ + exitKeepCommand?: (ctx: KeepCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.dropCommand`. + * @param ctx the parse tree + */ + enterDropCommand?: (ctx: DropCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.dropCommand`. + * @param ctx the parse tree + */ + exitDropCommand?: (ctx: DropCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.renameCommand`. + * @param ctx the parse tree + */ + enterRenameCommand?: (ctx: RenameCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.renameCommand`. + * @param ctx the parse tree + */ + exitRenameCommand?: (ctx: RenameCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.renameClause`. + * @param ctx the parse tree + */ + enterRenameClause?: (ctx: RenameClauseContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.renameClause`. + * @param ctx the parse tree + */ + exitRenameClause?: (ctx: RenameClauseContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.dissectCommand`. + * @param ctx the parse tree + */ + enterDissectCommand?: (ctx: DissectCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.dissectCommand`. + * @param ctx the parse tree + */ + exitDissectCommand?: (ctx: DissectCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.grokCommand`. + * @param ctx the parse tree + */ + enterGrokCommand?: (ctx: GrokCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.grokCommand`. + * @param ctx the parse tree + */ + exitGrokCommand?: (ctx: GrokCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.mvExpandCommand`. + * @param ctx the parse tree + */ + enterMvExpandCommand?: (ctx: MvExpandCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.mvExpandCommand`. + * @param ctx the parse tree + */ + exitMvExpandCommand?: (ctx: MvExpandCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.commandOptions`. + * @param ctx the parse tree + */ + enterCommandOptions?: (ctx: CommandOptionsContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.commandOptions`. + * @param ctx the parse tree + */ + exitCommandOptions?: (ctx: CommandOptionsContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.commandOption`. + * @param ctx the parse tree + */ + enterCommandOption?: (ctx: CommandOptionContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.commandOption`. + * @param ctx the parse tree + */ + exitCommandOption?: (ctx: CommandOptionContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.booleanValue`. + * @param ctx the parse tree + */ + enterBooleanValue?: (ctx: BooleanValueContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.booleanValue`. + * @param ctx the parse tree + */ + exitBooleanValue?: (ctx: BooleanValueContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.numericValue`. + * @param ctx the parse tree + */ + enterNumericValue?: (ctx: NumericValueContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.numericValue`. + * @param ctx the parse tree + */ + exitNumericValue?: (ctx: NumericValueContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.decimalValue`. + * @param ctx the parse tree + */ + enterDecimalValue?: (ctx: DecimalValueContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.decimalValue`. + * @param ctx the parse tree + */ + exitDecimalValue?: (ctx: DecimalValueContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.integerValue`. + * @param ctx the parse tree + */ + enterIntegerValue?: (ctx: IntegerValueContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.integerValue`. + * @param ctx the parse tree + */ + exitIntegerValue?: (ctx: IntegerValueContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.string`. + * @param ctx the parse tree + */ + enterString?: (ctx: StringContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.string`. + * @param ctx the parse tree + */ + exitString?: (ctx: StringContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.comparisonOperator`. + * @param ctx the parse tree + */ + enterComparisonOperator?: (ctx: ComparisonOperatorContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.comparisonOperator`. + * @param ctx the parse tree + */ + exitComparisonOperator?: (ctx: ComparisonOperatorContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.explainCommand`. + * @param ctx the parse tree + */ + enterExplainCommand?: (ctx: ExplainCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.explainCommand`. + * @param ctx the parse tree + */ + exitExplainCommand?: (ctx: ExplainCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.subqueryExpression`. + * @param ctx the parse tree + */ + enterSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.subqueryExpression`. + * @param ctx the parse tree + */ + exitSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; + /** + * Enter a parse tree produced by the `showInfo` + * labeled alternative in `EsqlBaseParser.showCommand`. + * @param ctx the parse tree + */ + enterShowInfo?: (ctx: ShowInfoContext) => void; + /** + * Exit a parse tree produced by the `showInfo` + * labeled alternative in `EsqlBaseParser.showCommand`. + * @param ctx the parse tree + */ + exitShowInfo?: (ctx: ShowInfoContext) => void; + /** + * Enter a parse tree produced by the `showFunctions` + * labeled alternative in `EsqlBaseParser.showCommand`. + * @param ctx the parse tree + */ + enterShowFunctions?: (ctx: ShowFunctionsContext) => void; + /** + * Exit a parse tree produced by the `showFunctions` + * labeled alternative in `EsqlBaseParser.showCommand`. + * @param ctx the parse tree + */ + exitShowFunctions?: (ctx: ShowFunctionsContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.enrichCommand`. + * @param ctx the parse tree + */ + enterEnrichCommand?: (ctx: EnrichCommandContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.enrichCommand`. + * @param ctx the parse tree + */ + exitEnrichCommand?: (ctx: EnrichCommandContext) => void; + /** + * Enter a parse tree produced by `EsqlBaseParser.enrichWithClause`. + * @param ctx the parse tree + */ + enterEnrichWithClause?: (ctx: EnrichWithClauseContext) => void; + /** + * Exit a parse tree produced by `EsqlBaseParser.enrichWithClause`. + * @param ctx the parse tree + */ + exitEnrichWithClause?: (ctx: EnrichWithClauseContext) => void; + + visitTerminal(node: TerminalNode): void {} + visitErrorNode(node: ErrorNode): void {} + enterEveryRule(node: ParserRuleContext): void {} + exitEveryRule(node: ParserRuleContext): void {} +} + diff --git a/esql-lsp/server/src/grammar/generated/EsqlBaseParserVisitor.ts b/esql-lsp/server/src/grammar/generated/EsqlBaseParserVisitor.ts new file mode 100644 index 0000000..a7cca22 --- /dev/null +++ b/esql-lsp/server/src/grammar/generated/EsqlBaseParserVisitor.ts @@ -0,0 +1,543 @@ +// Generated from ./src/grammar/EsqlBaseParser.g4 by ANTLR 4.13.1 + +import { AbstractParseTreeVisitor } from "antlr4ng"; + + +import { SingleStatementContext } from "./EsqlBaseParser.js"; +import { CompositeQueryContext } from "./EsqlBaseParser.js"; +import { SingleCommandQueryContext } from "./EsqlBaseParser.js"; +import { SourceCommandContext } from "./EsqlBaseParser.js"; +import { ProcessingCommandContext } from "./EsqlBaseParser.js"; +import { WhereCommandContext } from "./EsqlBaseParser.js"; +import { LogicalNotContext } from "./EsqlBaseParser.js"; +import { BooleanDefaultContext } from "./EsqlBaseParser.js"; +import { IsNullContext } from "./EsqlBaseParser.js"; +import { RegexExpressionContext } from "./EsqlBaseParser.js"; +import { LogicalInContext } from "./EsqlBaseParser.js"; +import { LogicalBinaryContext } from "./EsqlBaseParser.js"; +import { RegexBooleanExpressionContext } from "./EsqlBaseParser.js"; +import { ValueExpressionDefaultContext } from "./EsqlBaseParser.js"; +import { ComparisonContext } from "./EsqlBaseParser.js"; +import { OperatorExpressionDefaultContext } from "./EsqlBaseParser.js"; +import { ArithmeticBinaryContext } from "./EsqlBaseParser.js"; +import { ArithmeticUnaryContext } from "./EsqlBaseParser.js"; +import { ConstantDefaultContext } from "./EsqlBaseParser.js"; +import { DereferenceContext } from "./EsqlBaseParser.js"; +import { FunctionContext } from "./EsqlBaseParser.js"; +import { ParenthesizedExpressionContext } from "./EsqlBaseParser.js"; +import { FunctionExpressionContext } from "./EsqlBaseParser.js"; +import { RowCommandContext } from "./EsqlBaseParser.js"; +import { FieldsContext } from "./EsqlBaseParser.js"; +import { FieldContext } from "./EsqlBaseParser.js"; +import { FromCommandContext } from "./EsqlBaseParser.js"; +import { MetadataContext } from "./EsqlBaseParser.js"; +import { EvalCommandContext } from "./EsqlBaseParser.js"; +import { StatsCommandContext } from "./EsqlBaseParser.js"; +import { InlinestatsCommandContext } from "./EsqlBaseParser.js"; +import { GroupingContext } from "./EsqlBaseParser.js"; +import { FromIdentifierContext } from "./EsqlBaseParser.js"; +import { QualifiedNameContext } from "./EsqlBaseParser.js"; +import { QualifiedNamePatternContext } from "./EsqlBaseParser.js"; +import { IdentifierContext } from "./EsqlBaseParser.js"; +import { IdentifierPatternContext } from "./EsqlBaseParser.js"; +import { NullLiteralContext } from "./EsqlBaseParser.js"; +import { QualifiedIntegerLiteralContext } from "./EsqlBaseParser.js"; +import { DecimalLiteralContext } from "./EsqlBaseParser.js"; +import { IntegerLiteralContext } from "./EsqlBaseParser.js"; +import { BooleanLiteralContext } from "./EsqlBaseParser.js"; +import { InputParamContext } from "./EsqlBaseParser.js"; +import { StringLiteralContext } from "./EsqlBaseParser.js"; +import { NumericArrayLiteralContext } from "./EsqlBaseParser.js"; +import { BooleanArrayLiteralContext } from "./EsqlBaseParser.js"; +import { StringArrayLiteralContext } from "./EsqlBaseParser.js"; +import { LimitCommandContext } from "./EsqlBaseParser.js"; +import { SortCommandContext } from "./EsqlBaseParser.js"; +import { OrderExpressionContext } from "./EsqlBaseParser.js"; +import { KeepCommandContext } from "./EsqlBaseParser.js"; +import { DropCommandContext } from "./EsqlBaseParser.js"; +import { RenameCommandContext } from "./EsqlBaseParser.js"; +import { RenameClauseContext } from "./EsqlBaseParser.js"; +import { DissectCommandContext } from "./EsqlBaseParser.js"; +import { GrokCommandContext } from "./EsqlBaseParser.js"; +import { MvExpandCommandContext } from "./EsqlBaseParser.js"; +import { CommandOptionsContext } from "./EsqlBaseParser.js"; +import { CommandOptionContext } from "./EsqlBaseParser.js"; +import { BooleanValueContext } from "./EsqlBaseParser.js"; +import { NumericValueContext } from "./EsqlBaseParser.js"; +import { DecimalValueContext } from "./EsqlBaseParser.js"; +import { IntegerValueContext } from "./EsqlBaseParser.js"; +import { StringContext } from "./EsqlBaseParser.js"; +import { ComparisonOperatorContext } from "./EsqlBaseParser.js"; +import { ExplainCommandContext } from "./EsqlBaseParser.js"; +import { SubqueryExpressionContext } from "./EsqlBaseParser.js"; +import { ShowInfoContext } from "./EsqlBaseParser.js"; +import { ShowFunctionsContext } from "./EsqlBaseParser.js"; +import { EnrichCommandContext } from "./EsqlBaseParser.js"; +import { EnrichWithClauseContext } from "./EsqlBaseParser.js"; + + +/** + * This interface defines a complete generic visitor for a parse tree produced + * by `EsqlBaseParser`. + * + * @param The return type of the visit operation. Use `void` for + * operations with no return type. + */ +export class EsqlBaseParserVisitor extends AbstractParseTreeVisitor { + /** + * Visit a parse tree produced by `EsqlBaseParser.singleStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSingleStatement?: (ctx: SingleStatementContext) => Result; + /** + * Visit a parse tree produced by the `compositeQuery` + * labeled alternative in `EsqlBaseParser.query`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCompositeQuery?: (ctx: CompositeQueryContext) => Result; + /** + * Visit a parse tree produced by the `singleCommandQuery` + * labeled alternative in `EsqlBaseParser.query`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSingleCommandQuery?: (ctx: SingleCommandQueryContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.sourceCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSourceCommand?: (ctx: SourceCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.processingCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitProcessingCommand?: (ctx: ProcessingCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.whereCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitWhereCommand?: (ctx: WhereCommandContext) => Result; + /** + * Visit a parse tree produced by the `logicalNot` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLogicalNot?: (ctx: LogicalNotContext) => Result; + /** + * Visit a parse tree produced by the `booleanDefault` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBooleanDefault?: (ctx: BooleanDefaultContext) => Result; + /** + * Visit a parse tree produced by the `isNull` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIsNull?: (ctx: IsNullContext) => Result; + /** + * Visit a parse tree produced by the `regexExpression` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRegexExpression?: (ctx: RegexExpressionContext) => Result; + /** + * Visit a parse tree produced by the `logicalIn` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLogicalIn?: (ctx: LogicalInContext) => Result; + /** + * Visit a parse tree produced by the `logicalBinary` + * labeled alternative in `EsqlBaseParser.booleanExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLogicalBinary?: (ctx: LogicalBinaryContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.regexBooleanExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRegexBooleanExpression?: (ctx: RegexBooleanExpressionContext) => Result; + /** + * Visit a parse tree produced by the `valueExpressionDefault` + * labeled alternative in `EsqlBaseParser.valueExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => Result; + /** + * Visit a parse tree produced by the `comparison` + * labeled alternative in `EsqlBaseParser.valueExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitComparison?: (ctx: ComparisonContext) => Result; + /** + * Visit a parse tree produced by the `operatorExpressionDefault` + * labeled alternative in `EsqlBaseParser.operatorExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitOperatorExpressionDefault?: (ctx: OperatorExpressionDefaultContext) => Result; + /** + * Visit a parse tree produced by the `arithmeticBinary` + * labeled alternative in `EsqlBaseParser.operatorExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitArithmeticBinary?: (ctx: ArithmeticBinaryContext) => Result; + /** + * Visit a parse tree produced by the `arithmeticUnary` + * labeled alternative in `EsqlBaseParser.operatorExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitArithmeticUnary?: (ctx: ArithmeticUnaryContext) => Result; + /** + * Visit a parse tree produced by the `constantDefault` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitConstantDefault?: (ctx: ConstantDefaultContext) => Result; + /** + * Visit a parse tree produced by the `dereference` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDereference?: (ctx: DereferenceContext) => Result; + /** + * Visit a parse tree produced by the `function` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunction?: (ctx: FunctionContext) => Result; + /** + * Visit a parse tree produced by the `parenthesizedExpression` + * labeled alternative in `EsqlBaseParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.functionExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionExpression?: (ctx: FunctionExpressionContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.rowCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRowCommand?: (ctx: RowCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.fields`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFields?: (ctx: FieldsContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.field`. + * @param ctx the parse tree + * @return the visitor result + */ + visitField?: (ctx: FieldContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.fromCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFromCommand?: (ctx: FromCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.metadata`. + * @param ctx the parse tree + * @return the visitor result + */ + visitMetadata?: (ctx: MetadataContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.evalCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitEvalCommand?: (ctx: EvalCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.statsCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStatsCommand?: (ctx: StatsCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.inlinestatsCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitInlinestatsCommand?: (ctx: InlinestatsCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.grouping`. + * @param ctx the parse tree + * @return the visitor result + */ + visitGrouping?: (ctx: GroupingContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.fromIdentifier`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFromIdentifier?: (ctx: FromIdentifierContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.qualifiedName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitQualifiedName?: (ctx: QualifiedNameContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.qualifiedNamePattern`. + * @param ctx the parse tree + * @return the visitor result + */ + visitQualifiedNamePattern?: (ctx: QualifiedNamePatternContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.identifier`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIdentifier?: (ctx: IdentifierContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.identifierPattern`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIdentifierPattern?: (ctx: IdentifierPatternContext) => Result; + /** + * Visit a parse tree produced by the `nullLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitNullLiteral?: (ctx: NullLiteralContext) => Result; + /** + * Visit a parse tree produced by the `qualifiedIntegerLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitQualifiedIntegerLiteral?: (ctx: QualifiedIntegerLiteralContext) => Result; + /** + * Visit a parse tree produced by the `decimalLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDecimalLiteral?: (ctx: DecimalLiteralContext) => Result; + /** + * Visit a parse tree produced by the `integerLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIntegerLiteral?: (ctx: IntegerLiteralContext) => Result; + /** + * Visit a parse tree produced by the `booleanLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBooleanLiteral?: (ctx: BooleanLiteralContext) => Result; + /** + * Visit a parse tree produced by the `inputParam` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitInputParam?: (ctx: InputParamContext) => Result; + /** + * Visit a parse tree produced by the `stringLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStringLiteral?: (ctx: StringLiteralContext) => Result; + /** + * Visit a parse tree produced by the `numericArrayLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitNumericArrayLiteral?: (ctx: NumericArrayLiteralContext) => Result; + /** + * Visit a parse tree produced by the `booleanArrayLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBooleanArrayLiteral?: (ctx: BooleanArrayLiteralContext) => Result; + /** + * Visit a parse tree produced by the `stringArrayLiteral` + * labeled alternative in `EsqlBaseParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStringArrayLiteral?: (ctx: StringArrayLiteralContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.limitCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLimitCommand?: (ctx: LimitCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.sortCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSortCommand?: (ctx: SortCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.orderExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitOrderExpression?: (ctx: OrderExpressionContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.keepCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitKeepCommand?: (ctx: KeepCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.dropCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDropCommand?: (ctx: DropCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.renameCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRenameCommand?: (ctx: RenameCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.renameClause`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRenameClause?: (ctx: RenameClauseContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.dissectCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDissectCommand?: (ctx: DissectCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.grokCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitGrokCommand?: (ctx: GrokCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.mvExpandCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitMvExpandCommand?: (ctx: MvExpandCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.commandOptions`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCommandOptions?: (ctx: CommandOptionsContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.commandOption`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCommandOption?: (ctx: CommandOptionContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.booleanValue`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBooleanValue?: (ctx: BooleanValueContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.numericValue`. + * @param ctx the parse tree + * @return the visitor result + */ + visitNumericValue?: (ctx: NumericValueContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.decimalValue`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDecimalValue?: (ctx: DecimalValueContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.integerValue`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIntegerValue?: (ctx: IntegerValueContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.string`. + * @param ctx the parse tree + * @return the visitor result + */ + visitString?: (ctx: StringContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.comparisonOperator`. + * @param ctx the parse tree + * @return the visitor result + */ + visitComparisonOperator?: (ctx: ComparisonOperatorContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.explainCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitExplainCommand?: (ctx: ExplainCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.subqueryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSubqueryExpression?: (ctx: SubqueryExpressionContext) => Result; + /** + * Visit a parse tree produced by the `showInfo` + * labeled alternative in `EsqlBaseParser.showCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitShowInfo?: (ctx: ShowInfoContext) => Result; + /** + * Visit a parse tree produced by the `showFunctions` + * labeled alternative in `EsqlBaseParser.showCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitShowFunctions?: (ctx: ShowFunctionsContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.enrichCommand`. + * @param ctx the parse tree + * @return the visitor result + */ + visitEnrichCommand?: (ctx: EnrichCommandContext) => Result; + /** + * Visit a parse tree produced by `EsqlBaseParser.enrichWithClause`. + * @param ctx the parse tree + * @return the visitor result + */ + visitEnrichWithClause?: (ctx: EnrichWithClauseContext) => Result; +} + diff --git a/esql-lsp/server/src/server.ts b/esql-lsp/server/src/server.ts new file mode 100644 index 0000000..d140850 --- /dev/null +++ b/esql-lsp/server/src/server.ts @@ -0,0 +1,230 @@ +import { + type InitializeParams, + type InitializeResult, + type TextDocumentPositionParams, + CompletionItem, + CompletionItemKind, + createConnection, + DidChangeConfigurationNotification, + ProposedFeatures, + TextDocuments, + TextDocumentSyncKind, +} from 'vscode-languageserver/node.js'; + +import { TextDocument } from 'vscode-languageserver-textdocument'; + +import { CharStream, CommonTokenStream, ConsoleErrorListener } from 'antlr4ng'; +import { EsqlBaseLexer } from './grammar/generated/EsqlBaseLexer.js'; +import { EsqlBaseParser } from './grammar/generated/EsqlBaseParser.js'; +import * as c3 from 'antlr4-c3'; + +import { computeCaretTokenIndex, CaretPosition } from './caret.js'; + +const connection = createConnection(ProposedFeatures.all); +const documents: TextDocuments = new TextDocuments(TextDocument); + +let hasConfigurationCapability = false; +let hasWorkspaceFolderCapability = false; +let hasDiagnosticRelatedInformationCapability = false; + +connection.onInitialize((params: InitializeParams) => { + const c = params.capabilities; + connection.console.log(c.toString()); + + // check client capabilities first + hasConfigurationCapability = !!(c.workspace && !!c.workspace.configuration); + hasWorkspaceFolderCapability = !!(c.workspace && !!c.workspace.workspaceFolders); + hasDiagnosticRelatedInformationCapability = !!( + c.textDocument && + c.textDocument.publishDiagnostics && + c.textDocument.publishDiagnostics.relatedInformation + ); + + const result: InitializeResult = { + capabilities: { + textDocumentSync: TextDocumentSyncKind.Incremental, + completionProvider: { + resolveProvider: true + } + } + }; + if (hasWorkspaceFolderCapability) { + result.capabilities.workspace = { + workspaceFolders: { + supported: true + } + }; + } + return result; +}); + +connection.onInitialized(() => { + if (hasConfigurationCapability) { + connection.client.register(DidChangeConfigurationNotification.type, undefined); + } + if (hasWorkspaceFolderCapability) { + connection.workspace.onDidChangeWorkspaceFolders(_event => { + connection.console.log('Workspace folder change event received.'); + }); + } +}); + +interface Settings { + maxNumberOfProblems: number; +} + +const defaultSettings: Settings = { maxNumberOfProblems: 10 }; +let globalSettings: Settings = defaultSettings; +const documentSettings: Map> = new Map(); + +connection.onDidChangeConfiguration(change => { + if (hasConfigurationCapability) { + documentSettings.clear(); + } else { + globalSettings = ((change.settings.languageServerExample || defaultSettings)); + } +}); + +function getDocumentSettings(resource: string): Thenable { + if (!hasConfigurationCapability) { + return Promise.resolve(globalSettings); + } + let result = documentSettings.get(resource); + if (!result) { + result = connection.workspace.getConfiguration({ + scopeUri: resource, + section: 'ESQL-lsp' + }); + documentSettings.set(resource, result); + } + return result; +} + +documents.onDidClose(e => { + documentSettings.delete(e.document.uri); +}); + +// TODO: implement document validation on change +// documents.onDidChangeContent(change => {}); + +connection.onCompletion( + (params: TextDocumentPositionParams): CompletionItem[] => { + const textDocument = documents.get(params.textDocument.uri); + // if there is no document, nothing to complete + if (textDocument === undefined) { + return []; + } + + // NOTE: that kibana plugin uses plain antlr4 + // NOTE: Switched from antlr4 to https://github.com/mike-lischke/antlr4ng + // to benefit from https://github.com/mike-lischke/antlr4-c3 + + connection.console.log(`doc: ${textDocument.languageId}`); + connection.console.log(`doc: ${JSON.stringify(params.position)}`); + + // get text and init the chart stream, input for lexer + // If you pass a range to getText it should include the entire ES|QL + // expression starting from the source commands. Otherwise completion + // get confused because your query is not syntactically valid anymore. + // TODO: not sure a range is needed here, I would suspect so but I've + // observed no differences in completions + const input = textDocument.getText(); + connection.console.log(`text: ${input}`); + const chars = new CharStream(input); + + let lexer = new EsqlBaseLexer(chars); + let tokenStream = new CommonTokenStream(lexer); + + let parser = new EsqlBaseParser(tokenStream); + // override error listener, we don't want the parser to really fail + // EsqlBaseParser is a simulator, should not hard fail anyway + // TODO: change with listener providing feedback that can be acted upon? + let errorListener = new ConsoleErrorListener(); + parser.addErrorListener(errorListener); + // we should start parsing from somewhere, start from FROM clause + let tree = parser.fromCommand(); + + // init completion engine. Uses parser information to start + let core = new c3.CodeCompletionCore(parser); + core.showDebugOutput = true + core.showResult = true + + // TODO: complete the list with all undesired tokens + core.ignoredTokens = new Set([ + EsqlBaseParser.OPENING_BRACKET, EsqlBaseParser.CLOSING_BRACKET, + EsqlBaseParser.EOF, + ]); + + // If rules are non included here they will **never** be suggested. + // TODO: complete the list of interesting rules + // FIXME: rules seems to be ignored. + core.preferredRules = new Set([ + EsqlBaseParser.RULE_limitCommand, + EsqlBaseParser.RULE_whereCommand, + ]) + + // compute caret position to calculate token index, needed to properly compute + // the next possible tokens + let cp: CaretPosition = { + line: params.position.line + 1, + column: params.position.character - 1 + }; + let index = computeCaretTokenIndex(tree, cp); + if (index === undefined) { + connection.console.log("undefined index") + index = params.position.character - 1; + } + // this is the **caret** position index, not a char index. The difference is that + // follows semantic boundaries for words as computed by the parser. + // See https://github.com/mike-lischke/antlr4-c3#selecting-the-right-caret-position + connection.console.log(`caret index: ${index}`) + let candidates = core.collectCandidates(index); + + // we need to output a list of CompletionItem + let keywords: CompletionItem[] = []; + candidates.tokens.forEach((_, c) => { + let l = null + l = parser.vocabulary.getSymbolicName(c)?.toLowerCase() + if (l) { + // data is used in onCompletionResolve to provider further info + // FIXME: c repeats between tokens and rules, fix it to be unique + keywords.push({ label: l, data: c, kind: CompletionItemKind.Keyword }); + } + }) + + let rules: CompletionItem[] = []; + candidates.rules.forEach((_, c) => { + connection.console.log(`rule: ${c}`); + switch (c) { + case EsqlBaseParser.RULE_limitCommand: + // FIXME: c repeats between tokens and rules, fix it to be unique + keywords.push({ label: '"limit"', data: c, kind: CompletionItemKind.Keyword }); + break; + case EsqlBaseParser.RULE_whereCommand: + // FIXME: c repeats between tokens and rules, fix it to be unique + keywords.push({ label: '"where"', data: c, kind: CompletionItemKind.Keyword }); + break; + } + }) + + + return [...keywords, ...rules]; + } +); + +// Provide additional details on completion items. +connection.onCompletionResolve((item: CompletionItem): CompletionItem => { + connection.console.log(`data: ${item.data}`) + + switch (item.data) { + case 6: // FROM + item.detail = "FROM index_pattern [METADATA fields]"; + item.documentation = "The FROM source command returns a table with data from a data stream, index, or alias. Each row in the resulting table represents a document. Each column corresponds to a field, and can be accessed by the name of that field." + break; + } + + return item; +}); + +documents.listen(connection); +connection.listen(); diff --git a/esql-lsp/server/tsconfig.json b/esql-lsp/server/tsconfig.json new file mode 100644 index 0000000..b15603a --- /dev/null +++ b/esql-lsp/server/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es2020", + "lib": ["es2020"], + "module": "nodenext", + "sourceMap": true, + "strict": true, + "outDir": "out", + "rootDir": "src" + }, + "include": ["src"], + "exclude": ["node_modules", ".vscode-test"] +} diff --git a/esql-lsp/tsconfig.json b/esql-lsp/tsconfig.json new file mode 100644 index 0000000..dfdeee4 --- /dev/null +++ b/esql-lsp/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2020", + "lib": ["es2020"], + "outDir": "out", + "rootDir": "src", + "sourceMap": true + }, + "include": [ + "src" + ], + "exclude": [ + "node_modules", + ".vscode-test" + ], + "references": [ + { "path": "./client" }, + { "path": "./server" } + ] +} \ No newline at end of file